CREATE SCHEMA "animaldex"; --> statement-breakpoint CREATE SCHEMA "auth"; --> statement-breakpoint CREATE SCHEMA "cs"; --> statement-breakpoint CREATE SCHEMA "games"; --> statement-breakpoint CREATE SCHEMA "house"; --> statement-breakpoint CREATE SCHEMA "meta"; --> statement-breakpoint CREATE SCHEMA "money"; --> statement-breakpoint CREATE SCHEMA "ref"; --> statement-breakpoint CREATE SCHEMA "site"; --> statement-breakpoint CREATE TYPE "site"."blog_article_status" AS ENUM('draft', 'published');--> statement-breakpoint CREATE TYPE "ref"."availability" AS ENUM('catchable', 'trade_only', 'transfer_only', 'event_only', 'unknown', 'evolve', 'breed');--> statement-breakpoint CREATE TABLE "auth"."account" ( "id" text PRIMARY KEY, "account_id" text NOT NULL, "issuer" text NOT NULL, "provider_id" text NOT NULL, "user_id" text NOT NULL, "access_token" text, "refresh_token" text, "id_token" text, "access_token_expires_at" timestamp with time zone, "refresh_token_expires_at" timestamp with time zone, "scope" text, "password" text, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone NOT NULL ); --> statement-breakpoint CREATE TABLE "auth"."session" ( "id" text PRIMARY KEY, "expires_at" timestamp with time zone NOT NULL, "token" text NOT NULL UNIQUE, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone NOT NULL, "ip_address" text, "user_agent" text, "user_id" text NOT NULL ); --> statement-breakpoint CREATE TABLE "auth"."user" ( "id" text PRIMARY KEY, "name" text NOT NULL, "role" text DEFAULT 'user' NOT NULL, "email" text NOT NULL UNIQUE, "email_verified" boolean DEFAULT false NOT NULL, "image" text, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "auth"."verification" ( "id" text PRIMARY KEY, "identifier" text NOT NULL, "value" text NOT NULL, "expires_at" timestamp with time zone NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "site"."blog_articles" ( "id" serial PRIMARY KEY, "title" text NOT NULL, "slug" text NOT NULL UNIQUE, "content" text DEFAULT '' NOT NULL, "tags" text[] DEFAULT '{}'::text[] NOT NULL, "status" "site"."blog_article_status" DEFAULT 'draft'::"site"."blog_article_status" NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "site"."tasks" ( "id" serial PRIMARY KEY, "name" text NOT NULL, "current_points" integer DEFAULT 0 NOT NULL, "total_points" integer DEFAULT 1 NOT NULL, "notes" text, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "site"."task_topics" ( "id" serial PRIMARY KEY, "task_id" integer NOT NULL, "topic_id" integer NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "task_topics_task_id_topic_id_unique" UNIQUE("task_id","topic_id") ); --> statement-breakpoint CREATE TABLE "site"."topics" ( "id" serial PRIMARY KEY, "name" text NOT NULL, "emoji" text, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "games"."catch_em_all_settings" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL UNIQUE, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_games" ( "id" serial PRIMARY KEY, "source_id" integer UNIQUE, "slug" text UNIQUE, "name" text NOT NULL, "generation" integer DEFAULT 1 NOT NULL, "sort_order" integer DEFAULT 0 NOT NULL, "breeding" boolean DEFAULT true NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "ref"."pokemon" ( "id" serial PRIMARY KEY, "number" integer NOT NULL UNIQUE, "generation" integer DEFAULT 1 NOT NULL, "name" text NOT NULL, "type1" text NOT NULL, "type2" text, "hp" integer DEFAULT 0 NOT NULL, "attack" integer DEFAULT 0 NOT NULL, "defense" integer DEFAULT 0 NOT NULL, "special_attack" integer DEFAULT 0 NOT NULL, "special_defense" integer DEFAULT 0 NOT NULL, "speed" integer DEFAULT 0 NOT NULL, "evolves_from" integer, "evolution_chain" integer, "is_baby" boolean DEFAULT false NOT NULL, "is_legendary" boolean DEFAULT false NOT NULL, "is_mythical" boolean DEFAULT false NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_encounters" ( "id" serial PRIMARY KEY, "pokemon_id" integer NOT NULL, "game_id" integer NOT NULL, "location_id" integer NOT NULL, "area" text, "method" text NOT NULL, "min_level" integer, "max_level" integer, "rarity" integer, "form" text, "conditions" text[] DEFAULT '{}'::text[] NOT NULL, "note" text, "source" text DEFAULT 'pokeapi' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_evolutions" ( "id" serial PRIMARY KEY, "from_pokemon_id" integer NOT NULL, "to_pokemon_id" integer NOT NULL, "game_id" integer NOT NULL, "method" text NOT NULL, "source" text DEFAULT 'pokeapi' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "pokemon_evolutions_from_pokemon_id_to_pokemon_id_game_id_method_unique" UNIQUE("from_pokemon_id","to_pokemon_id","game_id","method") ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_game_entries" ( "id" serial PRIMARY KEY, "pokemon_id" integer NOT NULL, "game_id" integer NOT NULL, "availability" "ref"."availability" DEFAULT 'catchable'::"ref"."availability" NOT NULL, "note" text, "source" text DEFAULT 'pokeapi' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "pokemon_game_entries_pokemon_id_game_id_unique" UNIQUE("pokemon_id","game_id") ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_locations" ( "id" serial PRIMARY KEY, "source_id" integer UNIQUE, "slug" text NOT NULL, "name" text NOT NULL, "region" text, "description" text, "image_key" text, "image_credit" text, "source" text DEFAULT 'pokeapi' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "games"."catch_em_all_entries" ( "id" serial PRIMARY KEY, "pokemon_game_entry_id" integer NOT NULL, "user_id" text NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "catch_em_all_entries_pokemon_game_entry_id_user_id_unique" UNIQUE("pokemon_game_entry_id","user_id") ); --> statement-breakpoint CREATE TABLE "games"."catch_em_all_games" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "game_id" integer NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "catch_em_all_games_user_id_game_id_unique" UNIQUE("user_id","game_id") ); --> statement-breakpoint CREATE TABLE "ref"."tracker_games" ( "id" serial PRIMARY KEY, "slug" text NOT NULL UNIQUE, "franchise" text NOT NULL, "name" text NOT NULL, "short_name" text NOT NULL, "release_year" integer, "sort_order" integer DEFAULT 0 NOT NULL, "rules" jsonb NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "ref"."tracker_items" ( "id" serial PRIMARY KEY, "game_id" integer NOT NULL, "key" text NOT NULL, "kind" text NOT NULL, "category" text NOT NULL, "name" text NOT NULL, "description" text, "icon" text, "post_launch" boolean DEFAULT false NOT NULL, "sort_order" integer DEFAULT 0 NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "tracker_items_game_id_key_unique" UNIQUE("game_id","key") ); --> statement-breakpoint CREATE TABLE "games"."tracker_progress" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "item_id" integer NOT NULL, "milestone" text DEFAULT 'done' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "tracker_progress_user_id_item_id_milestone_unique" UNIQUE("user_id","item_id","milestone") ); --> statement-breakpoint CREATE TABLE "games"."osu_entries" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "kind" text NOT NULL, "title" text NOT NULL, "mode" text DEFAULT 'osu' NOT NULL, "beatmap_url" text, "score_url" text, "goal" text DEFAULT 'pass' NOT NULL, "skill" text DEFAULT 'stamina' NOT NULL, "bpm" integer, "duration" integer, "accuracy" numeric, "combo" integer, "misses" integer, "pp" numeric, "mods" text DEFAULT 'NM' NOT NULL, "rate" numeric(4,2) DEFAULT 1.00 NOT NULL, "achieved" boolean DEFAULT false NOT NULL, "played_on" date NOT NULL, "notes" text DEFAULT '' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "osu_entries_kind_check" CHECK ("kind" IN ('score','goal','training')) ); --> statement-breakpoint CREATE TABLE "games"."pokemon_catches" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "game_id" integer NOT NULL, "pokemon_id" integer NOT NULL, "nickname" text DEFAULT '' NOT NULL, "level" integer DEFAULT 1 NOT NULL, "moves" text[] DEFAULT '{}'::text[] NOT NULL, "party_slot" integer, "shiny" boolean DEFAULT false NOT NULL, "nature" text, "ability" text, "ball" text, "location" text, "obtained" text DEFAULT 'caught' NOT NULL, "stage" text DEFAULT 'story' NOT NULL, "notes" text DEFAULT '' NOT NULL, "caught_on" date, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "pokemon_catches_user_id_game_id_party_slot_unique" UNIQUE("user_id","game_id","party_slot"), CONSTRAINT "pokemon_catches_level_check" CHECK ("level" between 1 and 100), CONSTRAINT "pokemon_catches_party_slot_check" CHECK ("party_slot" between 1 and 6), CONSTRAINT "pokemon_catches_moves_check" CHECK (cardinality("moves") <= 4), CONSTRAINT "pokemon_catches_stage_check" CHECK ("stage" IN ('story','postgame','collection')) ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_dex_numbers" ( "id" serial PRIMARY KEY, "pokemon_id" integer NOT NULL, "game_id" integer NOT NULL, "dex" text NOT NULL, "dex_name" text NOT NULL, "number" integer NOT NULL, CONSTRAINT "pokemon_dex_numbers_pokemon_id_game_id_dex_unique" UNIQUE("pokemon_id","game_id","dex") ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_game_research" ( "game_id" integer PRIMARY KEY, "version_group" integer NOT NULL, "regions" text[] NOT NULL ); --> statement-breakpoint CREATE TABLE "games"."pokemon_journeys" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "game_id" integer NOT NULL, "stage" text DEFAULT 'story' NOT NULL, "location" text, "completed" boolean DEFAULT false NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "pokemon_journeys_user_id_game_id_unique" UNIQUE("user_id","game_id"), CONSTRAINT "pokemon_journeys_stage_check" CHECK ("stage" IN ('story','postgame','collection')) ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_learnsets" ( "id" serial PRIMARY KEY, "pokemon_id" integer NOT NULL, "version_group" integer NOT NULL, "moves" jsonb NOT NULL, CONSTRAINT "pokemon_learnsets_pokemon_id_version_group_unique" UNIQUE("pokemon_id","version_group") ); --> statement-breakpoint CREATE TABLE "games"."pokemon_milestones" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "game_id" integer NOT NULL, "key" text NOT NULL, "title" text NOT NULL, "category" text NOT NULL, "stage" text DEFAULT 'story' NOT NULL, "done" boolean DEFAULT false NOT NULL, "notes" text DEFAULT '' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "pokemon_milestones_user_id_game_id_key_unique" UNIQUE("user_id","game_id","key") ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_moves" ( "id" integer PRIMARY KEY, "name" text NOT NULL, "type" text NOT NULL, "category" text NOT NULL, "power" integer, "accuracy" integer, "pp" integer, "priority" integer NOT NULL, "target" text NOT NULL ); --> statement-breakpoint CREATE TABLE "ref"."pokemon_research" ( "pokemon_id" integer PRIMARY KEY, "facts" jsonb NOT NULL ); --> statement-breakpoint CREATE TABLE "games"."pokemon_seen" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "game_id" integer NOT NULL, "pokemon_id" integer NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "pokemon_seen_user_id_game_id_pokemon_id_unique" UNIQUE("user_id","game_id","pokemon_id") ); --> statement-breakpoint CREATE TABLE "games"."tracker_challenge_progress" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "challenge_id" integer NOT NULL, "current" integer DEFAULT 0 NOT NULL, "done" boolean DEFAULT false NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "tracker_challenge_progress_user_id_challenge_id_unique" UNIQUE("user_id","challenge_id"), CONSTRAINT "tracker_challenge_progress_current_check" CHECK ("current" >= 0) ); --> statement-breakpoint CREATE TABLE "ref"."tracker_challenges" ( "id" serial PRIMARY KEY, "game_id" integer NOT NULL, "key" text NOT NULL, "name" text NOT NULL, "category" text NOT NULL, "requirement" text NOT NULL, "reward" text, "icon" text, "target" integer, "source_url" text NOT NULL, CONSTRAINT "tracker_challenges_game_id_key_unique" UNIQUE("game_id","key") ); --> statement-breakpoint CREATE TABLE "games"."tracker_ranks" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "game_id" integer NOT NULL, "level" integer DEFAULT 1 NOT NULL, "prestige" integer DEFAULT 0 NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "tracker_ranks_user_id_game_id_unique" UNIQUE("user_id","game_id"), CONSTRAINT "tracker_ranks_level_check" CHECK ("level" between 1 and 10000), CONSTRAINT "tracker_ranks_prestige_check" CHECK ("prestige" between 0 and 1000) ); --> statement-breakpoint CREATE TABLE "games"."tracker_weapon_ranks" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "item_id" integer NOT NULL, "level" integer DEFAULT 1 NOT NULL, "prestige" integer DEFAULT 0 NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "tracker_weapon_ranks_user_id_item_id_unique" UNIQUE("user_id","item_id"), CONSTRAINT "tracker_weapon_ranks_level_check" CHECK ("level" between 1 and 10000), CONSTRAINT "tracker_weapon_ranks_prestige_check" CHECK ("prestige" between 0 and 1000) ); --> statement-breakpoint CREATE TABLE "animaldex"."animals" ( "id" serial PRIMARY KEY, "species" text NOT NULL, "breed" text, "animal_name" text, "description" text, "ai_breed_suggestion" text, "ai_breed_confidence" double precision, "submitted_at" timestamp with time zone DEFAULT now() NOT NULL, "accepted_at" timestamp with time zone, "denied_at" timestamp with time zone, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "animaldex"."sighting_photos" ( "id" serial PRIMARY KEY, "sighting_id" integer NOT NULL, "r2_key" text NOT NULL, "url" text NOT NULL, "sort_order" integer DEFAULT 0 NOT NULL, "uploaded_at" timestamp with time zone DEFAULT now() NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "animaldex"."sightings" ( "id" serial PRIMARY KEY, "animal_id" integer NOT NULL, "reporter_name" text, "seen_at" timestamp with time zone NOT NULL, "lat" double precision NOT NULL, "lng" double precision NOT NULL, "submitted_at" timestamp with time zone DEFAULT now() NOT NULL, "accepted_at" timestamp with time zone, "denied_at" timestamp with time zone, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "meta"."columns" ( "id" integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (sequence name "meta"."columns_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1), "table_id" integer NOT NULL, "column_name" text NOT NULL, "label" text, "ui_type" text NOT NULL, "options" jsonb DEFAULT '{}' NOT NULL, "position" integer DEFAULT 0 NOT NULL, "hidden" boolean DEFAULT false NOT NULL, "help_text" text, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "columns_table_id_column_name_key" UNIQUE("table_id","column_name"), CONSTRAINT "columns_ui_type_check" CHECK (ui_type IN ('text','longtext','url','image','number','cents','date','datetime','bool','select','multiselect','fk','json')) ); --> statement-breakpoint CREATE TABLE "meta"."tables" ( "id" integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (sequence name "meta"."tables_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1), "schema_name" text NOT NULL, "table_name" text NOT NULL, "slug" text NOT NULL CONSTRAINT "tables_slug_key" UNIQUE, "display_name" text NOT NULL, "description" text, "icon" text, "picture_url" text, "kind" text NOT NULL, "editable" boolean DEFAULT true NOT NULL, "has_done" boolean DEFAULT false NOT NULL, "default_sort" text, "sort_order" integer DEFAULT 0 NOT NULL, "archived_at" timestamp with time zone, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "tables_schema_name_table_name_key" UNIQUE("schema_name","table_name"), CONSTRAINT "tables_slug_check" CHECK (slug ~ '^[a-z0-9][a-z0-9-]{0,62}$'), CONSTRAINT "tables_kind_check" CHECK (kind IN ('list','core','ref')) ); --> statement-breakpoint CREATE TABLE "money"."accounts" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "name" text NOT NULL, "opening_balance_cents" integer DEFAULT 0 NOT NULL, "kind" text DEFAULT 'spendable' NOT NULL, "color" text, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "accounts_user_id_name_unique" UNIQUE("user_id","name"), CONSTRAINT "accounts_kind_check" CHECK (kind IN ('spendable','investment')) ); --> statement-breakpoint CREATE TABLE "money"."forecasts" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "date" date NOT NULL, "description" text NOT NULL, "amount_cents" integer NOT NULL, "account_id" integer, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "money"."insurances" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "name" text NOT NULL, "provider" text, "coverage" text, "premium_cents" integer, "cadence" text DEFAULT 'monthly' NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "insurances_cadence_check" CHECK (cadence IN ('weekly','monthly','yearly')) ); --> statement-breakpoint CREATE TABLE "money"."projection_settings" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL UNIQUE, "investment_account_id" integer, "reserve_cents" integer DEFAULT 100000 NOT NULL, "annual_return_percent" numeric(5,2) DEFAULT '5.00' NOT NULL, "contribution_mode" text DEFAULT 'excess' NOT NULL, "include_recurring" boolean DEFAULT true NOT NULL, "fixed_monthly_cents" integer DEFAULT 0 NOT NULL, "end_date" date, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "projection_settings_contribution_mode_check" CHECK (contribution_mode IN ('excess','fixed')) ); --> statement-breakpoint CREATE TABLE "money"."recurring" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "name" text NOT NULL, "amount_cents" integer NOT NULL, "cadence" text NOT NULL, "starts_on" date, "ends_on" date, "account_id" integer, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "recurring_cadence_check" CHECK (cadence IN ('weekly','monthly','yearly')) ); --> statement-breakpoint CREATE TABLE "money"."transactions" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "account_id" integer NOT NULL, "date" date NOT NULL, "description" text NOT NULL, "amount_cents" integer NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "money"."utility_readings" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "kind" text NOT NULL, "date" date NOT NULL, "reading" numeric(12,3) NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "utility_readings_kind_check" CHECK (kind IN ('electricity','gas','water')) ); --> statement-breakpoint CREATE TABLE "money"."utility_settings" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "kind" text NOT NULL, "rate_per_unit" numeric(12,4) DEFAULT '0' NOT NULL, "monthly_advance_cents" integer DEFAULT 0 NOT NULL, "billing_start" date, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "utility_settings_user_id_kind_unique" UNIQUE("user_id","kind"), CONSTRAINT "utility_settings_kind_check" CHECK (kind IN ('electricity','gas','water')) ); --> statement-breakpoint CREATE TABLE "money"."wishlist" ( "id" serial PRIMARY KEY, "user_id" text NOT NULL, "name" text NOT NULL, "estimated_cents" integer, "priority" integer DEFAULT 3 NOT NULL, "notes" text, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "cs"."item_dimensions" ( "item_id" integer, "key" text, "value" text NOT NULL, CONSTRAINT "item_dimensions_pkey" PRIMARY KEY("item_id","key") ); --> statement-breakpoint CREATE TABLE "cs"."items" ( "id" serial PRIMARY KEY, "market_hash_name" text NOT NULL, "name" text NOT NULL, "icon_url" text, "item_type" text, "first_seen_at" timestamp with time zone DEFAULT now() NOT NULL, "last_seen_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "cs"."price_observations" ( "id" bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "cs"."price_observations_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1), "item_id" integer NOT NULL, "source" text NOT NULL, "currency" text NOT NULL, "observed_at" timestamp with time zone NOT NULL, "price_cents" integer NOT NULL, "volume" integer, "kind" text NOT NULL, "imported_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "cs"."price_streams" ( "source" text, "currency" text, "kind" text, CONSTRAINT "price_streams_pkey" PRIMARY KEY("source","currency","kind") ); --> statement-breakpoint CREATE TABLE "house"."alert_rules" ( "id" serial PRIMARY KEY, "name" text NOT NULL, "enabled" boolean DEFAULT true NOT NULL, "offer" text DEFAULT 'rent' NOT NULL, "min_price" integer, "max_price" integer, "min_area" integer, "min_bedrooms" integer, "cities" text[] DEFAULT '{}'::text[] NOT NULL, "property_types" text[] DEFAULT '{}'::text[] NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "alert_rules_offer_check" CHECK (offer IN ('rent', 'buy')) ); --> statement-breakpoint CREATE TABLE "house"."listings" ( "id" serial PRIMARY KEY, "source" text NOT NULL, "source_id" text NOT NULL, "external_id" text, "url" text NOT NULL, "offer" text NOT NULL, "property_type" text NOT NULL, "title" text, "street" text, "postal_code" text, "city" text, "city_slug" text, "neighbourhood" text, "price_eur" integer, "area_m2" integer, "rooms" integer, "bedrooms" integer, "bathrooms" integer, "construction_year" integer, "energy_label" text, "interior" text, "deposit_eur" integer, "available_from" text, "contract_type" text, "agent" text, "image_url" text, "description" text, "features" jsonb DEFAULT '{}' NOT NULL, "lat" double precision, "lng" double precision, "offered_at" timestamp with time zone, "first_seen_at" timestamp with time zone DEFAULT now() NOT NULL, "first_seen_lane" text DEFAULT 'slow' NOT NULL, "last_seen_at" timestamp with time zone DEFAULT now() NOT NULL, "detail_fetched_at" timestamp with time zone, "removed_at" timestamp with time zone, "alerted_at" timestamp with time zone, "status" text, "notes" text, CONSTRAINT "listings_offer_check" CHECK (offer IN ('rent', 'buy')), CONSTRAINT "listings_price_eur_check" CHECK (price_eur IS NULL OR price_eur >= 0) ); --> statement-breakpoint CREATE TABLE "house"."price_history" ( "listing_id" integer, "observed_at" timestamp with time zone DEFAULT now(), "price_eur" integer NOT NULL, CONSTRAINT "price_history_pkey" PRIMARY KEY("listing_id","observed_at") ); --> statement-breakpoint CREATE TABLE "house"."searches" ( "search_url" text PRIMARY KEY, "source" text NOT NULL, "lane" text NOT NULL, "first_synced_at" timestamp with time zone DEFAULT now() NOT NULL, "last_synced_at" timestamp with time zone DEFAULT now() NOT NULL, "last_found" integer DEFAULT 0 NOT NULL ); --> statement-breakpoint CREATE TABLE "house"."worker_runs" ( "id" bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "house"."worker_runs_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1), "source" text NOT NULL, "lane" text NOT NULL, "url" text NOT NULL, "status" text NOT NULL, "http_status" integer, "found" integer, "duration_ms" integer, "message" text, "created_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE INDEX "account_userId_idx" ON "auth"."account" ("user_id");--> statement-breakpoint CREATE UNIQUE INDEX "account_issuer_account_id_unique" ON "auth"."account" ("issuer","account_id");--> statement-breakpoint CREATE INDEX "session_userId_idx" ON "auth"."session" ("user_id");--> statement-breakpoint CREATE INDEX "verification_identifier_idx" ON "auth"."verification" ("identifier");--> statement-breakpoint CREATE INDEX "pokemon_encounters_pokemon_id_game_id_index" ON "ref"."pokemon_encounters" ("pokemon_id","game_id");--> statement-breakpoint CREATE INDEX "pokemon_encounters_location_id_index" ON "ref"."pokemon_encounters" ("location_id");--> statement-breakpoint CREATE INDEX "pokemon_evolutions_game_id_index" ON "ref"."pokemon_evolutions" ("game_id");--> statement-breakpoint CREATE INDEX "pokemon_game_entries_game_id_index" ON "ref"."pokemon_game_entries" ("game_id");--> statement-breakpoint CREATE INDEX "catch_em_all_entries_user_id_index" ON "games"."catch_em_all_entries" ("user_id");--> statement-breakpoint CREATE INDEX "catch_em_all_games_user_id_index" ON "games"."catch_em_all_games" ("user_id");--> statement-breakpoint CREATE INDEX "tracker_items_game_id_index" ON "ref"."tracker_items" ("game_id");--> statement-breakpoint CREATE INDEX "tracker_progress_user_id_index" ON "games"."tracker_progress" ("user_id");--> statement-breakpoint CREATE INDEX "osu_entries_user_id_kind_index" ON "games"."osu_entries" ("user_id","kind");--> statement-breakpoint CREATE INDEX "pokemon_catches_user_id_game_id_pokemon_id_index" ON "games"."pokemon_catches" ("user_id","game_id","pokemon_id");--> statement-breakpoint CREATE INDEX "pokemon_dex_numbers_game_id_index" ON "ref"."pokemon_dex_numbers" ("game_id");--> statement-breakpoint CREATE INDEX "pokemon_seen_user_id_index" ON "games"."pokemon_seen" ("user_id");--> statement-breakpoint CREATE INDEX "columns_table_id_index" ON "meta"."columns" ("table_id");--> statement-breakpoint CREATE INDEX "accounts_user_id_index" ON "money"."accounts" ("user_id");--> statement-breakpoint CREATE INDEX "forecasts_user_id_date_index" ON "money"."forecasts" ("user_id","date");--> statement-breakpoint CREATE INDEX "insurances_user_id_index" ON "money"."insurances" ("user_id");--> statement-breakpoint CREATE INDEX "recurring_user_id_index" ON "money"."recurring" ("user_id");--> statement-breakpoint CREATE INDEX "transactions_user_id_date_id_index" ON "money"."transactions" ("user_id","date","id");--> statement-breakpoint CREATE INDEX "transactions_account_id_index" ON "money"."transactions" ("account_id");--> statement-breakpoint CREATE INDEX "utility_readings_user_id_kind_date_index" ON "money"."utility_readings" ("user_id","kind","date");--> statement-breakpoint CREATE INDEX "wishlist_user_id_index" ON "money"."wishlist" ("user_id");--> statement-breakpoint CREATE INDEX "item_dimensions_filter_idx" ON "cs"."item_dimensions" ("key","value","item_id");--> statement-breakpoint CREATE UNIQUE INDEX "items_hash_idx" ON "cs"."items" ("market_hash_name");--> statement-breakpoint CREATE INDEX "items_name_idx" ON "cs"."items" ("name");--> statement-breakpoint CREATE UNIQUE INDEX "price_observations_unique_idx" ON "cs"."price_observations" ("item_id","source","currency","observed_at","kind");--> statement-breakpoint CREATE INDEX "price_observations_lookup_idx" ON "cs"."price_observations" ("item_id","source","currency","observed_at");--> statement-breakpoint CREATE INDEX "price_observations_time_idx" ON "cs"."price_observations" ("observed_at");--> statement-breakpoint CREATE UNIQUE INDEX "listings_source_idx" ON "house"."listings" ("source","source_id");--> statement-breakpoint CREATE INDEX "listings_active_idx" ON "house"."listings" ("offer","first_seen_at" DESC) WHERE removed_at IS NULL;--> statement-breakpoint CREATE INDEX "listings_city_idx" ON "house"."listings" ("source","offer","city_slug");--> statement-breakpoint CREATE INDEX "listings_details_idx" ON "house"."listings" ("first_seen_at" DESC) WHERE detail_fetched_at IS NULL;--> statement-breakpoint CREATE INDEX "worker_runs_created_idx" ON "house"."worker_runs" ("created_at" DESC);--> statement-breakpoint ALTER TABLE "auth"."account" ADD CONSTRAINT "account_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "auth"."session" ADD CONSTRAINT "session_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "site"."task_topics" ADD CONSTRAINT "task_topics_task_id_tasks_id_fkey" FOREIGN KEY ("task_id") REFERENCES "site"."tasks"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "site"."task_topics" ADD CONSTRAINT "task_topics_topic_id_topics_id_fkey" FOREIGN KEY ("topic_id") REFERENCES "site"."topics"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."catch_em_all_settings" ADD CONSTRAINT "catch_em_all_settings_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_encounters" ADD CONSTRAINT "pokemon_encounters_pokemon_id_pokemon_id_fkey" FOREIGN KEY ("pokemon_id") REFERENCES "ref"."pokemon"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_encounters" ADD CONSTRAINT "pokemon_encounters_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_encounters" ADD CONSTRAINT "pokemon_encounters_location_id_pokemon_locations_id_fkey" FOREIGN KEY ("location_id") REFERENCES "ref"."pokemon_locations"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_evolutions" ADD CONSTRAINT "pokemon_evolutions_from_pokemon_id_pokemon_id_fkey" FOREIGN KEY ("from_pokemon_id") REFERENCES "ref"."pokemon"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_evolutions" ADD CONSTRAINT "pokemon_evolutions_to_pokemon_id_pokemon_id_fkey" FOREIGN KEY ("to_pokemon_id") REFERENCES "ref"."pokemon"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_evolutions" ADD CONSTRAINT "pokemon_evolutions_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_game_entries" ADD CONSTRAINT "pokemon_game_entries_pokemon_id_pokemon_id_fkey" FOREIGN KEY ("pokemon_id") REFERENCES "ref"."pokemon"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_game_entries" ADD CONSTRAINT "pokemon_game_entries_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."catch_em_all_entries" ADD CONSTRAINT "catch_em_all_entries_HeABXvGNiB6D_fkey" FOREIGN KEY ("pokemon_game_entry_id") REFERENCES "ref"."pokemon_game_entries"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."catch_em_all_entries" ADD CONSTRAINT "catch_em_all_entries_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."catch_em_all_games" ADD CONSTRAINT "catch_em_all_games_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."catch_em_all_games" ADD CONSTRAINT "catch_em_all_games_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."tracker_items" ADD CONSTRAINT "tracker_items_game_id_tracker_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."tracker_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."tracker_progress" ADD CONSTRAINT "tracker_progress_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."tracker_progress" ADD CONSTRAINT "tracker_progress_item_id_tracker_items_id_fkey" FOREIGN KEY ("item_id") REFERENCES "ref"."tracker_items"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."osu_entries" ADD CONSTRAINT "osu_entries_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_catches" ADD CONSTRAINT "pokemon_catches_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_catches" ADD CONSTRAINT "pokemon_catches_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_catches" ADD CONSTRAINT "pokemon_catches_pokemon_id_pokemon_id_fkey" FOREIGN KEY ("pokemon_id") REFERENCES "ref"."pokemon"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_dex_numbers" ADD CONSTRAINT "pokemon_dex_numbers_pokemon_id_pokemon_id_fkey" FOREIGN KEY ("pokemon_id") REFERENCES "ref"."pokemon"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_dex_numbers" ADD CONSTRAINT "pokemon_dex_numbers_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_game_research" ADD CONSTRAINT "pokemon_game_research_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_journeys" ADD CONSTRAINT "pokemon_journeys_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_journeys" ADD CONSTRAINT "pokemon_journeys_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_learnsets" ADD CONSTRAINT "pokemon_learnsets_pokemon_id_pokemon_id_fkey" FOREIGN KEY ("pokemon_id") REFERENCES "ref"."pokemon"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_milestones" ADD CONSTRAINT "pokemon_milestones_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_milestones" ADD CONSTRAINT "pokemon_milestones_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."pokemon_research" ADD CONSTRAINT "pokemon_research_pokemon_id_pokemon_id_fkey" FOREIGN KEY ("pokemon_id") REFERENCES "ref"."pokemon"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_seen" ADD CONSTRAINT "pokemon_seen_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_seen" ADD CONSTRAINT "pokemon_seen_game_id_pokemon_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."pokemon_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."pokemon_seen" ADD CONSTRAINT "pokemon_seen_pokemon_id_pokemon_id_fkey" FOREIGN KEY ("pokemon_id") REFERENCES "ref"."pokemon"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."tracker_challenge_progress" ADD CONSTRAINT "tracker_challenge_progress_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."tracker_challenge_progress" ADD CONSTRAINT "tracker_challenge_progress_HtzyFtOyUAhk_fkey" FOREIGN KEY ("challenge_id") REFERENCES "ref"."tracker_challenges"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "ref"."tracker_challenges" ADD CONSTRAINT "tracker_challenges_game_id_tracker_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."tracker_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."tracker_ranks" ADD CONSTRAINT "tracker_ranks_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."tracker_ranks" ADD CONSTRAINT "tracker_ranks_game_id_tracker_games_id_fkey" FOREIGN KEY ("game_id") REFERENCES "ref"."tracker_games"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."tracker_weapon_ranks" ADD CONSTRAINT "tracker_weapon_ranks_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "games"."tracker_weapon_ranks" ADD CONSTRAINT "tracker_weapon_ranks_item_id_tracker_items_id_fkey" FOREIGN KEY ("item_id") REFERENCES "ref"."tracker_items"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "animaldex"."sighting_photos" ADD CONSTRAINT "sighting_photos_sighting_id_sightings_id_fkey" FOREIGN KEY ("sighting_id") REFERENCES "animaldex"."sightings"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "animaldex"."sightings" ADD CONSTRAINT "sightings_animal_id_animals_id_fkey" FOREIGN KEY ("animal_id") REFERENCES "animaldex"."animals"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "meta"."columns" ADD CONSTRAINT "columns_table_id_tables_id_fkey" FOREIGN KEY ("table_id") REFERENCES "meta"."tables"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "money"."accounts" ADD CONSTRAINT "accounts_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "money"."forecasts" ADD CONSTRAINT "forecasts_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "money"."forecasts" ADD CONSTRAINT "forecasts_account_id_accounts_id_fkey" FOREIGN KEY ("account_id") REFERENCES "money"."accounts"("id") ON DELETE SET NULL;--> statement-breakpoint ALTER TABLE "money"."insurances" ADD CONSTRAINT "insurances_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "money"."projection_settings" ADD CONSTRAINT "projection_settings_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "money"."projection_settings" ADD CONSTRAINT "projection_settings_investment_account_id_accounts_id_fkey" FOREIGN KEY ("investment_account_id") REFERENCES "money"."accounts"("id") ON DELETE SET NULL;--> statement-breakpoint ALTER TABLE "money"."recurring" ADD CONSTRAINT "recurring_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "money"."recurring" ADD CONSTRAINT "recurring_account_id_accounts_id_fkey" FOREIGN KEY ("account_id") REFERENCES "money"."accounts"("id") ON DELETE SET NULL;--> statement-breakpoint ALTER TABLE "money"."transactions" ADD CONSTRAINT "transactions_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "money"."transactions" ADD CONSTRAINT "transactions_account_id_accounts_id_fkey" FOREIGN KEY ("account_id") REFERENCES "money"."accounts"("id");--> statement-breakpoint ALTER TABLE "money"."utility_readings" ADD CONSTRAINT "utility_readings_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "money"."utility_settings" ADD CONSTRAINT "utility_settings_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "money"."wishlist" ADD CONSTRAINT "wishlist_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "auth"."user"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "cs"."item_dimensions" ADD CONSTRAINT "item_dimensions_item_id_items_id_fkey" FOREIGN KEY ("item_id") REFERENCES "cs"."items"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "cs"."price_observations" ADD CONSTRAINT "price_observations_item_id_items_id_fkey" FOREIGN KEY ("item_id") REFERENCES "cs"."items"("id") ON DELETE CASCADE;--> statement-breakpoint ALTER TABLE "house"."price_history" ADD CONSTRAINT "price_history_listing_id_listings_id_fkey" FOREIGN KEY ("listing_id") REFERENCES "house"."listings"("id") ON DELETE CASCADE;