0056_tidy_quasar.sql 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. CREATE TABLE IF NOT EXISTS "provider_endpoint_probe_logs" (
  2. "id" serial PRIMARY KEY NOT NULL,
  3. "endpoint_id" integer NOT NULL,
  4. "source" varchar(20) DEFAULT 'scheduled' NOT NULL,
  5. "ok" boolean NOT NULL,
  6. "status_code" integer,
  7. "latency_ms" integer,
  8. "error_type" varchar(64),
  9. "error_message" text,
  10. "created_at" timestamp with time zone DEFAULT now()
  11. );
  12. --> statement-breakpoint
  13. CREATE TABLE IF NOT EXISTS "provider_endpoints" (
  14. "id" serial PRIMARY KEY NOT NULL,
  15. "vendor_id" integer NOT NULL,
  16. "provider_type" varchar(20) DEFAULT 'claude' NOT NULL,
  17. "url" text NOT NULL,
  18. "label" varchar(200),
  19. "sort_order" integer DEFAULT 0 NOT NULL,
  20. "is_enabled" boolean DEFAULT true NOT NULL,
  21. "last_probed_at" timestamp with time zone,
  22. "last_probe_ok" boolean,
  23. "last_probe_status_code" integer,
  24. "last_probe_latency_ms" integer,
  25. "last_probe_error_type" varchar(64),
  26. "last_probe_error_message" text,
  27. "created_at" timestamp with time zone DEFAULT now(),
  28. "updated_at" timestamp with time zone DEFAULT now(),
  29. "deleted_at" timestamp with time zone
  30. );
  31. --> statement-breakpoint
  32. CREATE TABLE IF NOT EXISTS "provider_vendors" (
  33. "id" serial PRIMARY KEY NOT NULL,
  34. "website_domain" varchar(255) NOT NULL,
  35. "display_name" varchar(200),
  36. "website_url" text,
  37. "favicon_url" text,
  38. "created_at" timestamp with time zone DEFAULT now(),
  39. "updated_at" timestamp with time zone DEFAULT now()
  40. );
  41. --> statement-breakpoint
  42. ALTER TABLE "providers" ADD COLUMN IF NOT EXISTS "provider_vendor_id" integer;--> statement-breakpoint
  43. DO $$ BEGIN
  44. ALTER TABLE "provider_endpoint_probe_logs" ADD CONSTRAINT "provider_endpoint_probe_logs_endpoint_id_provider_endpoints_id_fk" FOREIGN KEY ("endpoint_id") REFERENCES "public"."provider_endpoints"("id") ON DELETE cascade ON UPDATE no action;
  45. EXCEPTION
  46. WHEN duplicate_object THEN NULL;
  47. END $$;--> statement-breakpoint
  48. DO $$ BEGIN
  49. ALTER TABLE "provider_endpoints" ADD CONSTRAINT "provider_endpoints_vendor_id_provider_vendors_id_fk" FOREIGN KEY ("vendor_id") REFERENCES "public"."provider_vendors"("id") ON DELETE cascade ON UPDATE no action;
  50. EXCEPTION
  51. WHEN duplicate_object THEN NULL;
  52. END $$;--> statement-breakpoint
  53. CREATE INDEX IF NOT EXISTS "idx_provider_endpoint_probe_logs_endpoint_created_at" ON "provider_endpoint_probe_logs" USING btree ("endpoint_id","created_at" DESC NULLS LAST);--> statement-breakpoint
  54. CREATE INDEX IF NOT EXISTS "idx_provider_endpoint_probe_logs_created_at" ON "provider_endpoint_probe_logs" USING btree ("created_at");--> statement-breakpoint
  55. CREATE UNIQUE INDEX IF NOT EXISTS "uniq_provider_endpoints_vendor_type_url" ON "provider_endpoints" USING btree ("vendor_id","provider_type","url");--> statement-breakpoint
  56. CREATE INDEX IF NOT EXISTS "idx_provider_endpoints_vendor_type" ON "provider_endpoints" USING btree ("vendor_id","provider_type") WHERE "provider_endpoints"."deleted_at" IS NULL;--> statement-breakpoint
  57. CREATE INDEX IF NOT EXISTS "idx_provider_endpoints_enabled" ON "provider_endpoints" USING btree ("is_enabled","vendor_id","provider_type") WHERE "provider_endpoints"."deleted_at" IS NULL;--> statement-breakpoint
  58. CREATE INDEX IF NOT EXISTS "idx_provider_endpoints_created_at" ON "provider_endpoints" USING btree ("created_at");--> statement-breakpoint
  59. CREATE INDEX IF NOT EXISTS "idx_provider_endpoints_deleted_at" ON "provider_endpoints" USING btree ("deleted_at");--> statement-breakpoint
  60. CREATE UNIQUE INDEX IF NOT EXISTS "uniq_provider_vendors_website_domain" ON "provider_vendors" USING btree ("website_domain");--> statement-breakpoint
  61. CREATE INDEX IF NOT EXISTS "idx_provider_vendors_created_at" ON "provider_vendors" USING btree ("created_at");--> statement-breakpoint
  62. DO $$ BEGIN
  63. ALTER TABLE "providers" ADD CONSTRAINT "providers_provider_vendor_id_provider_vendors_id_fk" FOREIGN KEY ("provider_vendor_id") REFERENCES "public"."provider_vendors"("id") ON DELETE restrict ON UPDATE no action;
  64. EXCEPTION
  65. WHEN duplicate_object THEN NULL;
  66. END $$;--> statement-breakpoint
  67. CREATE INDEX IF NOT EXISTS "idx_providers_vendor_type" ON "providers" USING btree ("provider_vendor_id","provider_type") WHERE "providers"."deleted_at" IS NULL;