diff --git a/src/modules/cards/infrastructure/repositories/schema/card.sql.ts b/src/modules/cards/infrastructure/repositories/schema/card.sql.ts index 3503d2a4..f2bc42b0 100644 --- a/src/modules/cards/infrastructure/repositories/schema/card.sql.ts +++ b/src/modules/cards/infrastructure/repositories/schema/card.sql.ts @@ -5,6 +5,7 @@ import { jsonb, uuid, integer, + index, type PgTableWithColumns, } from 'drizzle-orm/pg-core'; import { publishedRecords } from './publishedRecord.sql'; @@ -22,4 +23,12 @@ export const cards: PgTableWithColumns = pgTable('cards', { libraryCount: integer('library_count').notNull().default(0), createdAt: timestamp('created_at').notNull().defaultNow(), updatedAt: timestamp('updated_at').notNull().defaultNow(), +}, (table) => { + return { + // Critical for findUsersUrlCardByUrl queries + authorUrlIdx: index('cards_author_url_idx').on(table.authorId, table.url), + + // For general card queries by author + authorIdIdx: index('cards_author_id_idx').on(table.authorId), + }; }); diff --git a/src/modules/cards/infrastructure/repositories/schema/collection.sql.ts b/src/modules/cards/infrastructure/repositories/schema/collection.sql.ts index 07c1b1ac..936e9a58 100644 --- a/src/modules/cards/infrastructure/repositories/schema/collection.sql.ts +++ b/src/modules/cards/infrastructure/repositories/schema/collection.sql.ts @@ -5,6 +5,7 @@ import { uuid, boolean, integer, + index, } from 'drizzle-orm/pg-core'; import { publishedRecords } from './publishedRecord.sql'; import { cards } from './card.sql'; @@ -21,6 +22,14 @@ export const collections = pgTable('collections', { publishedRecordId: uuid('published_record_id').references( () => publishedRecords.id, ), +}, (table) => { + return { + // Critical for all collection queries by user + authorIdIdx: index('collections_author_id_idx').on(table.authorId), + + // For paginated collection listings (most common sort) + authorUpdatedAtIdx: index('collections_author_updated_at_idx').on(table.authorId, table.updatedAt), + }; }); // Join table for collection collaborators @@ -46,4 +55,10 @@ export const collectionCards = pgTable('collection_cards', { publishedRecordId: uuid('published_record_id').references( () => publishedRecords.id, ), +}, (table) => { + return { + // Critical for getCollectionsContainingCardForUser queries + cardIdIdx: index('collection_cards_card_id_idx').on(table.cardId), + collectionIdIdx: index('collection_cards_collection_id_idx').on(table.collectionId), + }; });