132 lines
4.4 KiB
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"); |