forked from Outils-PeerTube/listener-rss-aggregator
Update listener-rss package to 0.0.3
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
import EventEmitter from "events";
|
||||
|
||||
import { ListenerRss, ListenerRSSInfos } from "listener-rss";
|
||||
import { ListenerRss } from "listener-rss";
|
||||
import { SqliteTools } from "./sqlite-tools";
|
||||
|
||||
/**
|
||||
@ -54,22 +54,37 @@ export class ListenerRssAggregator extends EventEmitter {
|
||||
*/
|
||||
private static async extractConfig(
|
||||
sqliteDb: SqliteTools
|
||||
): Promise<ListenerRSSInfos[]> {
|
||||
): Promise<ListenerRss.Config[]> {
|
||||
await sqliteDb.ensureTableExists();
|
||||
return await sqliteDb.fetchAll();
|
||||
}
|
||||
|
||||
async getAllConfigs(): Promise<ListenerRSSInfos[]> {
|
||||
async getAllConfigs(): Promise<ListenerRss.Config[]> {
|
||||
return await ListenerRssAggregator.extractConfig(this.sqliteDb);
|
||||
}
|
||||
|
||||
private addNewListener(info: ListenerRSSInfos): ListenerRss {
|
||||
private addNewListener(info: ListenerRss.Config): ListenerRss {
|
||||
const newListener = new ListenerRss(info);
|
||||
this.listenerMap.set(newListener.address, newListener);
|
||||
|
||||
newListener.on("update", (obj) => this.emit("update", obj));
|
||||
newListener.on("newEntries", (obj) => this.emit("newEntries", obj));
|
||||
newListener.on("error", (err) => this.emit("error", err));
|
||||
newListener.on("update", (obj) =>
|
||||
this.emit("update", {
|
||||
...obj,
|
||||
...{ addressListener: newListener.address },
|
||||
})
|
||||
);
|
||||
newListener.on("newEntries", (obj) =>
|
||||
this.emit("newEntries", {
|
||||
...obj,
|
||||
...{ addressListener: newListener.address },
|
||||
})
|
||||
);
|
||||
newListener.on("error", (err) =>
|
||||
this.emit("error", {
|
||||
...err,
|
||||
...{ addressListener: newListener.address },
|
||||
})
|
||||
);
|
||||
|
||||
return newListener;
|
||||
}
|
||||
@ -87,7 +102,7 @@ export class ListenerRssAggregator extends EventEmitter {
|
||||
this.listenerMap.delete(adr);
|
||||
}
|
||||
|
||||
async registerListener(info: ListenerRSSInfos) {
|
||||
async registerListener(info: ListenerRss.Config) {
|
||||
if (this.listenerMap.has(info.address)) return;
|
||||
|
||||
const listener = this.addNewListener(info);
|
||||
@ -101,19 +116,19 @@ export class ListenerRssAggregator extends EventEmitter {
|
||||
await this.sqliteDb.deleteListener(adr);
|
||||
}
|
||||
|
||||
async saveOverride(expectedConfig: ListenerRSSInfos[]) {
|
||||
async saveOverride(expectedConfig: ListenerRss.Config[]) {
|
||||
const actualConfig = await this.getAllConfigs();
|
||||
|
||||
for (const newItem of expectedConfig.filter(
|
||||
(item) => !actualConfig.includes(item)
|
||||
)) {
|
||||
this.registerListener(newItem);
|
||||
await this.registerListener(newItem);
|
||||
}
|
||||
|
||||
for (const oldItem of actualConfig.filter(
|
||||
(item) => !expectedConfig.includes(item)
|
||||
)) {
|
||||
this.unregisterListener(oldItem.address);
|
||||
await this.unregisterListener(oldItem.address);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { ListenerRSSInfos } from "listener-rss";
|
||||
import { ListenerRss } from "listener-rss";
|
||||
|
||||
import connect, { DatabaseConnection, sql } from "@databases/sqlite";
|
||||
|
||||
@ -36,7 +36,7 @@ export class SqliteTools {
|
||||
});
|
||||
}
|
||||
|
||||
async fetchAll(): Promise<ListenerRSSInfos[]> {
|
||||
async fetchAll(): Promise<ListenerRss.Config[]> {
|
||||
const rows = await this.withDB(async (db) => {
|
||||
let req = sql`SELECT *
|
||||
FROM listeners`;
|
||||
@ -51,7 +51,7 @@ export class SqliteTools {
|
||||
}));
|
||||
}
|
||||
|
||||
async insertListener(listener: ListenerRSSInfos) {
|
||||
async insertListener(listener: ListenerRss.Config) {
|
||||
await this.withDB(async (db) => {
|
||||
let req = sql`INSERT INTO listeners (address, timeloop, customfields, last_entries_links)
|
||||
VALUES (${listener.address},
|
||||
@ -70,7 +70,7 @@ export class SqliteTools {
|
||||
});
|
||||
}
|
||||
|
||||
async updateAll(listeners: ListenerRSSInfos[]) {
|
||||
async updateAll(listeners: ListenerRss.Config[]) {
|
||||
await this.withDB(async (db) => {
|
||||
await db.tx(async (transaction) => {
|
||||
for (const listener of listeners) {
|
||||
|
Reference in New Issue
Block a user