Files
pokemon/drizzle/20260405194139_orange_jack_murdock/migration.sql

132 lines
4.4 KiB
SQL

CREATE SCHEMA "pokemon";
--> statement-breakpoint
CREATE TABLE "pokemon"."cards" (
"card_id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "pokemon"."cards_card_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
"product_id" integer NOT NULL,
"variant" varchar(100) NOT NULL,
"product_name" varchar(255),
"product_line_name" varchar(255),
"product_url_name" varchar(255) DEFAULT '' NOT NULL,
"rarity_name" varchar(100),
"sealed" boolean DEFAULT false NOT NULL,
"set_id" integer,
"card_type" varchar(100),
"energy_type" varchar(100),
"number" varchar(50),
"artist" varchar(255)
);
--> statement-breakpoint
CREATE TABLE "pokemon"."inventory" (
"inventory_id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
"user_id" varchar(100) NOT NULL,
"catalog_name" varchar(100),
"card_id" integer NOT NULL,
"condition" varchar(255) NOT NULL,
"quantity" integer,
"purchase_price" numeric(10,2),
"note" varchar(255)
);
--> statement-breakpoint
CREATE TABLE "pokemon"."price_history" (
"sku_id" integer,
"calculated_at" timestamp,
"market_price" numeric(10,2),
CONSTRAINT "pk_price_history" PRIMARY KEY("sku_id","calculated_at")
);
--> statement-breakpoint
CREATE TABLE "pokemon"."processing_skus" (
"sku_id" integer PRIMARY KEY
);
--> statement-breakpoint
CREATE TABLE "pokemon"."sales_history" (
"sku_id" integer,
"order_date" timestamp,
"title" varchar(255),
"custom_listing_id" varchar(255),
"language" varchar(100),
"listing_type" varchar(100),
"purchase_price" numeric(10,2),
"quantity" integer,
"shipping_price" numeric(10,2),
CONSTRAINT "pk_sales_history" PRIMARY KEY("sku_id","order_date")
);
--> statement-breakpoint
CREATE TABLE "pokemon"."sets" (
"set_id" integer PRIMARY KEY,
"set_name" varchar(255) NOT NULL,
"set_url_name" varchar(255) NOT NULL,
"set_code" varchar(100) NOT NULL
);
--> statement-breakpoint
CREATE TABLE "pokemon"."skus" (
"sku_id" integer PRIMARY KEY,
"card_id" integer DEFAULT 0 NOT NULL,
"product_id" integer NOT NULL,
"condition" varchar(255) NOT NULL,
"language" varchar(100) NOT NULL,
"variant" varchar(100) NOT NULL,
"calculated_at" timestamp,
"highest_price" numeric(10,2),
"lowest_price" numeric(10,2),
"market_price" numeric(10,2),
"price_count" integer
);
--> statement-breakpoint
CREATE TABLE "pokemon"."tcg_overrides" (
"product_id" integer PRIMARY KEY,
"product_name" varchar(255),
"product_line_name" varchar(255),
"product_url_name" varchar(255) DEFAULT '' NOT NULL,
"rarity_name" varchar(100),
"sealed" boolean DEFAULT false NOT NULL,
"set_id" integer,
"card_type" varchar(100),
"energy_type" varchar(100),
"number" varchar(50),
"artist" varchar(255)
);
--> statement-breakpoint
CREATE TABLE "pokemon"."tcg_cards" (
"product_id" integer PRIMARY KEY,
"product_name" varchar(255) NOT NULL,
"product_line_name" varchar(255) DEFAULT '' NOT NULL,
"product_line_url_name" varchar(255) DEFAULT '' NOT NULL,
"product_status_id" integer DEFAULT 0 NOT NULL,
"product_type_id" integer DEFAULT 0 NOT NULL,
"product_url_name" varchar(255) DEFAULT '' NOT NULL,
"rarity_name" varchar(100) DEFAULT '' NOT NULL,
"sealed" boolean DEFAULT false NOT NULL,
"seller_listable" boolean DEFAULT false NOT NULL,
"set_id" integer,
"shipping_category_id" integer,
"duplicate" boolean DEFAULT false NOT NULL,
"foil_only" boolean DEFAULT false NOT NULL,
"max_fulfillable_quantity" integer,
"total_listings" integer,
"score" numeric(10,2),
"lowest_price" numeric(10,2),
"lowest_price_with_shipping" numeric(10,2),
"market_price" numeric(10,2),
"median_price" numeric(10,2),
"attack1" varchar(1024),
"attack2" varchar(1024),
"attack3" varchar(1024),
"attack4" varchar(1024),
"card_type" varchar(100),
"card_type_b" varchar(100),
"energy_type" varchar(100),
"flavor_text" varchar(1000),
"hp" integer,
"number" varchar(50) DEFAULT '' NOT NULL,
"release_date" timestamp,
"resistance" varchar(100),
"retreat_cost" varchar(100),
"stage" varchar(100),
"weakness" varchar(100),
"artist" varchar(255)
);
--> statement-breakpoint
CREATE INDEX "idx_card_product_id" ON "pokemon"."cards" ("product_id","variant");--> statement-breakpoint
CREATE INDEX "idx_userid_cardid" ON "pokemon"."inventory" ("user_id","card_id");--> statement-breakpoint
CREATE INDEX "idx_product_id_condition" ON "pokemon"."skus" ("product_id","variant","condition");--> statement-breakpoint
CREATE INDEX "idx_card_id_condition" ON "pokemon"."skus" ("card_id","condition");