Add timeout to fetching posts
This commit is contained in:
78
src/import_old.ts
Normal file
78
src/import_old.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
})
|
Reference in New Issue
Block a user