Simplify database migrations
This commit is contained in:
parent
46d5b06bfc
commit
e6809c95db
106 changed files with 4661 additions and 6814 deletions
|
@ -3,28 +3,16 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
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(() => {
|
||||
export default function updateToSchemaVersion1000(db: Database): void {
|
||||
const [selectQuery] = sql`
|
||||
SELECT id
|
||||
FROM messages
|
||||
|
@ -52,9 +40,4 @@ export function updateToSchemaVersion1000(
|
|||
|
||||
db.prepare(updateQuery).run(updateParams);
|
||||
}
|
||||
|
||||
db.pragma('user_version = 1000');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1000: success!');
|
||||
}
|
||||
|
|
|
@ -3,21 +3,9 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1010;
|
||||
|
||||
export function updateToSchemaVersion1010(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1010) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1010(db: Database): void {
|
||||
const [createTable] = sql`
|
||||
CREATE TABLE callLinks (
|
||||
roomId TEXT NOT NULL PRIMARY KEY,
|
||||
|
@ -32,9 +20,4 @@ export function updateToSchemaVersion1010(
|
|||
`;
|
||||
|
||||
db.exec(createTable);
|
||||
|
||||
db.pragma('user_version = 1010');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1010: success!');
|
||||
}
|
||||
|
|
|
@ -6,23 +6,14 @@ import { sql } from '../util';
|
|||
import type { WritableDB } from '../Interface';
|
||||
import { getOurUuid } from './41-uuid-keys';
|
||||
|
||||
export const version = 1020;
|
||||
|
||||
export function updateToSchemaVersion1020(
|
||||
currentVersion: number,
|
||||
export default function updateToSchemaVersion1020(
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1020) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
const ourAci = getOurUuid(db);
|
||||
|
||||
if (ourAci == null) {
|
||||
logger.info('updateToSchemaVersion1020: not linked');
|
||||
db.pragma('user_version = 1020');
|
||||
logger.info('not linked');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -36,8 +27,7 @@ export function updateToSchemaVersion1020(
|
|||
})
|
||||
.get(selectParams);
|
||||
if (ourConversationId == null) {
|
||||
logger.error('updateToSchemaVersion1020: no conversation');
|
||||
db.pragma('user_version = 1020');
|
||||
logger.error('no conversation');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -49,11 +39,6 @@ export function updateToSchemaVersion1020(
|
|||
`;
|
||||
const { changes } = db.prepare(deleteQuery).run(deleteParams);
|
||||
if (changes !== 0) {
|
||||
logger.warn(`updateToSchemaVersion1020: removed ${changes} self merges`);
|
||||
logger.warn(`removed ${changes} self merges`);
|
||||
}
|
||||
|
||||
db.pragma('user_version = 1020');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1020: success!');
|
||||
}
|
||||
|
|
|
@ -3,21 +3,9 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql, sqlFragment } from '../util';
|
||||
|
||||
export const version = 1030;
|
||||
|
||||
export function updateToSchemaVersion1030(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1030) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1030(db: Database): void {
|
||||
// From migration 81
|
||||
const shouldAffectActivityOrPreview = sqlFragment`
|
||||
type IS NULL
|
||||
|
@ -79,9 +67,4 @@ export function updateToSchemaVersion1030(
|
|||
`;
|
||||
|
||||
db.exec(updateShouldAffectPreview);
|
||||
|
||||
db.pragma('user_version = 1030');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1030: success!');
|
||||
}
|
||||
|
|
|
@ -20,8 +20,6 @@ import {
|
|||
type JobManagerJobType,
|
||||
} from '../../jobs/JobManager';
|
||||
|
||||
export const version = 1040;
|
||||
|
||||
export type _AttachmentDownloadJobTypeV1030 = {
|
||||
attachment: AttachmentType;
|
||||
attempts: number;
|
||||
|
@ -56,16 +54,10 @@ export type _AttachmentDownloadJobTypeV1040 = Omit<
|
|||
'attachmentSignature' | 'originalSource'
|
||||
> & { digest: string };
|
||||
|
||||
export function updateToSchemaVersion1040(
|
||||
currentVersion: number,
|
||||
export default function updateToSchemaVersion1040(
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1040) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
// 1. Load all existing rows into memory (shouldn't be many)
|
||||
const existingJobs: Array<{
|
||||
id: string | null;
|
||||
|
@ -79,9 +71,7 @@ export function updateToSchemaVersion1040(
|
|||
`
|
||||
)
|
||||
.all();
|
||||
logger.info(
|
||||
`updateToSchemaVersion1040: loaded ${existingJobs.length} existing jobs`
|
||||
);
|
||||
logger.info(`loaded ${existingJobs.length} existing jobs`);
|
||||
|
||||
// 2. Create new temp table, with a couple new columns and stricter typing
|
||||
db.exec(`
|
||||
|
@ -171,24 +161,19 @@ export function updateToSchemaVersion1040(
|
|||
ciphertextSize: 0,
|
||||
};
|
||||
|
||||
const parsed = parsePartial(
|
||||
attachmentDownloadJobSchemaV1040,
|
||||
updatedJob
|
||||
);
|
||||
const parsed = parsePartial(attachmentDownloadJobSchemaV1040, updatedJob);
|
||||
|
||||
rowsToTransfer.push(parsed);
|
||||
} catch {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion1040: unable to transfer job ${existingJob.id} to new table; invalid data`
|
||||
`unable to transfer job ${existingJob.id} to new table; invalid data`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
let numTransferred = 0;
|
||||
if (rowsToTransfer.length) {
|
||||
logger.info(
|
||||
`updateToSchemaVersion1040: transferring ${rowsToTransfer.length} rows`
|
||||
);
|
||||
logger.info(`transferring ${rowsToTransfer.length} rows`);
|
||||
for (const row of rowsToTransfer) {
|
||||
const [insertQuery, insertParams] = sql`
|
||||
INSERT INTO attachment_downloads
|
||||
|
@ -226,22 +211,14 @@ export function updateToSchemaVersion1040(
|
|||
db.prepare(insertQuery).run(insertParams);
|
||||
numTransferred += 1;
|
||||
} catch (error) {
|
||||
logger.error(
|
||||
'updateToSchemaVersion1040: error when transferring row',
|
||||
error
|
||||
);
|
||||
logger.error('error when transferring row', error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logger.info(
|
||||
`updateToSchemaVersion1040: transferred ${numTransferred} rows, removed ${
|
||||
`transferred ${numTransferred} rows, removed ${
|
||||
existingJobs.length - numTransferred
|
||||
}`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 1040');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1040: success!');
|
||||
}
|
||||
|
|
|
@ -3,21 +3,9 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1050;
|
||||
|
||||
export function updateToSchemaVersion1050(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1050) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1050(db: Database): void {
|
||||
const [createTables] = sql`
|
||||
DROP TABLE IF EXISTS groupSendCombinedEndorsement;
|
||||
DROP TABLE IF EXISTS groupSendMemberEndorsement;
|
||||
|
@ -42,9 +30,4 @@ export function updateToSchemaVersion1050(
|
|||
`;
|
||||
|
||||
db.exec(createTables);
|
||||
|
||||
db.pragma('user_version = 1050');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1050: success!');
|
||||
}
|
||||
|
|
|
@ -3,20 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1060;
|
||||
|
||||
export function updateToSchemaVersion1060(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1060) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1060(db: Database): void {
|
||||
db.exec(`
|
||||
ALTER TABLE messages
|
||||
ADD COLUMN isAddressableMessage INTEGER
|
||||
|
@ -48,9 +35,4 @@ export function updateToSchemaVersion1060(
|
|||
createdAt, sentAt, id
|
||||
)
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1060');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1060: success!');
|
||||
}
|
||||
|
|
|
@ -3,20 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1070;
|
||||
|
||||
export function updateToSchemaVersion1070(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1070) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1070(db: Database): void {
|
||||
db.exec(`
|
||||
CREATE TABLE attachment_backup_jobs (
|
||||
mediaName TEXT NOT NULL PRIMARY KEY,
|
||||
|
@ -47,9 +34,4 @@ export function updateToSchemaVersion1070(
|
|||
sizeOnBackupCdn INTEGER
|
||||
) STRICT;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1070');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1070: success!');
|
||||
}
|
||||
|
|
|
@ -3,29 +3,11 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1080;
|
||||
|
||||
export function updateToSchemaVersion1080(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1080) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1080(db: Database): void {
|
||||
db.exec(`
|
||||
CREATE INDEX messages_by_date_addressable_nondisappearing
|
||||
ON messages (
|
||||
conversationId, isAddressableMessage, received_at, sent_at
|
||||
) WHERE expireTimer IS NULL;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1080');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1080: success!');
|
||||
}
|
||||
|
|
|
@ -3,20 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1090;
|
||||
|
||||
export function updateToSchemaVersion1090(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1090) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1090(db: Database): void {
|
||||
db.exec(`
|
||||
CREATE INDEX reactions_messageId
|
||||
ON reactions (messageId);
|
||||
|
@ -24,9 +11,4 @@ export function updateToSchemaVersion1090(
|
|||
CREATE INDEX storyReads_storyId
|
||||
ON storyReads (storyId);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1090');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1090: success!');
|
||||
}
|
||||
|
|
|
@ -2,21 +2,9 @@
|
|||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1100;
|
||||
|
||||
export function updateToSchemaVersion1100(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1100) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1100(db: Database): void {
|
||||
const [query] = sql`
|
||||
-- Fix: Query went from readStatus to seenStatus but index wasn't updated
|
||||
DROP INDEX IF EXISTS messages_callHistory_readStatus;
|
||||
|
@ -55,9 +43,4 @@ export function updateToSchemaVersion1100(
|
|||
`;
|
||||
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1100');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1100: success!');
|
||||
}
|
||||
|
|
|
@ -3,20 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1110;
|
||||
|
||||
export function updateToSchemaVersion1110(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1110) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1110(db: Database): void {
|
||||
db.exec(`
|
||||
ALTER TABLE stickers
|
||||
ADD COLUMN version INTEGER NOT NULL DEFAULT 1;
|
||||
|
@ -27,9 +14,4 @@ export function updateToSchemaVersion1110(
|
|||
ALTER TABLE stickers
|
||||
ADD COLUMN size INTEGER;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1110');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1110: success!');
|
||||
}
|
||||
|
|
|
@ -3,20 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1120;
|
||||
|
||||
export function updateToSchemaVersion1120(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1120) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1120(db: Database): void {
|
||||
/** Adds indexes for all tables with foreign key relationships to messages(id) */
|
||||
db.exec(`
|
||||
CREATE INDEX edited_messages_messageId
|
||||
|
@ -25,9 +12,4 @@ export function updateToSchemaVersion1120(
|
|||
CREATE INDEX mentions_messageId
|
||||
ON mentions(messageId);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1120');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1120: success!');
|
||||
}
|
||||
|
|
|
@ -3,29 +3,11 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1130;
|
||||
|
||||
export function updateToSchemaVersion1130(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1130) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1130(db: Database): void {
|
||||
// This is to improve the performance of getAllStories
|
||||
db.exec(`
|
||||
CREATE INDEX messages_isStory
|
||||
ON messages(received_at, sent_at)
|
||||
WHERE isStory = 1;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1130');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1130: success!');
|
||||
}
|
||||
|
|
|
@ -1,20 +1,8 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1140;
|
||||
|
||||
export function updateToSchemaVersion1140(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1140) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1140(db: Database): void {
|
||||
db.exec(`
|
||||
DROP INDEX IF EXISTS callLinks_deleted;
|
||||
|
||||
|
@ -24,8 +12,4 @@ export function updateToSchemaVersion1140(
|
|||
CREATE INDEX callLinks_deleted
|
||||
ON callLinks (deleted, roomId);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1140');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1140: success!');
|
||||
}
|
||||
|
|
|
@ -1,20 +1,8 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1150;
|
||||
|
||||
export function updateToSchemaVersion1150(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1150) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1150(db: Database): void {
|
||||
db.exec(`
|
||||
-- All future conversations will start from '1'
|
||||
ALTER TABLE conversations
|
||||
|
@ -23,8 +11,4 @@ export function updateToSchemaVersion1150(
|
|||
-- All current conversations will start from '2'
|
||||
UPDATE conversations SET expireTimerVersion = 2;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1150');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1150: success!');
|
||||
}
|
||||
|
|
|
@ -1,25 +1,13 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql, sqlConstant } from '../util';
|
||||
import { CallDirection, CallStatusValue } from '../../types/CallDisposition';
|
||||
|
||||
export const version = 1160;
|
||||
|
||||
const CALL_STATUS_MISSED = sqlConstant(CallStatusValue.Missed);
|
||||
const CALL_DIRECTION_INCOMING = sqlConstant(CallDirection.Incoming);
|
||||
|
||||
export function updateToSchemaVersion1160(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1160) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1160(db: Database): void {
|
||||
const [query] = sql`
|
||||
DROP INDEX IF EXISTS callsHistory_incoming_missed;
|
||||
|
||||
|
@ -29,8 +17,4 @@ export function updateToSchemaVersion1160(
|
|||
AND direction IS ${CALL_DIRECTION_INCOMING};
|
||||
`;
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1160');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1160: success!');
|
||||
}
|
||||
|
|
|
@ -1,20 +1,9 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1170;
|
||||
export function updateToSchemaVersion1170(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1170) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1170(db: Database): void {
|
||||
const [query] = sql`
|
||||
DROP INDEX IF EXISTS messages_callHistory_markReadBefore;
|
||||
CREATE INDEX messages_callHistory_markReadBefore
|
||||
|
@ -22,8 +11,4 @@ export function updateToSchemaVersion1170(
|
|||
WHERE type IS 'call-history';
|
||||
`;
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1170');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1170: success!');
|
||||
}
|
||||
|
|
|
@ -1,20 +1,9 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { AttachmentDownloadSource } from '../Interface';
|
||||
|
||||
export const version = 1180;
|
||||
export function updateToSchemaVersion1180(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1180) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1180(db: Database): void {
|
||||
db.exec(`
|
||||
ALTER TABLE attachment_downloads
|
||||
ADD COLUMN source TEXT NOT NULL DEFAULT ${AttachmentDownloadSource.STANDARD};
|
||||
|
@ -30,8 +19,4 @@ export function updateToSchemaVersion1180(
|
|||
source, ciphertextSize
|
||||
);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1180');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1180: success!');
|
||||
}
|
||||
|
|
|
@ -1,20 +1,8 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1190;
|
||||
|
||||
export function updateToSchemaVersion1190(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1190) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1190(db: Database): void {
|
||||
db.exec(`
|
||||
ALTER TABLE callLinks ADD COLUMN storageID TEXT;
|
||||
ALTER TABLE callLinks ADD COLUMN storageVersion INTEGER;
|
||||
|
@ -31,8 +19,4 @@ export function updateToSchemaVersion1190(
|
|||
).run({
|
||||
deletedAt: new Date().getTime(),
|
||||
});
|
||||
|
||||
db.pragma('user_version = 1190');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1190: success!');
|
||||
}
|
||||
|
|
|
@ -1,19 +1,8 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1200;
|
||||
export function updateToSchemaVersion1200(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1200) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1200(db: Database): void {
|
||||
// The standard getNextAttachmentDownloadJobs query uses active & source conditions,
|
||||
// ordered by received_at
|
||||
db.exec(`
|
||||
|
@ -22,8 +11,4 @@ export function updateToSchemaVersion1200(
|
|||
active, source, receivedAt
|
||||
);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1200');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1200: success!');
|
||||
}
|
||||
|
|
|
@ -1,19 +1,8 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1210;
|
||||
export function updateToSchemaVersion1210(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1210) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1210(db: Database): void {
|
||||
// The standard getNextAttachmentDownloadJobs query uses active & source conditions,
|
||||
// ordered by received_at
|
||||
db.exec(`
|
||||
|
@ -23,8 +12,4 @@ export function updateToSchemaVersion1210(
|
|||
ALTER TABLE callsHistory
|
||||
ADD COLUMN endedTimestamp INTEGER DEFAULT NULL;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1210');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1210: success!');
|
||||
}
|
||||
|
|
|
@ -120,16 +120,10 @@ function migrateSession(
|
|||
throw missingCaseError(session.version);
|
||||
}
|
||||
|
||||
export function updateToSchemaVersion1220(
|
||||
currentVersion: number,
|
||||
export default function updateToSchemaVersion1220(
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1220) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
db.exec(`
|
||||
ALTER TABLE sessions
|
||||
RENAME TO old_sessions;
|
||||
|
@ -158,9 +152,8 @@ export function updateToSchemaVersion1220(
|
|||
|
||||
// If we don't have private keys - the sessions cannot be used anyway
|
||||
if (!identityKeyMapJson || !registrationIdMapJson) {
|
||||
logger.info('updateToSchemaVersion1220: no identity/registration id');
|
||||
logger.info('no identity/registration id');
|
||||
db.exec('DROP TABLE old_sessions');
|
||||
db.pragma('user_version = 1220');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -199,21 +192,12 @@ export function updateToSchemaVersion1220(
|
|||
migrated += 1;
|
||||
} catch (error) {
|
||||
failed += 1;
|
||||
logger.error(
|
||||
'updateToSchemaVersion1220: failed to migrate session',
|
||||
Errors.toLogFormat(error)
|
||||
);
|
||||
logger.error('failed to migrate session', Errors.toLogFormat(error));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logger.info(
|
||||
`updateToSchemaVersion1220: migrated ${migrated} sessions, ` +
|
||||
`${failed} failed`
|
||||
);
|
||||
logger.info(`migrated ${migrated} sessions, ${failed} failed`);
|
||||
|
||||
db.exec('DROP TABLE old_sessions');
|
||||
db.pragma('user_version = 1220');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1220: success!');
|
||||
}
|
||||
|
|
|
@ -1,28 +1,12 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1230;
|
||||
|
||||
export function updateToSchemaVersion1230(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1230) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1230(db: Database): void {
|
||||
db.exec(`
|
||||
DROP INDEX IF EXISTS callLinks_adminKey;
|
||||
|
||||
CREATE INDEX callLinks_adminKey
|
||||
ON callLinks (adminKey);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1230');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1230: success!');
|
||||
}
|
||||
|
|
|
@ -3,21 +3,9 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1240;
|
||||
|
||||
export function updateToSchemaVersion1240(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1240) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1240(db: Database): void {
|
||||
const [createTable] = sql`
|
||||
CREATE TABLE defunctCallLinks (
|
||||
roomId TEXT NOT NULL PRIMARY KEY,
|
||||
|
@ -27,9 +15,4 @@ export function updateToSchemaVersion1240(
|
|||
`;
|
||||
|
||||
db.exec(createTable);
|
||||
|
||||
db.pragma('user_version = 1240');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1240: success!');
|
||||
}
|
||||
|
|
|
@ -1,28 +1,12 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 1250;
|
||||
|
||||
export function updateToSchemaVersion1250(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1250) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1250(db: Database): void {
|
||||
db.exec(`
|
||||
ALTER TABLE defunctCallLinks ADD COLUMN storageID TEXT;
|
||||
ALTER TABLE defunctCallLinks ADD COLUMN storageVersion INTEGER;
|
||||
ALTER TABLE defunctCallLinks ADD COLUMN storageUnknownFields BLOB;
|
||||
ALTER TABLE defunctCallLinks ADD COLUMN storageNeedsSync INTEGER NOT NULL DEFAULT 0;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1250');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion1250: success!');
|
||||
}
|
||||
|
|
|
@ -1,30 +1,13 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1260;
|
||||
|
||||
export function updateToSchemaVersion1260(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1260) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1260(db: Database): void {
|
||||
const [query] = sql`
|
||||
DROP INDEX IF EXISTS syncTasks_order;
|
||||
CREATE INDEX syncTasks_delete ON syncTasks (attempts DESC);
|
||||
`;
|
||||
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1260');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1260: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1270;
|
||||
|
||||
export function updateToSchemaVersion1270(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1270) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1270(db: Database): void {
|
||||
const [query] = sql`
|
||||
ALTER TABLE messages
|
||||
ADD COLUMN timestamp INTEGER;
|
||||
|
@ -45,9 +33,4 @@ export function updateToSchemaVersion1270(
|
|||
`;
|
||||
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1270');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1270: success!');
|
||||
}
|
||||
|
|
|
@ -14,18 +14,10 @@ import { sql } from '../util';
|
|||
import type { WritableDB } from '../Interface';
|
||||
import { getOurUuid } from './41-uuid-keys';
|
||||
|
||||
export const version = 1280;
|
||||
|
||||
export function updateToSchemaVersion1280(
|
||||
currentVersion: number,
|
||||
export default function updateToSchemaVersion1280(
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1280) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
const ourAci = getOurUuid(db);
|
||||
|
||||
let rows = db.prepare('SELECT * FROM unprocessed').all();
|
||||
|
@ -86,9 +78,7 @@ export function updateToSchemaVersion1280(
|
|||
|
||||
if (!ourAci) {
|
||||
if (rows.length) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion1280: no aci, dropping ${rows.length} envelopes`
|
||||
);
|
||||
logger.warn(`no aci, dropping ${rows.length} envelopes`);
|
||||
rows = [];
|
||||
}
|
||||
}
|
||||
|
@ -146,10 +136,7 @@ export function updateToSchemaVersion1280(
|
|||
'Envelope.destinationServiceId'
|
||||
) ?? null,
|
||||
updatedPni: isUntaggedPniString(decoded.updatedPni)
|
||||
? normalizePni(
|
||||
toTaggedPni(decoded.updatedPni),
|
||||
'Envelope.updatedPni'
|
||||
)
|
||||
? normalizePni(toTaggedPni(decoded.updatedPni), 'Envelope.updatedPni')
|
||||
: null,
|
||||
// Sadly not captured previously
|
||||
messageAgeSec: 0,
|
||||
|
@ -158,22 +145,11 @@ export function updateToSchemaVersion1280(
|
|||
: null,
|
||||
});
|
||||
} catch (error) {
|
||||
logger.warn(
|
||||
'updateToSchemaVersion1280: failed to migrate unprocessed',
|
||||
id,
|
||||
error
|
||||
);
|
||||
logger.warn('failed to migrate unprocessed', id, error);
|
||||
}
|
||||
}
|
||||
|
||||
if (oldEnvelopes !== 0) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion1280: dropped ${oldEnvelopes} envelopes`
|
||||
);
|
||||
logger.warn(`dropped ${oldEnvelopes} envelopes`);
|
||||
}
|
||||
|
||||
db.pragma('user_version = 1280');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1280: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
import type { WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1290;
|
||||
|
||||
export function updateToSchemaVersion1290(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1290) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1290(db: WritableDB): void {
|
||||
const [query] = sql`
|
||||
ALTER TABLE unprocessed RENAME COLUMN sourceDevice TO legacySourceDevice;
|
||||
ALTER TABLE unprocessed ADD COLUMN sourceDevice INTEGER;
|
||||
|
@ -26,9 +14,4 @@ export function updateToSchemaVersion1290(
|
|||
ALTER TABLE unprocessed DROP COLUMN legacySourceDevice;
|
||||
`;
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1290');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1290: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
import type { WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1300;
|
||||
|
||||
export function updateToSchemaVersion1300(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1300) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1300(db: WritableDB): void {
|
||||
const [query] = sql`
|
||||
ALTER TABLE sticker_references
|
||||
ADD COLUMN stickerId INTEGER NOT NULL DEFAULT -1;
|
||||
|
@ -27,9 +15,4 @@ export function updateToSchemaVersion1300(
|
|||
WHERE isUnresolved IS 1;
|
||||
`;
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1300');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1300: success!');
|
||||
}
|
||||
|
|
|
@ -4,21 +4,13 @@ import type { LoggerType } from '../../types/Logging';
|
|||
import { sql } from '../util';
|
||||
import type { WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1310;
|
||||
|
||||
// Value from ts/util/timestamp.ts at the time of creation of this migration
|
||||
const MAX_SAFE_DATE = 8640000000000000;
|
||||
|
||||
export function updateToSchemaVersion1310(
|
||||
currentVersion: number,
|
||||
export default function updateToSchemaVersion1310(
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1310) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
const [query, params] = sql`
|
||||
UPDATE conversations
|
||||
SET json = json_replace(
|
||||
|
@ -30,11 +22,6 @@ export function updateToSchemaVersion1310(
|
|||
`;
|
||||
const { changes } = db.prepare(query).run(params);
|
||||
if (changes !== 0) {
|
||||
logger.warn(`updateToSchemaVersion1310: fixed ${changes} conversations`);
|
||||
logger.warn(`fixed ${changes} conversations`);
|
||||
}
|
||||
|
||||
db.pragma('user_version = 1310');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1310: success!');
|
||||
}
|
||||
|
|
|
@ -1,22 +1,10 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
import type { WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1320;
|
||||
|
||||
export function updateToSchemaVersion1320(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1320) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1320(db: WritableDB): void {
|
||||
const [query] = sql`
|
||||
DROP INDEX unprocessed_timestamp;
|
||||
|
||||
|
@ -30,9 +18,4 @@ export function updateToSchemaVersion1320(
|
|||
(receivedAtDate);
|
||||
`;
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1320');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1320: success!');
|
||||
}
|
||||
|
|
|
@ -1,29 +1,12 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1330;
|
||||
|
||||
export function updateToSchemaVersion1330(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1330) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1330(db: Database): void {
|
||||
const [query] = sql`
|
||||
CREATE INDEX syncTasks_type ON syncTasks (type);
|
||||
`;
|
||||
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1330');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1330: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1340;
|
||||
|
||||
export function updateToSchemaVersion1340(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1340) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1340(db: Database): void {
|
||||
const [query] = sql`
|
||||
CREATE TABLE recentGifs (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
|
@ -36,9 +24,4 @@ export function updateToSchemaVersion1340(
|
|||
`;
|
||||
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1340');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1340: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sql } from '../util';
|
||||
|
||||
export const version = 1350;
|
||||
|
||||
export function updateToSchemaVersion1350(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1350) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1350(db: Database): void {
|
||||
const [query] = sql`
|
||||
CREATE TABLE notificationProfiles(
|
||||
id TEXT PRIMARY KEY NOT NULL,
|
||||
|
@ -50,9 +38,4 @@ export function updateToSchemaVersion1350(
|
|||
`;
|
||||
|
||||
db.exec(query);
|
||||
|
||||
db.pragma('user_version = 1350');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1350: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2024 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import type { WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1360;
|
||||
|
||||
export function updateToSchemaVersion1360(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1360) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1360(db: WritableDB): void {
|
||||
db.exec(`
|
||||
DROP TABLE IF EXISTS message_attachments;
|
||||
`);
|
||||
|
@ -111,9 +99,4 @@ export function updateToSchemaVersion1360(
|
|||
// 'CREATE INDEX message_attachments_all_backupThumbnailPath
|
||||
// ON message_attachments (backupThumbnailPath);'
|
||||
// );
|
||||
|
||||
db.pragma('user_version = 1360');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1360: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import type { WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1370;
|
||||
|
||||
export function updateToSchemaVersion1370(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1370) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1370(db: WritableDB): void {
|
||||
db.exec(`
|
||||
DROP INDEX IF EXISTS message_attachments_messageId;
|
||||
DROP INDEX IF EXISTS message_attachments_plaintextHash;
|
||||
|
@ -24,8 +12,4 @@ export function updateToSchemaVersion1370(
|
|||
DROP INDEX IF EXISTS message_attachments_all_screenshotPath;
|
||||
DROP INDEX IF EXISTS message_attachments_all_backupThumbnailPath;
|
||||
`);
|
||||
db.pragma('user_version = 1370');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1370: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import type { WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1380;
|
||||
|
||||
export function updateToSchemaVersion1380(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1380) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1380(db: WritableDB): void {
|
||||
db.exec(`
|
||||
CREATE TABLE donationReceipts(
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
|
@ -28,8 +16,4 @@ export function updateToSchemaVersion1380(
|
|||
|
||||
CREATE INDEX donationReceipts_byTimestamp on donationReceipts(timestamp);
|
||||
`);
|
||||
db.pragma('user_version = 1380');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1380: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { type WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1390;
|
||||
|
||||
export function updateToSchemaVersion1390(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1390) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1390(db: WritableDB): void {
|
||||
// TODO: DESKTOP-8879 Digest column is only used for deduplication purposes; here we
|
||||
// genericize its name to attachmentSignature to allow jobs to be added with
|
||||
// plaintextHash and no digest
|
||||
|
@ -45,9 +33,4 @@ export function updateToSchemaVersion1390(
|
|||
UPDATE message_attachments
|
||||
SET backupCdnNumber = NULL;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1390');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1390: success!');
|
||||
}
|
||||
|
|
|
@ -1,27 +1,11 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import type { WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1400;
|
||||
|
||||
export function updateToSchemaVersion1400(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1400) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1400(db: WritableDB): void {
|
||||
db.exec(`
|
||||
ALTER TABLE donationReceipts DROP COLUMN paymentDetailJson;
|
||||
ALTER TABLE donationReceipts DROP COLUMN paymentType;
|
||||
`);
|
||||
db.pragma('user_version = 1400');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1400: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { type WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1410;
|
||||
|
||||
export function updateToSchemaVersion1410(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1410) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1410(db: WritableDB): void {
|
||||
db.exec(`
|
||||
UPDATE conversations
|
||||
SET json = json_remove(json,
|
||||
|
@ -33,9 +21,4 @@ export function updateToSchemaVersion1410(
|
|||
'defaultAutoBubbleColor'
|
||||
);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1410');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1410: success!');
|
||||
}
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// Copyright 2025 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { AttachmentDownloadSource, type WritableDB } from '../Interface';
|
||||
|
||||
export const version = 1420;
|
||||
|
||||
export function updateToSchemaVersion1420(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 1420) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion1420(db: WritableDB): void {
|
||||
db.exec(`
|
||||
ALTER TABLE attachment_downloads
|
||||
ADD COLUMN originalSource TEXT NOT NULL DEFAULT ${AttachmentDownloadSource.STANDARD};
|
||||
|
@ -62,9 +50,4 @@ export function updateToSchemaVersion1420(
|
|||
WHERE id = 0;
|
||||
END;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 1420');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion1420: success!');
|
||||
}
|
||||
|
|
|
@ -25,14 +25,9 @@ export function getOurUuid(db: ReadableDB): string | undefined {
|
|||
}
|
||||
|
||||
export default function updateToSchemaVersion41(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 41) {
|
||||
return;
|
||||
}
|
||||
|
||||
const getConversationUuid = db.prepare(
|
||||
`
|
||||
SELECT uuid
|
||||
|
@ -377,7 +372,6 @@ export default function updateToSchemaVersion41(
|
|||
logger.info(`Migrated ${migrated} identity keys`);
|
||||
};
|
||||
|
||||
db.transaction(() => {
|
||||
db.exec(
|
||||
`
|
||||
-- Change type of 'id' column from INTEGER to STRING
|
||||
|
@ -420,13 +414,9 @@ export default function updateToSchemaVersion41(
|
|||
const deleteCount = clearSessionsAndKeys();
|
||||
|
||||
if (deleteCount > 0) {
|
||||
logger.error(
|
||||
'updateToSchemaVersion41: no uuid is available, ' +
|
||||
`erased ${deleteCount} sessions/keys`
|
||||
);
|
||||
logger.error(`no uuid is available, erased ${deleteCount} sessions/keys`);
|
||||
}
|
||||
|
||||
db.pragma('user_version = 41');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -439,8 +429,4 @@ export default function updateToSchemaVersion41(
|
|||
moveIdentityKeyToMap(ourUuid);
|
||||
|
||||
updateIdentityKeys();
|
||||
|
||||
db.pragma('user_version = 41');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion41: success!');
|
||||
}
|
||||
|
|
|
@ -6,15 +6,9 @@ import type { WritableDB } from '../Interface';
|
|||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion42(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 42) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
// First, recreate messages table delete trigger with reaction support
|
||||
|
||||
db.exec(`
|
||||
|
@ -56,10 +50,7 @@ export default function updateToSchemaVersion42(
|
|||
}
|
||||
});
|
||||
|
||||
function deleteReactions(
|
||||
rowids: ReadonlyArray<number>,
|
||||
persistent: boolean
|
||||
) {
|
||||
function deleteReactions(rowids: ReadonlyArray<number>, persistent: boolean) {
|
||||
db.prepare(
|
||||
`
|
||||
DELETE FROM reactions
|
||||
|
@ -73,8 +64,4 @@ export default function updateToSchemaVersion42(
|
|||
logger.info(`Deleting ${reactionsToDelete.length} orphaned reactions`);
|
||||
batchMultiVarQuery(db, reactionsToDelete, deleteReactions);
|
||||
}
|
||||
|
||||
db.pragma('user_version = 42');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion42: success!');
|
||||
}
|
||||
|
|
|
@ -33,14 +33,9 @@ type ConversationType = Readonly<{
|
|||
}>;
|
||||
|
||||
export default function updateToSchemaVersion43(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 43) {
|
||||
return;
|
||||
}
|
||||
|
||||
type LegacyPendingMemberType = {
|
||||
addedByUserId?: string;
|
||||
conversationId: string;
|
||||
|
@ -117,8 +112,7 @@ export default function updateToSchemaVersion43(
|
|||
});
|
||||
if (!uuid) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion43: ${logId}.${key} UUID not found ` +
|
||||
`for ${member.conversationId}`
|
||||
`${logId}.${key} UUID not found for ${member.conversationId}`
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
|
@ -158,15 +152,14 @@ export default function updateToSchemaVersion43(
|
|||
|
||||
if (oldValue.length !== 0) {
|
||||
logger.info(
|
||||
`updateToSchemaVersion43: migrated ${oldValue.length} ${key} ` +
|
||||
`migrated ${oldValue.length} ${key} ` +
|
||||
`entries to ${newValue.length} for ${logId}`
|
||||
);
|
||||
}
|
||||
|
||||
if (addedByCount > 0) {
|
||||
logger.info(
|
||||
`updateToSchemaVersion43: migrated ${addedByCount} addedByUserId ` +
|
||||
`in ${key} for ${logId}`
|
||||
`migrated ${addedByCount} addedByUserId in ${key} for ${logId}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -286,7 +279,7 @@ export default function updateToSchemaVersion43(
|
|||
}
|
||||
if (!newValue) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion43: ${id}.groupV2Change.details.${key} ` +
|
||||
`${id}.groupV2Change.details.${key} ` +
|
||||
`UUID not found for ${oldValue}`
|
||||
);
|
||||
return undefined;
|
||||
|
@ -342,7 +335,7 @@ export default function updateToSchemaVersion43(
|
|||
|
||||
if (!uuid) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion43: ${id}.invitedGV2Members UUID ` +
|
||||
`${id}.invitedGV2Members UUID ` +
|
||||
`not found for ${conversationId}`
|
||||
);
|
||||
return undefined;
|
||||
|
@ -390,7 +383,6 @@ export default function updateToSchemaVersion43(
|
|||
return true;
|
||||
};
|
||||
|
||||
db.transaction(() => {
|
||||
const allConversations = db
|
||||
.prepare(
|
||||
`
|
||||
|
@ -404,8 +396,7 @@ export default function updateToSchemaVersion43(
|
|||
.map(json => jsonToObject<ConversationType>(json));
|
||||
|
||||
logger.info(
|
||||
'updateToSchemaVersion43: About to iterate through ' +
|
||||
`${allConversations.length} conversations`
|
||||
`About to iterate through ${allConversations.length} conversations`
|
||||
);
|
||||
|
||||
for (const convo of allConversations) {
|
||||
|
@ -413,10 +404,7 @@ export default function updateToSchemaVersion43(
|
|||
}
|
||||
|
||||
const messageCount = getCountFromTable(db, 'messages');
|
||||
logger.info(
|
||||
'updateToSchemaVersion43: About to iterate through ' +
|
||||
`${messageCount} messages`
|
||||
);
|
||||
logger.info(`About to iterate through ${messageCount} messages`);
|
||||
|
||||
let updatedCount = 0;
|
||||
for (const message of new TableIterator<MessageType>(db, 'messages')) {
|
||||
|
@ -425,9 +413,5 @@ export default function updateToSchemaVersion43(
|
|||
}
|
||||
}
|
||||
|
||||
logger.info(`updateToSchemaVersion43: Updated ${updatedCount} messages`);
|
||||
|
||||
db.pragma('user_version = 43');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion43: success!');
|
||||
logger.info(`Updated ${updatedCount} messages`);
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion44(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 44) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion44(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
CREATE TABLE badges(
|
||||
|
@ -35,9 +24,4 @@ export default function updateToSchemaVersion44(
|
|||
);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 44');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion44: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion45(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 45) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion45(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
--- Add column to messages table
|
||||
|
@ -129,9 +118,4 @@ export default function updateToSchemaVersion45(
|
|||
)
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 45');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion45: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion46(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 46) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion46(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
--- Add column to messages table
|
||||
|
@ -32,9 +21,4 @@ export default function updateToSchemaVersion46(
|
|||
(conversationId, isStory, storyId, received_at, sent_at);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 46');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion46: success!');
|
||||
}
|
||||
|
|
|
@ -1,20 +1,14 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { getOurUuid } from './41-uuid-keys';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import type { WritableDB } from '../Interface';
|
||||
|
||||
export default function updateToSchemaVersion47(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 47) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
db.exec(
|
||||
`
|
||||
DROP INDEX messages_conversation;
|
||||
|
@ -120,7 +114,7 @@ export default function updateToSchemaVersion47(
|
|||
|
||||
const ourUuid = getOurUuid(db);
|
||||
if (!ourUuid) {
|
||||
logger.info('updateToSchemaVersion47: our UUID not found');
|
||||
logger.info('our UUID not found');
|
||||
} else {
|
||||
db.prepare(
|
||||
`
|
||||
|
@ -131,9 +125,4 @@ export default function updateToSchemaVersion47(
|
|||
ourUuid,
|
||||
});
|
||||
}
|
||||
|
||||
db.pragma('user_version = 47');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion47: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion48(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 48) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion48(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
DROP INDEX message_user_initiated;
|
||||
|
@ -22,9 +11,4 @@ export default function updateToSchemaVersion48(
|
|||
CREATE INDEX message_user_initiated ON messages (conversationId, isUserInitiatedMessage);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 48');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion48: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion49(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 49) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion49(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
DROP INDEX messages_preview;
|
||||
|
@ -25,9 +14,4 @@ export default function updateToSchemaVersion49(
|
|||
(conversationId, shouldAffectPreview, isGroupLeaveEventFromOther, received_at, sent_at);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 49');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion49: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion50(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 50) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion50(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
DROP INDEX messages_unread;
|
||||
|
@ -24,9 +13,4 @@ export default function updateToSchemaVersion50(
|
|||
(conversationId, readStatus, isStory, storyId, received_at, sent_at) WHERE readStatus IS NOT NULL;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 50');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion50: success!');
|
||||
}
|
||||
|
|
|
@ -7,15 +7,9 @@ import type { WritableDB } from '../Interface';
|
|||
import { getJobsInQueue, insertJob } from '../Server';
|
||||
|
||||
export default function updateToSchemaVersion51(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 51) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
const deleteJobsInQueue = db.prepare(
|
||||
'DELETE FROM jobs WHERE queueType = $queueType'
|
||||
);
|
||||
|
@ -32,33 +26,25 @@ export default function updateToSchemaVersion51(
|
|||
const { data, id } = job;
|
||||
|
||||
if (!isRecord(data)) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion51: reactions queue job ${id} was missing valid data`
|
||||
);
|
||||
logger.warn(`reactions queue job ${id} was missing valid data`);
|
||||
return;
|
||||
}
|
||||
|
||||
const { messageId } = data;
|
||||
if (typeof messageId !== 'string') {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion51: reactions queue job ${id} had a non-string messageId`
|
||||
);
|
||||
logger.warn(`reactions queue job ${id} had a non-string messageId`);
|
||||
return;
|
||||
}
|
||||
|
||||
const message = getMessageById.get([messageId]);
|
||||
if (!message) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion51: Unable to find message for reaction job ${id}`
|
||||
);
|
||||
logger.warn(`Unable to find message for reaction job ${id}`);
|
||||
return;
|
||||
}
|
||||
|
||||
const { conversationId } = message;
|
||||
if (typeof conversationId !== 'string') {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion51: reactions queue job ${id} had a non-string conversationId`
|
||||
);
|
||||
logger.warn(`reactions queue job ${id} had a non-string conversationId`);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -83,9 +69,7 @@ export default function updateToSchemaVersion51(
|
|||
const { data, id } = job;
|
||||
|
||||
if (!isRecord(data)) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion51: normal send queue job ${id} was missing valid data`
|
||||
);
|
||||
logger.warn(`normal send queue job ${id} was missing valid data`);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -100,9 +84,4 @@ export default function updateToSchemaVersion51(
|
|||
|
||||
insertJob(db, newJob);
|
||||
});
|
||||
|
||||
db.pragma('user_version = 51');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion51: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion52(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 52) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion52(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
-- Create indices that don't have storyId in them so that
|
||||
|
@ -30,9 +19,4 @@ export default function updateToSchemaVersion52(
|
|||
WHERE readStatus IS NOT NULL;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 52');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion52: success!');
|
||||
}
|
||||
|
|
|
@ -7,14 +7,9 @@ import type { LoggerType } from '../../types/Logging';
|
|||
import { jsonToObject } from '../util';
|
||||
|
||||
export default function updateToSchemaVersion53(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 53) {
|
||||
return;
|
||||
}
|
||||
|
||||
type LegacyConversationType = {
|
||||
id: string;
|
||||
groupId: string;
|
||||
|
@ -52,7 +47,7 @@ export default function updateToSchemaVersion53(
|
|||
};
|
||||
|
||||
logger.info(
|
||||
`updateToSchemaVersion53: Updating ${logId} with ` +
|
||||
`Updating ${logId} with ` +
|
||||
`${legacy.bannedMembersV2.length} banned members`
|
||||
);
|
||||
|
||||
|
@ -64,7 +59,6 @@ export default function updateToSchemaVersion53(
|
|||
return true;
|
||||
};
|
||||
|
||||
db.transaction(() => {
|
||||
const allConversations = db
|
||||
.prepare(
|
||||
`
|
||||
|
@ -79,8 +73,7 @@ export default function updateToSchemaVersion53(
|
|||
.map(json => jsonToObject<ConversationType>(json));
|
||||
|
||||
logger.info(
|
||||
'updateToSchemaVersion53: About to iterate through ' +
|
||||
`${allConversations.length} conversations`
|
||||
`About to iterate through ${allConversations.length} conversations`
|
||||
);
|
||||
|
||||
let updated = 0;
|
||||
|
@ -88,9 +81,5 @@ export default function updateToSchemaVersion53(
|
|||
updated += upgradeConversation(convo) ? 1 : 0;
|
||||
}
|
||||
|
||||
logger.info(`updateToSchemaVersion53: Updated ${updated} conversations`);
|
||||
|
||||
db.pragma('user_version = 53');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion53: success!');
|
||||
logger.info(`Updated ${updated} conversations`);
|
||||
}
|
||||
|
|
|
@ -3,25 +3,10 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion54(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 54) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion54(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE unprocessed ADD COLUMN receivedAtCounter INTEGER;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 54');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion54: success!');
|
||||
}
|
||||
|
|
|
@ -8,15 +8,9 @@ import { isRecord } from '../../util/isRecord';
|
|||
import { isIterable } from '../../util/iterables';
|
||||
|
||||
export default function updateToSchemaVersion55(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 55) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
const deleteJobsInQueue = db.prepare(
|
||||
'DELETE FROM jobs WHERE queueType = $queueType'
|
||||
);
|
||||
|
@ -29,24 +23,18 @@ export default function updateToSchemaVersion55(
|
|||
const { data, id } = job;
|
||||
|
||||
if (!isRecord(data)) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion55: report spam queue job ${id} was missing valid data`
|
||||
);
|
||||
logger.warn(`report spam queue job ${id} was missing valid data`);
|
||||
return;
|
||||
}
|
||||
|
||||
const { e164, serverGuids } = data;
|
||||
if (typeof e164 !== 'string') {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion55: report spam queue job ${id} had a non-string e164`
|
||||
);
|
||||
logger.warn(`report spam queue job ${id} had a non-string e164`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isIterable(serverGuids)) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion55: report spam queue job ${id} had a non-iterable serverGuids`
|
||||
);
|
||||
logger.warn(`report spam queue job ${id} had a non-iterable serverGuids`);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -61,8 +49,4 @@ export default function updateToSchemaVersion55(
|
|||
|
||||
insertJob(db, newJob);
|
||||
});
|
||||
|
||||
db.pragma('user_version = 55');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion55: success!');
|
||||
}
|
||||
|
|
|
@ -5,18 +5,7 @@ import type { Database } from '@signalapp/sqlcipher';
|
|||
import { ReadStatus } from '../../messages/MessageReadStatus';
|
||||
import { SeenStatus } from '../../MessageSeenStatus';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion56(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 56) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion56(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
--- Add column to messages table
|
||||
|
@ -80,9 +69,4 @@ export default function updateToSchemaVersion56(
|
|||
);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 56');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion56: success!');
|
||||
}
|
||||
|
|
|
@ -3,27 +3,11 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion57(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 57) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion57(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
DELETE FROM messages
|
||||
WHERE type IS 'message-history-unsynced';
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 57');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion57: success!');
|
||||
}
|
||||
|
|
|
@ -5,18 +5,7 @@ import type { Database } from '@signalapp/sqlcipher';
|
|||
import { ReadStatus } from '../../messages/MessageReadStatus';
|
||||
import { SeenStatus } from '../../MessageSeenStatus';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion58(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 58) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion58(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
--- Promote unread status in JSON to SQL column
|
||||
|
@ -128,9 +117,4 @@ export default function updateToSchemaVersion58(
|
|||
seenStatus IS NOT 0;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 58');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion58: success!');
|
||||
}
|
||||
|
|
|
@ -3,26 +3,11 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion59(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 59) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion59(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
CREATE INDEX unprocessed_byReceivedAtCounter ON unprocessed
|
||||
(receivedAtCounter)
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 59');
|
||||
})();
|
||||
logger.info('updateToSchemaVersion59: success!');
|
||||
}
|
||||
|
|
|
@ -3,19 +3,8 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
// TODO: DESKTOP-3694
|
||||
export default function updateToSchemaVersion60(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 60) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion60(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
DROP INDEX expiring_message_by_conversation_and_received_at;
|
||||
|
@ -32,9 +21,4 @@ export default function updateToSchemaVersion60(
|
|||
WHERE isStory IS 0 AND type IS 'incoming';
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 60');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion60: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion61(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 61) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion61(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE storyDistributions DROP COLUMN avatarKey;
|
||||
|
@ -36,9 +25,4 @@ export default function updateToSchemaVersion61(
|
|||
WHERE storyDistributionListId IS NOT NULL;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 61');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion61: success!');
|
||||
}
|
||||
|
|
|
@ -3,26 +3,10 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion62(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 62) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion62(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE sendLogPayloads ADD COLUMN urgent INTEGER;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 62');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion62: success!');
|
||||
}
|
||||
|
|
|
@ -3,26 +3,10 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion63(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 63) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion63(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE unprocessed ADD COLUMN urgent INTEGER;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 63');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion63: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion64(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 64) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion64(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE preKeys
|
||||
|
@ -30,9 +19,4 @@ export default function updateToSchemaVersion64(
|
|||
CREATE INDEX signedPreKeys_ourUuid ON signedPreKeys (ourUuid);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 64');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion64: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion65(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 65) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion65(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE sticker_packs ADD COLUMN position INTEGER DEFAULT 0 NOT NULL;
|
||||
|
@ -54,9 +43,4 @@ export default function updateToSchemaVersion65(
|
|||
);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 65');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion65: success!');
|
||||
}
|
||||
|
|
|
@ -3,27 +3,11 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion66(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 66) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion66(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE sendLogPayloads
|
||||
ADD COLUMN hasPniSignatureMessage INTEGER DEFAULT 0 NOT NULL;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 66');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion66: success!');
|
||||
}
|
||||
|
|
|
@ -3,26 +3,10 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion67(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 67) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion67(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE unprocessed ADD COLUMN story INTEGER;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 67');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion67: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion68(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 68) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion68(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE messages
|
||||
|
@ -23,9 +12,4 @@ export default function updateToSchemaVersion68(
|
|||
DROP COLUMN deprecatedSourceDevice;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 68');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion68: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion69(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 69) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion69(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
DROP TABLE IF EXISTS groupCallRings;
|
||||
|
@ -25,9 +14,4 @@ export default function updateToSchemaVersion69(
|
|||
);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 69');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion69: success!');
|
||||
}
|
||||
|
|
|
@ -3,27 +3,11 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion70(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 70) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion70(db: Database): void {
|
||||
// Used in `getAllStories`.
|
||||
db.exec(
|
||||
`
|
||||
CREATE INDEX messages_by_storyId ON messages (storyId);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 70');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion70: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion71(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 71) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion71(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
--- These will be re-added below
|
||||
|
@ -115,9 +104,4 @@ export default function updateToSchemaVersion71(
|
|||
CREATE INDEX message_user_initiated ON messages (isUserInitiatedMessage);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 71');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion71: success!');
|
||||
}
|
||||
|
|
|
@ -2,18 +2,8 @@
|
|||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion72(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 72) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion72(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE messages
|
||||
|
@ -30,9 +20,4 @@ export default function updateToSchemaVersion72(
|
|||
(conversationId, type, callMode, callId);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 72');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion72: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion73(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 73) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion73(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
--- Delete deprecated notifications
|
||||
|
@ -104,9 +93,4 @@ export default function updateToSchemaVersion73(
|
|||
CREATE INDEX message_user_initiated ON messages (isUserInitiatedMessage);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 73');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion73: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion74(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 74) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion74(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
-- Previously: (isUserInitiatedMessage)
|
||||
|
@ -31,9 +20,4 @@ export default function updateToSchemaVersion74(
|
|||
);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 74');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion74: success!');
|
||||
}
|
||||
|
|
|
@ -1,25 +1,8 @@
|
|||
// Copyright 2023 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion75(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 75) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion75(): void {
|
||||
// This was previously a FTS5 migration, but we had to reorder the
|
||||
// migrations for backports.
|
||||
// See: migrations 76 and 77.
|
||||
db.pragma('user_version = 75');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion75: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion76(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 76) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion76(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
-- Re-created below
|
||||
|
@ -51,9 +40,4 @@ export default function updateToSchemaVersion76(
|
|||
received_at, sent_at) WHERE storyId IS NULL;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 76');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion76: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion77(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 77) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion77(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
-- Create FTS table with custom tokenizer from
|
||||
|
@ -36,9 +25,4 @@ export default function updateToSchemaVersion77(
|
|||
WHERE isViewOnce IS NOT 1 AND storyId IS NULL;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 77');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion77: success!');
|
||||
}
|
||||
|
|
|
@ -7,15 +7,9 @@ import type { WritableDB } from '../Interface';
|
|||
import { getJobsInQueue, insertJob } from '../Server';
|
||||
|
||||
export default function updateToSchemaVersion78(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 78) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
const deleteJobsInQueue = db.prepare(
|
||||
'DELETE FROM jobs WHERE queueType = $queueType'
|
||||
);
|
||||
|
@ -53,7 +47,7 @@ export default function updateToSchemaVersion78(
|
|||
const { data, id } = job;
|
||||
if (!isRecord(data)) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion78: ${queue.queueType} queue job ${id} was missing valid data`
|
||||
`${queue.queueType} queue job ${id} was missing valid data`
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
@ -61,23 +55,21 @@ export default function updateToSchemaVersion78(
|
|||
const { messageId } = data;
|
||||
if (typeof messageId !== 'string') {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion78: ${queue.queueType} queue job ${id} had a non-string messageId`
|
||||
`${queue.queueType} queue job ${id} had a non-string messageId`
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
const message = getMessageById.get([messageId]);
|
||||
if (!message) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion78: Unable to find message for ${queue.queueType} job ${id}`
|
||||
);
|
||||
logger.warn(`Unable to find message for ${queue.queueType} job ${id}`);
|
||||
return;
|
||||
}
|
||||
|
||||
const { conversationId } = message;
|
||||
if (typeof conversationId !== 'string') {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion78: ${queue.queueType} queue job ${id} had a non-string conversationId`
|
||||
`${queue.queueType} queue job ${id} had a non-string conversationId`
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
@ -88,7 +80,7 @@ export default function updateToSchemaVersion78(
|
|||
|
||||
if (!Array.isArray(oldReceipts)) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion78: ${queue.queueType} queue job ${id} had a non-array ${queue.jobDataKey}`
|
||||
`${queue.queueType} queue job ${id} had a non-array ${queue.jobDataKey}`
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
@ -98,7 +90,7 @@ export default function updateToSchemaVersion78(
|
|||
for (const receipt of oldReceipts) {
|
||||
if (!isRecord(receipt)) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion78: ${queue.queueType} queue job ${id} had a non-record receipt`
|
||||
`${queue.queueType} queue job ${id} had a non-record receipt`
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
@ -123,9 +115,4 @@ export default function updateToSchemaVersion78(
|
|||
insertJob(db, newJob);
|
||||
});
|
||||
}
|
||||
|
||||
db.pragma('user_version = 78');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion78: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion79(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 79) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion79(db: Database): void {
|
||||
db.exec(`
|
||||
DROP INDEX messages_hasVisualMediaAttachments;
|
||||
CREATE INDEX messages_hasVisualMediaAttachments
|
||||
|
@ -24,9 +13,4 @@ export default function updateToSchemaVersion79(
|
|||
)
|
||||
WHERE hasVisualMediaAttachments IS 1;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 79');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion79: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion80(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 80) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion80(db: Database): void {
|
||||
db.exec(`
|
||||
CREATE TABLE edited_messages(
|
||||
fromId STRING,
|
||||
|
@ -26,9 +15,4 @@ export default function updateToSchemaVersion80(
|
|||
|
||||
CREATE INDEX edited_messages_sent_at ON edited_messages (sentAt);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 80');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion80: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion81(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 81) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion81(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
--- These will be re-added below
|
||||
|
@ -110,9 +99,4 @@ export default function updateToSchemaVersion81(
|
|||
CREATE INDEX message_user_initiated ON messages (conversationId, isUserInitiatedMessage);
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 81');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion81: success!');
|
||||
}
|
||||
|
|
|
@ -3,27 +3,11 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion82(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 82) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion82(db: Database): void {
|
||||
db.exec(`
|
||||
ALTER TABLE edited_messages DROP COLUMN fromId;
|
||||
ALTER TABLE edited_messages ADD COLUMN conversationId STRING;
|
||||
|
||||
CREATE INDEX edited_messages_unread ON edited_messages (readStatus, conversationId);
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 82');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion82: success!');
|
||||
}
|
||||
|
|
|
@ -2,18 +2,8 @@
|
|||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion83(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 83) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion83(db: Database): void {
|
||||
db.exec(
|
||||
`
|
||||
ALTER TABLE messages
|
||||
|
@ -30,9 +20,4 @@ export default function updateToSchemaVersion83(
|
|||
WHERE isStory IS 0 AND readStatus IS NOT NULL;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 83');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion83: success!');
|
||||
}
|
||||
|
|
|
@ -2,18 +2,8 @@
|
|||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion84(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 84) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion84(db: Database): void {
|
||||
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
|
||||
|
@ -52,9 +42,4 @@ export default function updateToSchemaVersion84(
|
|||
AND messages.id = new.id;
|
||||
END;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 84');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion84: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion85(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 85) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion85(db: Database): void {
|
||||
db.exec(
|
||||
`CREATE TABLE kyberPreKeys(
|
||||
id STRING PRIMARY KEY NOT NULL,
|
||||
|
@ -34,9 +23,4 @@ export default function updateToSchemaVersion85(
|
|||
json = json_set(json, '$.createdAt', ${now});
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 85');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion85: success!');
|
||||
}
|
||||
|
|
|
@ -3,18 +3,7 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export default function updateToSchemaVersion86(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 86) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion86(db: Database): void {
|
||||
// The key reason for this new schema is that all of our previous schemas start with
|
||||
// conversationId. This query is meant to find all replies to a given story, no
|
||||
// matter the conversation.
|
||||
|
@ -24,9 +13,4 @@ export default function updateToSchemaVersion86(
|
|||
WHERE isStory IS 0;
|
||||
`
|
||||
);
|
||||
|
||||
db.pragma('user_version = 86');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion86: success!');
|
||||
}
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { cleanKeys } from './920-clean-more-keys';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
import { sqlFragment } from '../util';
|
||||
|
||||
// Note: for many users, this is not what ran for them as migration 87. You can see that
|
||||
|
@ -13,21 +13,20 @@ import { sqlFragment } from '../util';
|
|||
// The goal of this migration is to ensure that key cleanup happens before migration 88.
|
||||
|
||||
export default function updateToSchemaVersion87(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
logger: LoggerType,
|
||||
startingVersion: number
|
||||
): void {
|
||||
// We're checking for the version of the next migration here, not this version. We want
|
||||
// this to run if the user hasn't yet successfully run migration 88.
|
||||
if (currentVersion >= 88) {
|
||||
if (startingVersion >= 88) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
cleanKeys(
|
||||
db,
|
||||
logger,
|
||||
'updateToSchemaVersion87(cleanup)/kyberPreKeys',
|
||||
'(cleanup)/kyberPreKeys',
|
||||
sqlFragment`kyberPreKeys`,
|
||||
sqlFragment`createdAt`,
|
||||
sqlFragment`ourUuid`
|
||||
|
@ -35,7 +34,7 @@ export default function updateToSchemaVersion87(
|
|||
cleanKeys(
|
||||
db,
|
||||
logger,
|
||||
'updateToSchemaVersion87(cleanup)/preKeys',
|
||||
'(cleanup)/preKeys',
|
||||
sqlFragment`preKeys`,
|
||||
sqlFragment`createdAt`,
|
||||
sqlFragment`ourUuid`
|
||||
|
@ -43,12 +42,9 @@ export default function updateToSchemaVersion87(
|
|||
cleanKeys(
|
||||
db,
|
||||
logger,
|
||||
'updateToSchemaVersion87(cleanup)/signedPreKeys',
|
||||
'(cleanup)/signedPreKeys',
|
||||
sqlFragment`signedPreKeys`,
|
||||
sqlFragment`created_at`,
|
||||
sqlFragment`ourUuid`
|
||||
);
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion87(cleanup): success!');
|
||||
}
|
||||
|
|
|
@ -26,14 +26,9 @@ import { isNotNil } from '../../util/isNotNil';
|
|||
//
|
||||
|
||||
export default function updateToSchemaVersion88(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 88) {
|
||||
return;
|
||||
}
|
||||
|
||||
// See updateToSchemaVersion84
|
||||
const selectMentionsFromMessages = `
|
||||
SELECT messages.id, bodyRanges.value ->> 'mentionAci' as mentionAci,
|
||||
|
@ -43,7 +38,6 @@ export default function updateToSchemaVersion88(
|
|||
WHERE bodyRanges.value ->> 'mentionAci' IS NOT NULL
|
||||
`;
|
||||
|
||||
db.transaction(() => {
|
||||
// Rename all columns and re-create all indexes first.
|
||||
db.exec(`
|
||||
--
|
||||
|
@ -237,11 +231,6 @@ export default function updateToSchemaVersion88(
|
|||
AND messages.id = new.id;
|
||||
END;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 88');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion88: success!');
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -338,9 +327,7 @@ function migrateConversations(
|
|||
'UPDATE conversations SET json = $json WHERE id IS $id'
|
||||
);
|
||||
|
||||
logger.info(
|
||||
`updateToSchemaVersion88: updating ${convos.length} conversations`
|
||||
);
|
||||
logger.info(`updating ${convos.length} conversations`);
|
||||
|
||||
// Build lookup map for senderKeyInfo
|
||||
const identifierToServiceId = new Map<string, ServiceIdString>();
|
||||
|
@ -439,9 +426,7 @@ function migrateConversations(
|
|||
.map(({ identifier, ...rest }) => {
|
||||
const deviceServiceId = identifierToServiceId.get(identifier);
|
||||
if (!deviceServiceId) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion88: failed to resolve identifier ${identifier}`
|
||||
);
|
||||
logger.warn(`failed to resolve identifier ${identifier}`);
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
@ -454,10 +439,7 @@ function migrateConversations(
|
|||
|
||||
updateStmt.run({ id, json: JSON.stringify(modern) });
|
||||
} catch (error) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion88: failed to parse convo ${id} json`,
|
||||
error
|
||||
);
|
||||
logger.warn(`failed to parse convo ${id} json`, error);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -511,12 +493,9 @@ function migrateItems(db: Database, logger: LoggerType): OurServiceIds {
|
|||
[legacyAci] = JSON.parse(uuidIdJson ?? '').value.split('.', 2);
|
||||
} catch (error) {
|
||||
if (uuidIdJson) {
|
||||
logger.warn(
|
||||
'updateToSchemaVersion88: failed to parse uuid_id item',
|
||||
error
|
||||
);
|
||||
logger.warn('failed to parse uuid_id item', error);
|
||||
} else {
|
||||
logger.info('updateToSchemaVersion88: Our UUID not found');
|
||||
logger.info('Our UUID not found');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -525,9 +504,9 @@ function migrateItems(db: Database, logger: LoggerType): OurServiceIds {
|
|||
legacyPni = JSON.parse(pniJson ?? '').value;
|
||||
} catch (error) {
|
||||
if (pniJson) {
|
||||
logger.warn('updateToSchemaVersion88: failed to parse pni item', error);
|
||||
logger.warn('failed to parse pni item', error);
|
||||
} else {
|
||||
logger.info('updateToSchemaVersion88: Our PNI not found');
|
||||
logger.info('Our PNI not found');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -573,7 +552,7 @@ function migrateItems(db: Database, logger: LoggerType): OurServiceIds {
|
|||
|
||||
updateStmt.run({ id, json: JSON.stringify(data) });
|
||||
} catch (error) {
|
||||
logger.warn(`updateToSchemaVersion88: failed to parse ${id} item`, error);
|
||||
logger.warn(`failed to parse ${id} item`, error);
|
||||
}
|
||||
}
|
||||
return { aci, pni, legacyAci, legacyPni };
|
||||
|
@ -611,21 +590,18 @@ function migrateSessions(
|
|||
`
|
||||
);
|
||||
|
||||
logger.info(`updateToSchemaVersion88: updating ${sessions.length} sessions`);
|
||||
logger.info(`updating ${sessions.length} sessions`);
|
||||
for (const { id, serviceId, ourServiceId, json } of sessions) {
|
||||
const match = id.match(/^(.*):(.*)\.(.*)$/);
|
||||
if (!match) {
|
||||
logger.warn(`updateToSchemaVersion88: invalid session id ${id}`);
|
||||
logger.warn(`invalid session id ${id}`);
|
||||
continue;
|
||||
}
|
||||
let legacyData: JSONWithUnknownFields<Record<string, unknown>>;
|
||||
try {
|
||||
legacyData = JSON.parse(json);
|
||||
} catch (error) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion88: failed to parse session ${id}`,
|
||||
error
|
||||
);
|
||||
logger.warn(`failed to parse session ${id}`, error);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -642,7 +618,7 @@ function migrateSessions(
|
|||
);
|
||||
if (!newServiceId || !newOurServiceId) {
|
||||
logger.warn(
|
||||
'updateToSchemaVersion88: failed to normalize session service ids',
|
||||
'failed to normalize session service ids',
|
||||
serviceId,
|
||||
ourServiceId
|
||||
);
|
||||
|
@ -753,7 +729,7 @@ function migrateMessages(db: Database, logger: LoggerType): void {
|
|||
WHERE rowid = $rowid
|
||||
`);
|
||||
|
||||
logger.info('updateToSchemaVersion88: updating messages');
|
||||
logger.info('updating messages');
|
||||
|
||||
let totalMessages = 0;
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
|
@ -832,15 +808,12 @@ function migrateMessages(db: Database, logger: LoggerType): void {
|
|||
json: JSON.stringify(updatedMessage),
|
||||
});
|
||||
} catch (error) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion88: failed to parse message ${id} json`,
|
||||
error
|
||||
);
|
||||
logger.warn(`failed to parse message ${id} json`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logger.info(`updateToSchemaVersion88: updated ${totalMessages} messages`);
|
||||
logger.info(`updated ${totalMessages} messages`);
|
||||
}
|
||||
|
||||
// migratePreKeys works similarly to migrateSessions and does:
|
||||
|
@ -867,11 +840,11 @@ function migratePreKeys(
|
|||
WHERE id = $id
|
||||
`);
|
||||
|
||||
logger.info(`updateToSchemaVersion88: updating ${preKeys.length} ${table}`);
|
||||
logger.info(`updating ${preKeys.length} ${table}`);
|
||||
for (const { id, json } of preKeys) {
|
||||
const match = id.match(/^(.*):(.*)$/);
|
||||
if (!match) {
|
||||
logger.warn(`updateToSchemaVersion88: invalid ${table} id ${id}`);
|
||||
logger.warn(`invalid ${table} id ${id}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -879,10 +852,7 @@ function migratePreKeys(
|
|||
try {
|
||||
legacyData = JSON.parse(json);
|
||||
} catch (error) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion88: failed to parse ${table} ${id}`,
|
||||
error
|
||||
);
|
||||
logger.warn(`failed to parse ${table} ${id}`, error);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1118,7 +1088,7 @@ function migrateJobs(
|
|||
const serviceId = identifierToServiceId.get(identifier);
|
||||
if (!serviceId) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion88: failed to resolve identifier ${identifier} ` +
|
||||
`failed to resolve identifier ${identifier} ` +
|
||||
`for job ${id}/${queueType}`
|
||||
);
|
||||
continue;
|
||||
|
@ -1137,14 +1107,11 @@ function migrateJobs(
|
|||
updateStmt.run({ id, data: JSON.stringify(updatedData) });
|
||||
}
|
||||
} catch (error) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion88: failed to migrate job ${id}/${queueType} json`,
|
||||
error
|
||||
);
|
||||
logger.warn(`failed to migrate job ${id}/${queueType} json`, error);
|
||||
}
|
||||
}
|
||||
|
||||
logger.info(`updateToSchemaVersion88: updated ${updatedCount} jobs`);
|
||||
logger.info(`updated ${updatedCount} jobs`);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -94,7 +94,7 @@ function getPeerIdFromConversation(
|
|||
if (conversation.type === 'private') {
|
||||
if (conversation.serviceId == null) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion89: Private conversation (${conversation.id}) was missing serviceId (discoveredUnregisteredAt: ${conversation.discoveredUnregisteredAt})`
|
||||
`Private conversation (${conversation.id}) was missing serviceId (discoveredUnregisteredAt: ${conversation.discoveredUnregisteredAt})`
|
||||
);
|
||||
return conversation.id;
|
||||
}
|
||||
|
@ -191,15 +191,9 @@ function convertLegacyCallDetails(
|
|||
}
|
||||
|
||||
export default function updateToSchemaVersion89(
|
||||
currentVersion: number,
|
||||
db: WritableDB,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 89) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
const ourUuid = getOurUuid(db);
|
||||
|
||||
const [createTable] = sql`
|
||||
|
@ -281,7 +275,7 @@ export default function updateToSchemaVersion89(
|
|||
|
||||
if (!isObject(conversation)) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion89: Private conversation (${conversationId}) ` +
|
||||
`Private conversation (${conversationId}) ` +
|
||||
'has non-object json column'
|
||||
);
|
||||
continue;
|
||||
|
@ -387,9 +381,4 @@ export default function updateToSchemaVersion89(
|
|||
WHERE type IS 'call-history';
|
||||
`;
|
||||
db.exec(optimizeMessages);
|
||||
|
||||
db.pragma('user_version = 89');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion89: success!');
|
||||
}
|
||||
|
|
|
@ -7,16 +7,10 @@ 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')
|
||||
|
@ -33,13 +27,8 @@ export default function updateToSchemaVersion90(
|
|||
const info = db.prepare(updateQuery).run(updateParams);
|
||||
numChanges = info.changes;
|
||||
|
||||
db.pragma('user_version = 90');
|
||||
})();
|
||||
|
||||
logger.info(
|
||||
`updateToSchemaVersion90: removed screenshotData from ${numChanges} ` +
|
||||
`removed screenshotData from ${numChanges} ` +
|
||||
`message${numChanges > 1 ? 's' : ''}`
|
||||
);
|
||||
|
||||
logger.info('updateToSchemaVersion90: success!');
|
||||
}
|
||||
|
|
|
@ -10,15 +10,9 @@ import { normalizePni } from '../../types/ServiceId';
|
|||
import * as Errors from '../../types/errors';
|
||||
|
||||
export default function updateToSchemaVersion91(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 91) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
// Fix the ourServiceId column so it's generated from the right JSON field
|
||||
|
||||
db.exec(`
|
||||
|
@ -66,9 +60,8 @@ export default function updateToSchemaVersion91(
|
|||
pluck: true,
|
||||
})
|
||||
.get<number>() ?? 0;
|
||||
logger.info(`updateToSchemaVersion91: Found ${totalKeys} keys`);
|
||||
logger.info(`Found ${totalKeys} keys`);
|
||||
if (totalKeys < 1000) {
|
||||
db.pragma('user_version = 91');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -84,14 +77,10 @@ export default function updateToSchemaVersion91(
|
|||
const pniData = JSON.parse(pniJson ?? '');
|
||||
pni = normalizePni(pniData.value, 'updateToSchemaVersion91');
|
||||
} catch (error) {
|
||||
db.pragma('user_version = 91');
|
||||
if (pniJson) {
|
||||
logger.warn(
|
||||
'updateToSchemaVersion91: PNI found but did not parse',
|
||||
Errors.toLogFormat(error)
|
||||
);
|
||||
logger.warn('PNI found but did not parse', Errors.toLogFormat(error));
|
||||
} else {
|
||||
logger.info('updateToSchemaVersion91: Our PNI not found');
|
||||
logger.info('Our PNI not found');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -105,7 +94,7 @@ export default function updateToSchemaVersion91(
|
|||
pluck: true,
|
||||
})
|
||||
.get(beforeParams);
|
||||
logger.info(`updateToSchemaVersion91: Found ${beforeKeys} preKeys for PNI`);
|
||||
logger.info(`Found ${beforeKeys} preKeys for PNI`);
|
||||
|
||||
// Create index to help us with all these queries
|
||||
|
||||
|
@ -117,7 +106,7 @@ export default function updateToSchemaVersion91(
|
|||
CREATE INDEX preKeys_date
|
||||
ON preKeys (ourServiceId, createdAt);
|
||||
`);
|
||||
logger.info('updateToSchemaVersion91: Temporary index created');
|
||||
logger.info('Temporary index created');
|
||||
|
||||
// Fetch 500th-oldest timestamp for PNI
|
||||
|
||||
|
@ -136,9 +125,7 @@ export default function updateToSchemaVersion91(
|
|||
pluck: true,
|
||||
})
|
||||
.get(oldParams);
|
||||
logger.info(
|
||||
`updateToSchemaVersion91: Found 500th-oldest timestamp: ${oldBoundary}`
|
||||
);
|
||||
logger.info(`Found 500th-oldest timestamp: ${oldBoundary}`);
|
||||
|
||||
// Fetch 500th-newest timestamp for PNI
|
||||
|
||||
|
@ -157,9 +144,7 @@ export default function updateToSchemaVersion91(
|
|||
pluck: true,
|
||||
})
|
||||
.get(newParams);
|
||||
logger.info(
|
||||
`updateToSchemaVersion91: Found 500th-newest timestamp: ${newBoundary}`
|
||||
);
|
||||
logger.info(`Found 500th-newest timestamp: ${newBoundary}`);
|
||||
|
||||
// Delete everything in between for PNI
|
||||
|
||||
|
@ -179,9 +164,9 @@ export default function updateToSchemaVersion91(
|
|||
const preparedQuery = db.prepare(deleteQuery);
|
||||
do {
|
||||
result = preparedQuery.run(deleteParams);
|
||||
logger.info(`updateToSchemaVersion91: Deleted ${result.changes} items`);
|
||||
logger.info(`Deleted ${result.changes} items`);
|
||||
} while (result.changes > 0);
|
||||
logger.info('updateToSchemaVersion91: Delete is complete!');
|
||||
logger.info('Delete is complete!');
|
||||
|
||||
// Get updated count for PNI
|
||||
|
||||
|
@ -195,17 +180,10 @@ export default function updateToSchemaVersion91(
|
|||
pluck: true,
|
||||
})
|
||||
.get(afterParams);
|
||||
logger.info(
|
||||
`updateToSchemaVersion91: Found ${afterCount} preKeys for PNI after delete`
|
||||
);
|
||||
logger.info(`Found ${afterCount} preKeys for PNI after delete`);
|
||||
|
||||
db.exec(`
|
||||
DROP INDEX preKeys_date;
|
||||
ALTER TABLE preKeys DROP COLUMN createdAt;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 91');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion91: success!');
|
||||
}
|
||||
|
|
|
@ -11,22 +11,14 @@ import { sql, sqlFragment } from '../util';
|
|||
import { normalizePni } from '../../types/ServiceId';
|
||||
import * as Errors from '../../types/errors';
|
||||
|
||||
export const version = 920;
|
||||
|
||||
export function updateToSchemaVersion920(
|
||||
currentVersion: number,
|
||||
export default function updateToSchemaVersion920(
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 920) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
): 'vacuum' {
|
||||
cleanKeys(
|
||||
db,
|
||||
logger,
|
||||
'updateToSchemaVersion920/kyberPreKeys',
|
||||
'kyberPreKeys',
|
||||
sqlFragment`kyberPreKeys`,
|
||||
sqlFragment`createdAt`,
|
||||
sqlFragment`ourServiceId`
|
||||
|
@ -34,24 +26,15 @@ export function updateToSchemaVersion920(
|
|||
cleanKeys(
|
||||
db,
|
||||
logger,
|
||||
'updateToSchemaVersion920/signedPreKeys',
|
||||
'signedPreKeys',
|
||||
sqlFragment`signedPreKeys`,
|
||||
sqlFragment`created_at`,
|
||||
sqlFragment`ourServiceId`
|
||||
);
|
||||
|
||||
logger.info('updateToSchemaVersion920: Done with deletions');
|
||||
logger.info('Done with deletions, starting vacuum...');
|
||||
|
||||
db.pragma('user_version = 920');
|
||||
})();
|
||||
|
||||
logger.info(
|
||||
'updateToSchemaVersion920: user_version set to 920. Starting vacuum...'
|
||||
);
|
||||
db.exec('VACUUM;');
|
||||
logger.info('updateToSchemaVersion920: Vacuum complete.');
|
||||
|
||||
logger.info('updateToSchemaVersion920: success!');
|
||||
return 'vacuum';
|
||||
}
|
||||
|
||||
export function cleanKeys(
|
||||
|
|
|
@ -1,26 +1,6 @@
|
|||
// Copyright 2023 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 930;
|
||||
|
||||
export function updateToSchemaVersion930(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 930) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion930(): void {
|
||||
// This was a migration that enabled 'secure-delete' in FTS
|
||||
|
||||
db.pragma('user_version = 930');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion930: success!');
|
||||
}
|
||||
|
|
|
@ -1,25 +1,6 @@
|
|||
// Copyright 2023 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 940;
|
||||
|
||||
export function updateToSchemaVersion940(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 940) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion940(): void {
|
||||
// This was a migration that disabled secure-delete and rebuilt the index
|
||||
db.pragma('user_version = 940');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion940: success!');
|
||||
}
|
||||
|
|
|
@ -1,25 +1,6 @@
|
|||
// Copyright 2023 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 950;
|
||||
|
||||
export function updateToSchemaVersion950(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 950) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion950(): void {
|
||||
// This was a migration that enable secure-delete
|
||||
db.pragma('user_version = 950');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion950: success!');
|
||||
}
|
||||
|
|
|
@ -13,21 +13,13 @@ import { normalizePni } from '../../types/ServiceId';
|
|||
import { normalizeAci } from '../../util/normalizeAci';
|
||||
import type { JSONWithUnknownFields } from '../../types/Util';
|
||||
|
||||
export const version = 960;
|
||||
|
||||
export function updateToSchemaVersion960(
|
||||
currentVersion: number,
|
||||
export default function updateToSchemaVersion960(
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 960) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
const ourServiceIds = migratePni(db, logger);
|
||||
if (!ourServiceIds) {
|
||||
logger.info('updateToSchemaVersion960: not running, pni is normalized');
|
||||
logger.info('not running, pni is normalized');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -46,11 +38,6 @@ export function updateToSchemaVersion960(
|
|||
migratePreKeys(db, 'preKeys', ourServiceIds, logger);
|
||||
migratePreKeys(db, 'signedPreKeys', ourServiceIds, logger);
|
||||
migratePreKeys(db, 'kyberPreKeys', ourServiceIds, logger);
|
||||
|
||||
db.pragma('user_version = 960');
|
||||
})();
|
||||
|
||||
logger.info('updateToSchemaVersion960: success!');
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -101,12 +88,9 @@ function migratePni(
|
|||
[aci] = JSON.parse(uuidIdJson ?? '').value.split('.', 2);
|
||||
} catch (error) {
|
||||
if (uuidIdJson) {
|
||||
logger.warn(
|
||||
'updateToSchemaVersion960: failed to parse uuid_id item',
|
||||
error
|
||||
);
|
||||
logger.warn('failed to parse uuid_id item', error);
|
||||
} else {
|
||||
logger.info('updateToSchemaVersion960: Our ACI not found');
|
||||
logger.info('Our ACI not found');
|
||||
}
|
||||
}
|
||||
if (!aci) {
|
||||
|
@ -118,9 +102,9 @@ function migratePni(
|
|||
legacyPni = JSON.parse(pniJson ?? '').value;
|
||||
} catch (error) {
|
||||
if (pniJson) {
|
||||
logger.warn('updateToSchemaVersion960: failed to parse pni item', error);
|
||||
logger.warn('failed to parse pni item', error);
|
||||
} else {
|
||||
logger.info('updateToSchemaVersion960: Our PNI not found');
|
||||
logger.info('Our PNI not found');
|
||||
}
|
||||
}
|
||||
if (!legacyPni) {
|
||||
|
@ -164,10 +148,7 @@ function migratePni(
|
|||
|
||||
updateStmt.run({ id, json: JSON.stringify(data) });
|
||||
} catch (error) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion960: failed to parse ${id} item`,
|
||||
error
|
||||
);
|
||||
logger.warn(`failed to parse ${id} item`, error);
|
||||
}
|
||||
}
|
||||
return {
|
||||
|
@ -200,11 +181,11 @@ function migratePreKeys(
|
|||
WHERE id = $id
|
||||
`);
|
||||
|
||||
logger.info(`updateToSchemaVersion960: updating ${preKeys.length} ${table}`);
|
||||
logger.info(`updating ${preKeys.length} ${table}`);
|
||||
for (const { id, json } of preKeys) {
|
||||
const match = id.match(/^(.*):(.*)$/);
|
||||
if (!match) {
|
||||
logger.warn(`updateToSchemaVersion960: invalid ${table} id ${id}`);
|
||||
logger.warn(`invalid ${table} id ${id}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -212,20 +193,13 @@ function migratePreKeys(
|
|||
try {
|
||||
legacyData = JSON.parse(json);
|
||||
} catch (error) {
|
||||
logger.warn(
|
||||
`updateToSchemaVersion960: failed to parse ${table} ${id}`,
|
||||
error
|
||||
);
|
||||
logger.warn(`failed to parse ${table} ${id}`, error);
|
||||
continue;
|
||||
}
|
||||
|
||||
const [, ourServiceId, keyId] = match;
|
||||
if (ourServiceId !== legacyPni) {
|
||||
logger.warn(
|
||||
'updateToSchemaVersion960: unexpected ourServiceId',
|
||||
ourServiceId,
|
||||
legacyPni
|
||||
);
|
||||
logger.warn('unexpected ourServiceId', ourServiceId, legacyPni);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,29 +2,9 @@
|
|||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import type { Database } from '@signalapp/sqlcipher';
|
||||
import type { LoggerType } from '../../types/Logging';
|
||||
|
||||
export const version = 970;
|
||||
|
||||
export function updateToSchemaVersion970(
|
||||
currentVersion: number,
|
||||
db: Database,
|
||||
logger: LoggerType
|
||||
): void {
|
||||
if (currentVersion >= 970) {
|
||||
return;
|
||||
}
|
||||
|
||||
const start = Date.now();
|
||||
db.transaction(() => {
|
||||
export default function updateToSchemaVersion970(db: Database): void {
|
||||
db.exec(`
|
||||
INSERT INTO messages_fts(messages_fts) VALUES ('optimize');
|
||||
`);
|
||||
db.pragma('user_version = 970');
|
||||
})();
|
||||
|
||||
const duration = Date.now() - start;
|
||||
logger.info(
|
||||
`updateToSchemaVersion970: success! fts optimize took ${duration}ms`
|
||||
);
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue