Add migration for unread call history messages and fix json.seenStatus

This commit is contained in:
ayumi-signal 2024-03-05 11:54:01 -08:00 committed by GitHub
parent 407b6b0f97
commit 6fd117bde7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 268 additions and 4 deletions

View file

@ -0,0 +1,60 @@
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { Database } from '@signalapp/better-sqlite3';
import type { LoggerType } from '../../types/Logging';
import { ReadStatus } from '../../messages/MessageReadStatus';
import { SeenStatus } from '../../MessageSeenStatus';
import { strictAssert } from '../../util/assert';
import { sql, sqlConstant } from '../util';
export const version = 1000;
const READ_STATUS_UNREAD = sqlConstant(ReadStatus.Unread);
const READ_STATUS_READ = sqlConstant(ReadStatus.Read);
const SEEN_STATUS_UNSEEN = sqlConstant(SeenStatus.Unseen);
export function updateToSchemaVersion1000(
currentVersion: number,
db: Database,
logger: LoggerType
): void {
if (currentVersion >= 1000) {
return;
}
db.transaction(() => {
const [selectQuery] = sql`
SELECT id
FROM messages
WHERE messages.type = 'call-history'
AND messages.readStatus IS ${READ_STATUS_UNREAD}
`;
const rows = db.prepare(selectQuery).all();
for (const row of rows) {
const { id } = row;
strictAssert(id != null, 'message id must exist');
const [updateQuery, updateParams] = sql`
UPDATE messages
SET
json = JSON_PATCH(json, ${JSON.stringify({
readStatus: ReadStatus.Read,
seenStatus: SeenStatus.Unseen,
})}),
readStatus = ${READ_STATUS_READ},
seenStatus = ${SEEN_STATUS_UNSEEN}
WHERE id = ${id}
`;
db.prepare(updateQuery).run(updateParams);
}
})();
db.pragma('user_version = 1000');
logger.info('updateToSchemaVersion1000: success!');
}

View file

@ -74,10 +74,11 @@ import { updateToSchemaVersion950 } from './950-fts5-secure-delete';
import { updateToSchemaVersion960 } from './960-untag-pni';
import { updateToSchemaVersion970 } from './970-fts5-optimize';
import { updateToSchemaVersion980 } from './980-reaction-timestamp';
import { updateToSchemaVersion990 } from './990-phone-number-sharing';
import {
version as MAX_VERSION,
updateToSchemaVersion990,
} from './990-phone-number-sharing';
updateToSchemaVersion1000,
} from './1000-mark-unread-call-history-messages-as-unseen';
function updateToSchemaVersion1(
currentVersion: number,
@ -2019,6 +2020,7 @@ export const SCHEMA_VERSIONS = [
updateToSchemaVersion970,
updateToSchemaVersion980,
updateToSchemaVersion990,
updateToSchemaVersion1000,
];
export class DBVersionFromFutureError extends Error {