Update listener-rss package to 0.0.3

This commit is contained in:
Amaury
2021-07-06 15:14:43 +02:00
parent b4e04b8f21
commit 14b2df7bdc
6 changed files with 58 additions and 43 deletions

View File

@ -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);
}
}

View File

@ -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) {