62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
// Copyright 2021-2022 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import type { Database } from 'better-sqlite3';
|
|
|
|
import type { LoggerType } from '../../types/Logging';
|
|
|
|
export default function updateToSchemaVersion65(
|
|
currentVersion: number,
|
|
db: Database,
|
|
logger: LoggerType
|
|
): void {
|
|
if (currentVersion >= 65) {
|
|
return;
|
|
}
|
|
|
|
db.transaction(() => {
|
|
db.exec(
|
|
`
|
|
ALTER TABLE sticker_packs ADD COLUMN position INTEGER DEFAULT 0 NOT NULL;
|
|
ALTER TABLE sticker_packs ADD COLUMN storageID STRING;
|
|
ALTER TABLE sticker_packs ADD COLUMN storageVersion INTEGER;
|
|
ALTER TABLE sticker_packs ADD COLUMN storageUnknownFields BLOB;
|
|
ALTER TABLE sticker_packs
|
|
ADD COLUMN storageNeedsSync
|
|
INTEGER DEFAULT 0 NOT NULL;
|
|
|
|
CREATE TABLE uninstalled_sticker_packs (
|
|
id STRING NOT NULL PRIMARY KEY,
|
|
uninstalledAt NUMBER NOT NULL,
|
|
storageID STRING,
|
|
storageVersion NUMBER,
|
|
storageUnknownFields BLOB,
|
|
storageNeedsSync INTEGER NOT NULL
|
|
);
|
|
|
|
-- Set initial position
|
|
|
|
UPDATE sticker_packs
|
|
SET
|
|
position = (row_number - 1),
|
|
storageNeedsSync = 1
|
|
FROM (
|
|
SELECT id, row_number() OVER (ORDER BY lastUsed DESC) as row_number
|
|
FROM sticker_packs
|
|
) as ordered_pairs
|
|
WHERE sticker_packs.id IS ordered_pairs.id;
|
|
|
|
-- See: getAllStickerPacks
|
|
|
|
CREATE INDEX sticker_packs_by_position_and_id ON sticker_packs (
|
|
position ASC,
|
|
id ASC
|
|
);
|
|
`
|
|
);
|
|
|
|
db.pragma('user_version = 65');
|
|
})();
|
|
|
|
logger.info('updateToSchemaVersion65: success!');
|
|
}
|