task ep.1.4

This commit is contained in:
phaichayon
2026-07-13 12:48:33 +07:00
parent d78c56148e
commit 06af36156f
18 changed files with 10513 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
CREATE TABLE "business_event_outbox" (
"id" text PRIMARY KEY NOT NULL,
"organization_id" text NOT NULL,
"event_type" text NOT NULL,
"schema_version" integer NOT NULL,
"entity_type" text NOT NULL,
"entity_id" text NOT NULL,
"correlation_id" text NOT NULL,
"causation_id" text,
"event_envelope" jsonb NOT NULL,
"delivery_status" text DEFAULT 'pending' NOT NULL,
"attempt_count" integer DEFAULT 0 NOT NULL,
"available_at" timestamp with time zone DEFAULT now() NOT NULL,
"processing_started_at" timestamp with time zone,
"dispatched_at" timestamp with time zone,
"failed_at" timestamp with time zone,
"dead_lettered_at" timestamp with time zone,
"last_error_code" text,
"last_error_message" text,
"occurred_at" timestamp with time zone 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 "projection_consumer_checkpoints" (
"id" text PRIMARY KEY NOT NULL,
"organization_id" text NOT NULL,
"consumer_name" text NOT NULL,
"projection_name" text NOT NULL,
"event_id" text NOT NULL,
"event_type" text NOT NULL,
"schema_version" integer NOT NULL,
"processing_status" text DEFAULT 'pending' NOT NULL,
"attempt_count" integer DEFAULT 0 NOT NULL,
"first_attempted_at" timestamp with time zone,
"last_attempted_at" timestamp with time zone,
"completed_at" timestamp with time zone,
"next_retry_at" timestamp with time zone,
"error_code" text,
"error_message" text,
"processing_duration_ms" integer,
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE "projection_dead_letters" (
"id" text PRIMARY KEY NOT NULL,
"organization_id" text NOT NULL,
"consumer_name" text NOT NULL,
"projection_name" text NOT NULL,
"event_id" text NOT NULL,
"event_type" text NOT NULL,
"schema_version" integer NOT NULL,
"attempt_count" integer NOT NULL,
"error_code" text NOT NULL,
"error_message" text NOT NULL,
"failure_metadata" jsonb,
"status" text DEFAULT 'open' NOT NULL,
"resolved_at" timestamp with time zone,
"resolved_by" text,
"resolution_reason" text,
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE "projection_health_snapshots" (
"id" text PRIMARY KEY NOT NULL,
"organization_id" text NOT NULL,
"projection_name" text NOT NULL,
"consumer_name" text NOT NULL,
"status" text DEFAULT 'healthy' NOT NULL,
"last_processed_event_id" text,
"last_successful_processing_at" timestamp with time zone,
"pending_count" integer DEFAULT 0 NOT NULL,
"retry_count" integer DEFAULT 0 NOT NULL,
"dead_letter_count" integer DEFAULT 0 NOT NULL,
"unsupported_version_count" integer DEFAULT 0 NOT NULL,
"processing_lag_ms" integer DEFAULT 0 NOT NULL,
"average_processing_duration_ms" integer DEFAULT 0 NOT NULL,
"last_rebuild_at" timestamp with time zone,
"rebuild_source" text,
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE TABLE "projection_rebuild_runs" (
"id" text PRIMARY KEY NOT NULL,
"organization_id" text NOT NULL,
"projection_name" text NOT NULL,
"entity_type" text,
"entity_id" text,
"occurred_from" timestamp with time zone,
"occurred_to" timestamp with time zone,
"dry_run" boolean DEFAULT true NOT NULL,
"reset_existing" boolean DEFAULT false NOT NULL,
"source_strategy" text NOT NULL,
"status" text DEFAULT 'pending' NOT NULL,
"processed_count" integer DEFAULT 0 NOT NULL,
"skipped_count" integer DEFAULT 0 NOT NULL,
"failed_count" integer DEFAULT 0 NOT NULL,
"error_code" text,
"error_message" text,
"requested_by" text NOT NULL,
"started_at" timestamp with time zone,
"completed_at" timestamp with time zone,
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE INDEX "business_event_outbox_status_available_idx" ON "business_event_outbox" USING btree ("delivery_status","available_at");--> statement-breakpoint
CREATE INDEX "business_event_outbox_org_event_idx" ON "business_event_outbox" USING btree ("organization_id","event_type");--> statement-breakpoint
CREATE UNIQUE INDEX "projection_checkpoints_consumer_event_idx" ON "projection_consumer_checkpoints" USING btree ("consumer_name","event_id");--> statement-breakpoint
CREATE INDEX "projection_checkpoints_status_retry_idx" ON "projection_consumer_checkpoints" USING btree ("processing_status","next_retry_at");--> statement-breakpoint
CREATE UNIQUE INDEX "projection_dead_letters_consumer_event_idx" ON "projection_dead_letters" USING btree ("consumer_name","event_id");--> statement-breakpoint
CREATE INDEX "projection_dead_letters_org_status_idx" ON "projection_dead_letters" USING btree ("organization_id","status");--> statement-breakpoint
CREATE UNIQUE INDEX "projection_health_org_consumer_idx" ON "projection_health_snapshots" USING btree ("organization_id","consumer_name");--> statement-breakpoint
CREATE INDEX "projection_rebuild_runs_org_projection_idx" ON "projection_rebuild_runs" USING btree ("organization_id","projection_name");

File diff suppressed because it is too large Load Diff

View File

@@ -22,6 +22,13 @@
"when": 1783647090217,
"tag": "0002_empty_jean_grey",
"breakpoints": true
},
{
"idx": 3,
"version": "7",
"when": 1783917011479,
"tag": "0003_green_squadron_supreme",
"breakpoints": true
}
]
}