71 lines
3.6 KiB
SQL
71 lines
3.6 KiB
SQL
CREATE TABLE "categories" (
|
|
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "categories_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
|
|
"externalId" integer,
|
|
"name" varchar(255) NOT NULL,
|
|
"parentId" integer,
|
|
"description" text,
|
|
"createdAt" timestamp DEFAULT now() NOT NULL,
|
|
"updatedAt" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "products" (
|
|
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "products_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
|
|
"externalId" varchar(50) NOT NULL,
|
|
"storeId" integer NOT NULL,
|
|
"categoryId" integer,
|
|
"name" varchar(500) NOT NULL,
|
|
"description" text,
|
|
"url" text,
|
|
"imageUrl" text,
|
|
"currentPrice" numeric(10, 2) NOT NULL,
|
|
"unit" varchar(50),
|
|
"weight" varchar(100),
|
|
"brand" varchar(255),
|
|
"oldPrice" numeric(10, 2),
|
|
"discountPercent" numeric(5, 2),
|
|
"promotionEndDate" timestamp,
|
|
"rating" numeric(3, 2),
|
|
"scoresCount" integer,
|
|
"commentsCount" integer,
|
|
"quantity" integer,
|
|
"badges" text,
|
|
"isDetailsFetched" boolean DEFAULT false NOT NULL,
|
|
"createdAt" timestamp DEFAULT now() NOT NULL,
|
|
"updatedAt" timestamp DEFAULT now(),
|
|
CONSTRAINT "products_externalId_storeId_unique" UNIQUE("externalId","storeId")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "scraping_sessions" (
|
|
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "scraping_sessions_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
|
|
"storeId" integer NOT NULL,
|
|
"sourceType" varchar(50) NOT NULL,
|
|
"status" varchar(50) NOT NULL,
|
|
"startedAt" timestamp DEFAULT now() NOT NULL,
|
|
"finishedAt" timestamp,
|
|
"error" text
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "stores" (
|
|
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "stores_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
|
|
"name" varchar(255) NOT NULL,
|
|
"type" varchar(50) NOT NULL,
|
|
"code" varchar(50),
|
|
"url" text,
|
|
"region" varchar(255),
|
|
"address" text,
|
|
"createdAt" timestamp DEFAULT now() NOT NULL,
|
|
"updatedAt" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "products" ADD CONSTRAINT "products_storeId_stores_id_fk" FOREIGN KEY ("storeId") REFERENCES "public"."stores"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "products" ADD CONSTRAINT "products_categoryId_categories_id_fk" FOREIGN KEY ("categoryId") REFERENCES "public"."categories"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "scraping_sessions" ADD CONSTRAINT "scraping_sessions_storeId_stores_id_fk" FOREIGN KEY ("storeId") REFERENCES "public"."stores"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
CREATE INDEX "categories_externalId_idx" ON "categories" USING btree ("externalId");--> statement-breakpoint
|
|
CREATE INDEX "categories_parentId_idx" ON "categories" USING btree ("parentId");--> statement-breakpoint
|
|
CREATE INDEX "products_storeId_idx" ON "products" USING btree ("storeId");--> statement-breakpoint
|
|
CREATE INDEX "products_categoryId_idx" ON "products" USING btree ("categoryId");--> statement-breakpoint
|
|
CREATE INDEX "products_externalId_idx" ON "products" USING btree ("externalId");--> statement-breakpoint
|
|
CREATE INDEX "scraping_sessions_storeId_idx" ON "scraping_sessions" USING btree ("storeId");--> statement-breakpoint
|
|
CREATE INDEX "scraping_sessions_status_idx" ON "scraping_sessions" USING btree ("status");--> statement-breakpoint
|
|
CREATE INDEX "scraping_sessions_startedAt_idx" ON "scraping_sessions" USING btree ("startedAt");--> statement-breakpoint
|
|
CREATE INDEX "stores_code_idx" ON "stores" USING btree ("code"); |