diff --git a/ts/sql/migrations/43-gv2-uuid.ts b/ts/sql/migrations/43-gv2-uuid.ts index 164fccd260f..3f902597179 100644 --- a/ts/sql/migrations/43-gv2-uuid.ts +++ b/ts/sql/migrations/43-gv2-uuid.ts @@ -5,7 +5,6 @@ import type { Database } from 'better-sqlite3'; import { omit } from 'lodash'; import type { LoggerType } from '../../types/Logging'; -import { UUID } from '../../types/UUID'; import type { UUIDStringType } from '../../types/UUID'; import { isNotNil } from '../../util/isNotNil'; import { assert } from '../../util/assert'; @@ -265,11 +264,11 @@ export default function updateToSchemaVersion43( } changedDetails = true; - let newValue: UUIDStringType | null = getConversationUuid.get({ + const newValue: UUIDStringType | null = getConversationUuid.get({ conversationId: oldValue, }); - if (key === 'inviter') { - newValue = newValue ?? UUID.cast(oldValue); + if (key === 'inviter' && !newValue) { + continue; } if (!newValue) { logger.warn( @@ -302,12 +301,11 @@ export default function updateToSchemaVersion43( } if (sourceUuid) { - const newValue: UUIDStringType = - getConversationUuid.get({ - conversationId: sourceUuid, - }) ?? UUID.cast(sourceUuid); + const newValue: UUIDStringType | null = getConversationUuid.get({ + conversationId: sourceUuid, + }); - if (newValue !== sourceUuid) { + if (newValue) { result = { ...result, sourceUuid: newValue, diff --git a/ts/test-node/sql_migrations_test.ts b/ts/test-node/sql_migrations_test.ts index 83b2eb1f736..2546c0b3b3e 100644 --- a/ts/test-node/sql_migrations_test.ts +++ b/ts/test-node/sql_migrations_test.ts @@ -769,5 +769,32 @@ describe('SQL migrations test', () => { sourceUuid: UUID_A, }); }); + + it('should not fail on invalid UUIDs', () => { + updateToVersion(42); + + db.exec( + ` + INSERT INTO messages + (id, json) + VALUES + ('m', '${JSON.stringify({ + id: 'm', + sourceUuid: 'ffffffff-ffff-ffff-ffff-ffffffffffff', + })}'); + ` + ); + + updateToVersion(43); + + const { json: messageMJSON } = db + .prepare('SELECT json FROM messages WHERE id = "m"') + .get(); + + assert.deepStrictEqual(JSON.parse(messageMJSON), { + id: 'm', + sourceUuid: 'ffffffff-ffff-ffff-ffff-ffffffffffff', + }); + }); }); });