mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-02-15 07:28:59 +00:00
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
// Copyright 2026 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
import type { WritableDB } from '../Interface.std.js';
|
|
|
|
export default function updateToSchemaVersion1650(db: WritableDB): void {
|
|
db.exec(`
|
|
CREATE TABLE attachments_protected_from_deletion (
|
|
path TEXT NOT NULL,
|
|
UNIQUE (path)
|
|
) STRICT;
|
|
`);
|
|
|
|
db.exec(`
|
|
CREATE INDEX message_attachments_plaintextHash ON message_attachments (plaintextHash);
|
|
`);
|
|
db.exec(`
|
|
CREATE INDEX message_attachments_path ON message_attachments (path);
|
|
`);
|
|
db.exec(`
|
|
CREATE INDEX message_attachments_thumbnailPath ON message_attachments (thumbnailPath);
|
|
`);
|
|
db.exec(`
|
|
CREATE INDEX message_attachments_screenshotPath ON message_attachments (screenshotPath);
|
|
`);
|
|
db.exec(`
|
|
CREATE INDEX message_attachments_backupThumbnailPath ON message_attachments (backupThumbnailPath);
|
|
`);
|
|
|
|
db.exec(`
|
|
CREATE TRIGGER stop_protecting_attachments_after_update
|
|
AFTER UPDATE OF path, thumbnailPath, screenshotPath, backupThumbnailPath
|
|
ON message_attachments
|
|
WHEN
|
|
OLD.path IS NOT NEW.path OR
|
|
OLD.thumbnailPath IS NOT NEW.thumbnailPath OR
|
|
OLD.screenshotPath IS NOT NEW.screenshotPath OR
|
|
OLD.backupThumbnailPath IS NOT NEW.backupThumbnailPath
|
|
BEGIN
|
|
DELETE FROM attachments_protected_from_deletion
|
|
WHERE path IN (NEW.path, NEW.thumbnailPath, NEW.screenshotPath, NEW.backupThumbnailPath);
|
|
END;
|
|
`);
|
|
|
|
db.exec(`
|
|
CREATE TRIGGER stop_protecting_attachments_after_insert
|
|
AFTER INSERT
|
|
ON message_attachments
|
|
BEGIN
|
|
DELETE FROM attachments_protected_from_deletion
|
|
WHERE path IN (NEW.path, NEW.thumbnailPath, NEW.screenshotPath, NEW.backupThumbnailPath);
|
|
END;
|
|
`);
|
|
}
|