45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
// Copyright 2023 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import type { Database } from '@signalapp/better-sqlite3';
|
|
|
|
import type { LoggerType } from '../../types/Logging';
|
|
import { sql } from '../util';
|
|
|
|
export default function updateToSchemaVersion90(
|
|
currentVersion: number,
|
|
db: Database,
|
|
logger: LoggerType
|
|
): void {
|
|
if (currentVersion >= 90) {
|
|
return;
|
|
}
|
|
|
|
let numChanges = 0;
|
|
db.transaction(() => {
|
|
const [updateQuery, updateParams] = sql`
|
|
UPDATE messages
|
|
SET json = json_remove(json, '$.storyReplyContext.attachment.screenshotData')
|
|
WHERE isStory = 0
|
|
|
|
/* we want to find all messages with a non-null storyId, but using string
|
|
comparison (instead of a non-null check) here causes Sqlite to use the
|
|
storyId index */
|
|
AND storyId > '0'
|
|
|
|
AND json->'$.storyReplyContext.attachment.screenshotData' IS NOT NULL;
|
|
`;
|
|
|
|
const info = db.prepare(updateQuery).run(updateParams);
|
|
numChanges = info.changes;
|
|
|
|
db.pragma('user_version = 90');
|
|
})();
|
|
|
|
logger.info(
|
|
`updateToSchemaVersion90: removed screenshotData from ${numChanges} ` +
|
|
`message${numChanges > 1 ? 's' : ''}`
|
|
);
|
|
|
|
logger.info('updateToSchemaVersion90: success!');
|
|
}
|