Skip to content

Commit dc561da

Browse files
committed
fix: Use rowid instead of message_id for FTS5
1 parent 178584b commit dc561da

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

src/abeille.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ async function main() {
4747

4848
// Login to Discord
4949
await client.login(TOKEN);
50+
logger.info("Client logged in successfully.");
5051
} catch (error) {
5152
logger.error("Fatal error during startup: %o", error);
5253
process.exit(1);

src/commands/admin/save.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,10 @@ export async function saveMessagesForGuild(guild: Guild, since?: string, interac
175175
cleanOldChannels(guildId, channelsIds);
176176
logger.info("Cleaned old channels in guild %s", guildId);
177177

178+
logger.info("Optimizing database for guild %s...", guildId);
178179
initializeMessageDays(guildId);
179180
await optimizeDatabase(guildId);
181+
logger.info("Optimized database for guild %s.", guildId);
180182

181183
if (progressMessage && interaction) {
182184
await progressMessage.edit({

src/database/bee-database.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export function getTrend(
7979
filtered_messages AS (
8080
SELECT m.*, DATE(m.timestamp) AS message_date
8181
FROM message m
82-
JOIN matched ON m.message_id = matched.rowid
82+
JOIN matched ON m.rowid = matched.rowid
8383
)
8484
SELECT fm.message_date AS date,
8585
COUNT(*) / CAST(md.count AS REAL) AS messages
@@ -114,7 +114,7 @@ export function getRank(guildId: string, expression: string): RankResult[] {
114114
SELECT IF (i.real_author_id IS NULL, m.author_id, CAST(i.real_author_id AS TEXT)) as author_id,
115115
COUNT(*) AS count
116116
FROM matched
117-
JOIN message AS m ON m.message_id = matched.rowid
117+
JOIN message AS m ON m.rowid = matched.rowid
118118
LEFT JOIN "identity" i ON m.author_id = i.author_id
119119
GROUP BY m.author_id
120120
ORDER BY count DESC;
@@ -326,11 +326,12 @@ export async function rebuildIndexes(guildId: string): Promise<void> {
326326
const db = getDatabaseForGuild(guildId);
327327

328328
// Drop and recreate the FTS5 index
329+
// TODO: Should we use https://sqlite.org/fts5.html#the_rebuild_command instead?
329330
db.exec(`
330331
DROP TABLE IF EXISTS messageindex;
331-
CREATE VIRTUAL TABLE messageindex USING fts5(content, content="message", content_rowid="message_id", tokenize="trigram");
332+
CREATE VIRTUAL TABLE messageindex USING fts5(content, content="message", tokenize="trigram");
332333
INSERT INTO messageindex(rowid, content)
333-
SELECT message_id, content FROM message WHERE content IS NOT NULL;
334+
SELECT rowid, content FROM message WHERE content IS NOT NULL;
334335
`);
335336

336337
await optimizeDatabase(guildId);
@@ -451,16 +452,16 @@ function initDatabase(db: Database) {
451452
count INTEGER NOT NULL
452453
);
453454
454-
CREATE VIRTUAL TABLE IF NOT EXISTS "messageindex" USING fts5 ("content", content="message", content_rowid="message_id", tokenize="trigram");
455+
CREATE VIRTUAL TABLE IF NOT EXISTS "messageindex" USING fts5 ("content", content="message", tokenize="trigram");
455456
`);
456457

457458
db.exec(
458-
`CREATE TRIGGER IF NOT EXISTS message_ad AFTER DELETE ON message BEGIN INSERT INTO messageindex(messageindex, rowid, content) VALUES('delete', old.message_id, old.content); END;`
459+
`CREATE TRIGGER IF NOT EXISTS message_ad AFTER DELETE ON message BEGIN INSERT INTO messageindex(messageindex, rowid, content) VALUES('delete', old.rowid, old.content); END;`
459460
);
460461
db.exec(
461-
`CREATE TRIGGER IF NOT EXISTS message_ai AFTER INSERT ON message BEGIN INSERT INTO messageindex(rowid, content) VALUES (new.message_id, new.content); END;`
462+
`CREATE TRIGGER IF NOT EXISTS message_ai AFTER INSERT ON message BEGIN INSERT INTO messageindex(rowid, content) VALUES (new.rowid, new.content); END;`
462463
);
463464
db.exec(
464-
`CREATE TRIGGER IF NOT EXISTS message_au AFTER UPDATE ON message BEGIN INSERT INTO messageindex(messageindex, rowid, content) VALUES('delete', old.message_id, old.content); INSERT INTO messageindex(rowid, content) VALUES (new.message_id, new.content); END;`
465+
`CREATE TRIGGER IF NOT EXISTS message_au AFTER UPDATE ON message BEGIN INSERT INTO messageindex(messageindex, rowid, content) VALUES('delete', old.rowid, old.content); INSERT INTO messageindex(rowid, content) VALUES (new.rowid, new.content); END;`
465466
);
466467
}

0 commit comments

Comments
 (0)