diff --git a/src/lib/features/instance-stats/getLicensedUsers.e2e.test.ts b/src/lib/features/instance-stats/getLicensedUsers.e2e.test.ts index 3e96eb3484..efbbcf6855 100644 --- a/src/lib/features/instance-stats/getLicensedUsers.e2e.test.ts +++ b/src/lib/features/instance-stats/getLicensedUsers.e2e.test.ts @@ -16,7 +16,7 @@ const mockUser = (deletedDaysAgo: number | null, uniqueId: number) => { ? new Date(Date.now() - deletedDaysAgo * 24 * 60 * 60 * 1000) : null; return { - email: `${uniqueId}.user@example.com`, + email: deletedAt === null ? `${uniqueId}.user@example.com` : null, email_hash: `${uniqueId}.user@example.com`, deleted_at: deletedAt, }; diff --git a/src/migrations/20250922151744-amend-deleted-at.js b/src/migrations/20250922151744-amend-deleted-at.js new file mode 100644 index 0000000000..d9f28c94c8 --- /dev/null +++ b/src/migrations/20250922151744-amend-deleted-at.js @@ -0,0 +1,25 @@ + +exports.up = (db, callback) => { + db.runSql( + ` + UPDATE users + SET deleted_at = NULL + WHERE deleted_at IS NOT NULL and length(email) > 0; + + ALTER TABLE users + ADD CONSTRAINT deleted_at_requires_email_null + CHECK (deleted_at IS NULL OR email IS NULL); + `, + callback, + ); +}; + +exports.down = (db, callback) => { + db.runSql( + ` + ALTER TABLE users + DROP CONSTRAINT deleted_at_requires_email_null; + `, + callback, + ); +};