Files
CRM-LeadRadar/apps/api/drizzle/0006_thick_umar.sql
T
yuriandClaude Opus 5.5 9749da5ae7 Lead Radar: исходный код
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 23:11:04 +04:00

59 lines
4.1 KiB
SQL

CREATE TABLE "client_pages" (
"token" text PRIMARY KEY NOT NULL,
"company_id" integer NOT NULL,
"client_id" integer NOT NULL,
"created_by_id" integer NOT NULL,
"revoked_at" timestamp with time zone,
"created_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE "intake_links" (
"token" text PRIMARY KEY NOT NULL,
"company_id" integer NOT NULL,
"user_id" integer NOT NULL,
"created_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE "intake_sessions" (
"id" serial PRIMARY KEY NOT NULL,
"link_token" text NOT NULL,
"chat_id" bigint NOT NULL,
"tg_name" text,
"tg_username" text,
"lang" text DEFAULT 'ru' NOT NULL,
"step" text NOT NULL,
"answers" jsonb DEFAULT '{}'::jsonb NOT NULL,
"client_id" integer,
"completed_at" timestamp with time zone,
"created_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE "viewings" (
"id" serial PRIMARY KEY NOT NULL,
"company_id" integer NOT NULL,
"client_id" integer NOT NULL,
"lead_id" integer NOT NULL,
"day" date NOT NULL,
"note" text,
"created_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
ALTER TABLE "companies" ADD COLUMN "slug" text;--> statement-breakpoint
ALTER TABLE "client_pages" ADD CONSTRAINT "client_pages_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "client_pages" ADD CONSTRAINT "client_pages_client_id_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "client_pages" ADD CONSTRAINT "client_pages_created_by_id_users_id_fk" FOREIGN KEY ("created_by_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "intake_links" ADD CONSTRAINT "intake_links_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "intake_links" ADD CONSTRAINT "intake_links_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "intake_sessions" ADD CONSTRAINT "intake_sessions_link_token_intake_links_token_fk" FOREIGN KEY ("link_token") REFERENCES "public"."intake_links"("token") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "intake_sessions" ADD CONSTRAINT "intake_sessions_client_id_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "viewings" ADD CONSTRAINT "viewings_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "viewings" ADD CONSTRAINT "viewings_client_id_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "viewings" ADD CONSTRAINT "viewings_lead_id_leads_id_fk" FOREIGN KEY ("lead_id") REFERENCES "public"."leads"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
CREATE UNIQUE INDEX "client_pages_client_uq" ON "client_pages" USING btree ("client_id");--> statement-breakpoint
CREATE UNIQUE INDEX "intake_links_user_uq" ON "intake_links" USING btree ("user_id");--> statement-breakpoint
CREATE INDEX "intake_sessions_chat_idx" ON "intake_sessions" USING btree ("chat_id");--> statement-breakpoint
CREATE UNIQUE INDEX "viewings_uq" ON "viewings" USING btree ("client_id","lead_id");--> statement-breakpoint
ALTER TABLE "companies" ADD CONSTRAINT "companies_slug_unique" UNIQUE("slug");--> statement-breakpoint
-- У уже созданных компаний адрес страниц — «c<номер>»; руководитель может поменять его в настройках.
UPDATE "companies" SET "slug" = 'c' || "id" WHERE "slug" IS NULL;