feat: drizzle schema + migrations for products/snapshots/alerts
This commit is contained in:
38
drizzle/0000_motionless_beast.sql
Normal file
38
drizzle/0000_motionless_beast.sql
Normal file
@@ -0,0 +1,38 @@
|
||||
CREATE TABLE "alerts" (
|
||||
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||
"product_id" uuid NOT NULL,
|
||||
"type" text NOT NULL,
|
||||
"config" jsonb NOT NULL,
|
||||
"enabled" boolean DEFAULT true NOT NULL,
|
||||
"last_triggered_at" timestamp with time zone,
|
||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
||||
CONSTRAINT "alert_type_check" CHECK ("alerts"."type" in ('target_price','all_time_low','percent_drop'))
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE "price_snapshots" (
|
||||
"id" bigserial PRIMARY KEY NOT NULL,
|
||||
"product_id" uuid NOT NULL,
|
||||
"price" numeric(10, 2),
|
||||
"currency" text DEFAULT 'EUR' NOT NULL,
|
||||
"availability" text,
|
||||
"error" text,
|
||||
"scraped_at" timestamp with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE "products" (
|
||||
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
||||
"url" text NOT NULL,
|
||||
"shop" text NOT NULL,
|
||||
"name" text NOT NULL,
|
||||
"image_url" text,
|
||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
||||
"enabled" boolean DEFAULT true NOT NULL,
|
||||
"last_scraped_at" timestamp with time zone,
|
||||
"consecutive_failures" integer DEFAULT 0 NOT NULL,
|
||||
CONSTRAINT "products_url_unique" UNIQUE("url"),
|
||||
CONSTRAINT "shop_check" CHECK ("products"."shop" in ('amazon','idealo','geizhals'))
|
||||
);
|
||||
--> statement-breakpoint
|
||||
ALTER TABLE "alerts" ADD CONSTRAINT "alerts_product_id_products_id_fk" FOREIGN KEY ("product_id") REFERENCES "public"."products"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||
ALTER TABLE "price_snapshots" ADD CONSTRAINT "price_snapshots_product_id_products_id_fk" FOREIGN KEY ("product_id") REFERENCES "public"."products"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||
CREATE INDEX "snapshots_product_scraped_idx" ON "price_snapshots" USING btree ("product_id","scraped_at" DESC NULLS LAST);
|
||||
Reference in New Issue
Block a user