signal-desktop/ts/sql/migrations/1020-self-merges.ts

44 lines
1.1 KiB
TypeScript

// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { LoggerType } from '../../types/Logging.js';
import { sql } from '../util.js';
import type { WritableDB } from '../Interface.js';
import { getOurUuid } from './41-uuid-keys.js';
export default function updateToSchemaVersion1020(
db: WritableDB,
logger: LoggerType
): void {
const ourAci = getOurUuid(db);
if (ourAci == null) {
logger.info('not linked');
return;
}
const [selectQuery, selectParams] = sql`
SELECT id FROM conversations
WHERE serviceId IS ${ourAci}
`;
const ourConversationId = db
.prepare(selectQuery, {
pluck: true,
})
.get(selectParams);
if (ourConversationId == null) {
logger.error('no conversation');
return;
}
const [deleteQuery, deleteParams] = sql`
DELETE FROM messages
WHERE
conversationId IS ${ourConversationId} AND
type IS 'conversation-merge'
`;
const { changes } = db.prepare(deleteQuery).run(deleteParams);
if (changes !== 0) {
logger.warn(`removed ${changes} self merges`);
}
}