From ee8223c2006ad31fc746824b495125b321da4bf8 Mon Sep 17 00:00:00 2001 From: Reto Brunner Date: Sat, 27 Aug 2022 14:55:35 +0200 Subject: [PATCH] sqlite: use serialize_fetchall in getMessages --- server/plugins/messageStorage/sqlite.ts | 39 ++++++++++--------------- 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/server/plugins/messageStorage/sqlite.ts b/server/plugins/messageStorage/sqlite.ts index 1a9222dd..2e2d8c9e 100644 --- a/server/plugins/messageStorage/sqlite.ts +++ b/server/plugins/messageStorage/sqlite.ts @@ -168,7 +168,7 @@ class SqliteMessageStorage implements ISqliteMessageStorage { * @param network Network - Network object where the channel is * @param channel Channel - Channel object for which to load messages for */ - getMessages(network: Network, channel: Channel) { + async getMessages(network: Network, channel: Channel): Promise { if (!this.isEnabled || Config.values.maxHistory === 0) { return Promise.resolve([]); } @@ -176,32 +176,23 @@ class SqliteMessageStorage implements ISqliteMessageStorage { // If unlimited history is specified, load 100k messages const limit = Config.values.maxHistory < 0 ? 100000 : Config.values.maxHistory; - return new Promise((resolve, reject) => { - this.database.serialize(() => - this.database.all( - "SELECT msg, type, time FROM messages WHERE network = ? AND channel = ? ORDER BY time DESC LIMIT ?", - [network.uuid, channel.name.toLowerCase(), limit], - (err, rows) => { - if (err) { - return reject(err); - } + const rows = await this.serialize_fetchall( + "SELECT msg, type, time FROM messages WHERE network = ? AND channel = ? ORDER BY time DESC LIMIT ?", + network.uuid, + channel.name.toLowerCase(), + limit + ); - resolve( - rows.reverse().map((row) => { - const msg = JSON.parse(row.msg); - msg.time = row.time; - msg.type = row.type; + return rows.reverse().map((row: any) => { + const msg = JSON.parse(row.msg); + msg.time = row.time; + msg.type = row.type; - const newMsg = new Msg(msg); - newMsg.id = this.client.idMsg++; + const newMsg = new Msg(msg); + newMsg.id = this.client.idMsg++; - return newMsg; - }) - ); - } - ) - ); - }) as Promise; + return newMsg; + }) as Message[]; } search(query: SearchQuery): Promise {