feat: zentrale selfhost-dienste bereitstellen
This commit is contained in:
36
push-server/packages/db/drizzle/0001_central_services.sql
Normal file
36
push-server/packages/db/drizzle/0001_central_services.sql
Normal file
@@ -0,0 +1,36 @@
|
||||
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");
|
||||
Reference in New Issue
Block a user