Include @mentioned names in search results
This commit is contained in:
parent
e3c6b4d9b1
commit
9c6fb29edb
14 changed files with 1052 additions and 126 deletions
58
ts/sql/migrations/84-all-mentions.ts
Normal file
58
ts/sql/migrations/84-all-mentions.ts
Normal file
|
@ -0,0 +1,58 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/better-sqlite3';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion84(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 84) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
const selectMentionsFromMessages = `
|
||||
SELECT messages.id, bodyRanges.value ->> 'mentionUuid' as mentionUuid, bodyRanges.value ->> 'start' as start, bodyRanges.value ->> 'length' as length
|
||||
FROM messages, json_each(messages.json ->> 'bodyRanges') as bodyRanges
|
||||
WHERE bodyRanges.value ->> 'mentionUuid' IS NOT NULL
|
||||
`;
|
||||
|
||||
db.exec(`
|
||||
DROP TABLE IF EXISTS mentions;
|
||||
|
||||
CREATE TABLE mentions (
|
||||
messageId REFERENCES messages(id) ON DELETE CASCADE,
|
||||
mentionUuid STRING,
|
||||
start INTEGER,
|
||||
length INTEGER
|
||||
);
|
||||
|
||||
CREATE INDEX mentions_uuid ON mentions (mentionUuid);
|
||||
|
||||
INSERT INTO mentions (messageId, mentionUuid, start, length)
|
||||
${selectMentionsFromMessages};
|
||||
|
||||
CREATE TRIGGER messages_on_insert_insert_mentions AFTER INSERT ON messages
|
||||
BEGIN
|
||||
INSERT INTO mentions (messageId, mentionUuid, start, length)
|
||||
${selectMentionsFromMessages}
|
||||
AND messages.id = new.id;
|
||||
END;
|
||||
|
||||
CREATE TRIGGER messages_on_update_update_mentions AFTER UPDATE ON messages
|
||||
BEGIN
|
||||
DELETE FROM mentions WHERE messageId = new.id;
|
||||
INSERT INTO mentions (messageId, mentionUuid, start, length)
|
||||
${selectMentionsFromMessages}
|
||||
AND messages.id = new.id;
|
||||
END;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 84');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion84: success!');
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue