CREATE TABLE "entry_translations" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "entry_id" uuid NOT NULL, "target_language_code" varchar(10) NOT NULL, "translation" text NOT NULL, "sense_hint" text, "cefr_level" varchar(2), "difficulty" varchar(20), "source" varchar(50) DEFAULT 'kaikki' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "unique_translation" UNIQUE("entry_id","target_language_code","translation"), CONSTRAINT "target_language_code_check" CHECK ("entry_translations"."target_language_code" IN ('en', 'it', 'de', 'fr', 'es')), CONSTRAINT "cefr_check" CHECK ("entry_translations"."cefr_level" IS NULL OR "entry_translations"."cefr_level" IN ('A1', 'A2', 'B1', 'B2', 'C1', 'C2')), CONSTRAINT "difficulty_check" CHECK ("entry_translations"."difficulty" IS NULL OR "entry_translations"."difficulty" IN ('easy', 'intermediate', 'hard')) ); --> statement-breakpoint CREATE TABLE "vocabulary_entries" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "headword" text NOT NULL, "language_code" varchar(10) NOT NULL, "pos" varchar(20) NOT NULL, "sense_index" smallint DEFAULT 0 NOT NULL, "gloss" text, "examples" text[] DEFAULT '{}' NOT NULL, "cefr_level" varchar(2), "difficulty" varchar(20), "source" varchar(50) DEFAULT 'kaikki' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "unique_entry" UNIQUE("headword","language_code","pos","sense_index"), CONSTRAINT "language_code_check" CHECK ("vocabulary_entries"."language_code" IN ('en', 'it', 'de', 'fr', 'es')), CONSTRAINT "pos_check" CHECK ("vocabulary_entries"."pos" IN ('noun', 'verb', 'adjective', 'adverb')), CONSTRAINT "cefr_check" CHECK ("vocabulary_entries"."cefr_level" IS NULL OR "vocabulary_entries"."cefr_level" IN ('A1', 'A2', 'B1', 'B2', 'C1', 'C2')), CONSTRAINT "difficulty_check" CHECK ("vocabulary_entries"."difficulty" IS NULL OR "vocabulary_entries"."difficulty" IN ('easy', 'intermediate', 'hard')) ); --> statement-breakpoint DROP TABLE "deck_terms" CASCADE;--> statement-breakpoint DROP TABLE "decks" CASCADE;--> statement-breakpoint DROP TABLE "term_examples" CASCADE;--> statement-breakpoint DROP TABLE "term_glosses" CASCADE;--> statement-breakpoint DROP TABLE "term_topics" CASCADE;--> statement-breakpoint DROP TABLE "terms" CASCADE;--> statement-breakpoint DROP TABLE "topics" CASCADE;--> statement-breakpoint DROP TABLE "translations" CASCADE;--> statement-breakpoint ALTER TABLE "entry_translations" ADD CONSTRAINT "entry_translations_entry_id_vocabulary_entries_id_fk" FOREIGN KEY ("entry_id") REFERENCES "public"."vocabulary_entries"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint CREATE INDEX "idx_translations_target_lang" ON "entry_translations" USING btree ("target_language_code","difficulty","entry_id");--> statement-breakpoint CREATE INDEX "idx_entries_lang_pos" ON "vocabulary_entries" USING btree ("language_code","pos","difficulty");