78 lines
1.8 KiB
TypeScript
78 lines
1.8 KiB
TypeScript
import { readFileSync } from "fs";
|
|
import { AppDataSource, appDataSourceReady } from "./data_source.js";
|
|
import { Feed } from "./models/Feed.js";
|
|
import { Post } from "./models/Post.js";
|
|
import { User } from "./models/User.js";
|
|
|
|
|
|
|
|
interface IOld {
|
|
feeds: {
|
|
url: string;
|
|
oldEntries: string[];
|
|
subscriber: number[];
|
|
}[];
|
|
}
|
|
|
|
|
|
appDataSourceReady.then(async () => {
|
|
let old = JSON.parse(readFileSync("./old.json", "utf-8")) as IOld;
|
|
|
|
for (let feed of old.feeds) {
|
|
let f = await AppDataSource.manager.findOne(Feed, {
|
|
where: {
|
|
url: feed.url
|
|
}
|
|
})
|
|
|
|
if (!f) {
|
|
f = AppDataSource.manager.create(Feed, {
|
|
url: feed.url,
|
|
lastCheck: new Date(0),
|
|
oldEntries: [],
|
|
subscriber: [],
|
|
})
|
|
|
|
await AppDataSource.manager.save(f);
|
|
}
|
|
|
|
for (let oldEntry of feed.oldEntries) {
|
|
let existing = await AppDataSource.manager.findOne(Post, {
|
|
where: {
|
|
feed: f,
|
|
hash: oldEntry
|
|
}
|
|
})
|
|
if (!existing) {
|
|
|
|
let post = AppDataSource.manager.create(Post, {
|
|
feed: f,
|
|
hash: oldEntry
|
|
})
|
|
|
|
await AppDataSource.manager.save(post);
|
|
}
|
|
}
|
|
|
|
for (let subscriber of feed.subscriber) {
|
|
let user = await AppDataSource.manager.findOne(User, {
|
|
where: {
|
|
chatid: subscriber
|
|
},
|
|
relations: {
|
|
feeds: true
|
|
}
|
|
});
|
|
|
|
if (!user) {
|
|
user = AppDataSource.manager.create(User, {
|
|
chatid: subscriber,
|
|
feeds: [f],
|
|
})
|
|
} else {
|
|
user.feeds.push(f)
|
|
}
|
|
await AppDataSource.manager.save(user);
|
|
}
|
|
}
|
|
}) |