Add timeout to fetching posts

This commit is contained in:
Fabian Stamm
2023-04-26 19:48:27 +02:00
parent 1f4f8003f2
commit 7647399159
3 changed files with 96 additions and 5 deletions

78
src/import_old.ts Normal file
View File

@ -0,0 +1,78 @@
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);
}
}
})