diff --git a/packages/db/src/db/schema.ts b/packages/db/src/db/schema.ts index 89dfee9..4babe8a 100644 --- a/packages/db/src/db/schema.ts +++ b/packages/db/src/db/schema.ts @@ -132,6 +132,7 @@ export const decks = pgTable( id: uuid().primaryKey().defaultRandom(), name: text().notNull(), description: text(), + source_language: varchar({ length: 10 }).notNull(), validated_for_languages: varchar({ length: 10 }) .array() .notNull() @@ -140,11 +141,19 @@ export const decks = pgTable( created_at: timestamp({ withTimezone: true }).defaultNow().notNull(), }, (table) => [ + check( + "source_language_check", + sql`${table.source_language} IN (${sql.raw(SUPPORTED_LANGUAGE_CODES.map((l) => `'${l}'`).join(", "))})`, + ), check( "validated_languages_check", sql`validated_for_languages <@ ARRAY[${sql.raw(SUPPORTED_LANGUAGE_CODES.map((l) => `'${l}'`).join(", "))}]::varchar[]`, ), - unique("unique_deck_name").on(table.name), + check( + "validated_languages_excludes_source", + sql`NOT (${table.source_language} = ANY(validated_for_languages))`, + ), + unique("unique_deck_name").on(table.name, table.source_language), ], );