From 04dcc8121d941030e29b088ee06a24bf748050b1 Mon Sep 17 00:00:00 2001 From: Jake Bromberg Date: Sat, 21 Feb 2026 09:04:32 -0800 Subject: [PATCH 1/2] fix: remove redundant .unique() on anonymous_devices.deviceId The column had both .unique() and an explicit uniqueIndex, creating two identical indexes. Kept the explicit uniqueIndex for naming control. Co-authored-by: Cursor --- shared/database/src/schema.ts | 2 +- .../database/schema.anonymous-devices.test.ts | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 tests/unit/database/schema.anonymous-devices.test.ts diff --git a/shared/database/src/schema.ts b/shared/database/src/schema.ts index 7a9bfc5..5fd485d 100644 --- a/shared/database/src/schema.ts +++ b/shared/database/src/schema.ts @@ -550,7 +550,7 @@ export const anonymous_devices = pgTable( 'anonymous_devices', { id: serial('id').primaryKey(), - deviceId: varchar('device_id', { length: 255 }).notNull().unique(), + deviceId: varchar('device_id', { length: 255 }).notNull(), createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), lastSeenAt: timestamp('last_seen_at', { withTimezone: true }).notNull().defaultNow(), blocked: boolean('blocked').notNull().default(false), diff --git a/tests/unit/database/schema.anonymous-devices.test.ts b/tests/unit/database/schema.anonymous-devices.test.ts new file mode 100644 index 0000000..7dd5365 --- /dev/null +++ b/tests/unit/database/schema.anonymous-devices.test.ts @@ -0,0 +1,26 @@ +import { getTableConfig } from 'drizzle-orm/pg-core'; +import { anonymous_devices } from '../../../shared/database/src/schema'; + +describe('anonymous_devices schema', () => { + it('should have exactly one uniqueness constraint on device_id', () => { + const config = getTableConfig(anonymous_devices); + const col = anonymous_devices.deviceId; + + let uniqueCount = 0; + + // .unique() on the column sets isUnique at the column level + if (col.isUnique) uniqueCount++; + + // uniqueIndex() in the table's third argument appears in config.indexes + const uniqueIndexesOnDeviceId = config.indexes.filter( + (idx) => + idx.config.unique && + idx.config.columns.some( + (c) => 'name' in c && c.name === 'device_id' + ) + ); + uniqueCount += uniqueIndexesOnDeviceId.length; + + expect(uniqueCount).toBe(1); + }); +}); From 19373eb208d1055288a8d3951187ce3cd01e9235 Mon Sep 17 00:00:00 2001 From: Jake Bromberg Date: Fri, 27 Feb 2026 09:48:27 -0800 Subject: [PATCH 2/2] style: format files with Prettier --- tests/unit/database/schema.anonymous-devices.test.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/unit/database/schema.anonymous-devices.test.ts b/tests/unit/database/schema.anonymous-devices.test.ts index 7dd5365..ca630d9 100644 --- a/tests/unit/database/schema.anonymous-devices.test.ts +++ b/tests/unit/database/schema.anonymous-devices.test.ts @@ -13,11 +13,7 @@ describe('anonymous_devices schema', () => { // uniqueIndex() in the table's third argument appears in config.indexes const uniqueIndexesOnDeviceId = config.indexes.filter( - (idx) => - idx.config.unique && - idx.config.columns.some( - (c) => 'name' in c && c.name === 'device_id' - ) + (idx) => idx.config.unique && idx.config.columns.some((c) => 'name' in c && c.name === 'device_id') ); uniqueCount += uniqueIndexesOnDeviceId.length;