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;