36 lines
2.1 KiB
SQL
36 lines
2.1 KiB
SQL
CREATE TYPE "public"."central_service" AS ENUM('ai', 'banking');--> statement-breakpoint
|
|
CREATE TYPE "public"."usage_status" AS ENUM('succeeded', 'failed');--> statement-breakpoint
|
|
CREATE TABLE "service_entitlements" (
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
"instance_id" uuid NOT NULL,
|
|
"service" "central_service" NOT NULL,
|
|
"enabled" boolean DEFAULT false NOT NULL,
|
|
"monthly_limit" bigint,
|
|
"unit_price_micros" bigint DEFAULT 0 NOT NULL,
|
|
"metadata" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "service_usage_events" (
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
"request_id" text NOT NULL,
|
|
"instance_id" uuid NOT NULL,
|
|
"service" "central_service" NOT NULL,
|
|
"operation" text NOT NULL,
|
|
"units" bigint DEFAULT 1 NOT NULL,
|
|
"cost_micros" bigint DEFAULT 0 NOT NULL,
|
|
"status" "usage_status" NOT NULL,
|
|
"provider" text,
|
|
"provider_request_id" text,
|
|
"error_code" text,
|
|
"metadata" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
CONSTRAINT "service_usage_events_request_id_unique" UNIQUE("request_id")
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "service_entitlements" ADD CONSTRAINT "service_entitlements_instance_id_push_instances_id_fk" FOREIGN KEY ("instance_id") REFERENCES "public"."push_instances"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "service_usage_events" ADD CONSTRAINT "service_usage_events_instance_id_push_instances_id_fk" FOREIGN KEY ("instance_id") REFERENCES "public"."push_instances"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
CREATE UNIQUE INDEX "service_entitlements_instance_service_idx" ON "service_entitlements" USING btree ("instance_id","service");--> statement-breakpoint
|
|
CREATE UNIQUE INDEX "service_usage_events_request_id_idx" ON "service_usage_events" USING btree ("request_id");--> statement-breakpoint
|
|
CREATE INDEX "service_usage_events_instance_service_created_idx" ON "service_usage_events" USING btree ("instance_id","service","created_at"); |