CREATE TABLE "cards" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "deck_id" uuid NOT NULL, "front" text NOT NULL, "back" text NOT NULL, "state" smallint DEFAULT 0 NOT NULL, "due" timestamp with time zone DEFAULT now() NOT NULL, "stability" real DEFAULT 0 NOT NULL, "difficulty" real DEFAULT 0 NOT NULL, "elapsed_days" integer DEFAULT 0 NOT NULL, "scheduled_days" integer DEFAULT 0 NOT NULL, "reps" integer DEFAULT 0 NOT NULL, "lapses" integer DEFAULT 0 NOT NULL, "last_review" timestamp with time zone, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, "deleted_at" timestamp with time zone, "sync_version" integer DEFAULT 0 NOT NULL ); --> statement-breakpoint CREATE TABLE "decks" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "user_id" uuid NOT NULL, "name" varchar(255) NOT NULL, "description" text, "new_cards_per_day" integer DEFAULT 20 NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, "deleted_at" timestamp with time zone, "sync_version" integer DEFAULT 0 NOT NULL ); --> statement-breakpoint CREATE TABLE "review_logs" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "card_id" uuid NOT NULL, "user_id" uuid NOT NULL, "rating" smallint NOT NULL, "state" smallint NOT NULL, "scheduled_days" integer NOT NULL, "elapsed_days" integer NOT NULL, "reviewed_at" timestamp with time zone DEFAULT now() NOT NULL, "duration_ms" integer, "sync_version" integer DEFAULT 0 NOT NULL ); --> statement-breakpoint CREATE TABLE "users" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "username" varchar(255) NOT NULL, "password_hash" varchar(255) NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "users_username_unique" UNIQUE("username") ); --> statement-breakpoint ALTER TABLE "cards" ADD CONSTRAINT "cards_deck_id_decks_id_fk" FOREIGN KEY ("deck_id") REFERENCES "public"."decks"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "decks" ADD CONSTRAINT "decks_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "review_logs" ADD CONSTRAINT "review_logs_card_id_cards_id_fk" FOREIGN KEY ("card_id") REFERENCES "public"."cards"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint ALTER TABLE "review_logs" ADD CONSTRAINT "review_logs_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;