CREATE TABLE "webhook_deliveries" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "user_id" text NOT NULL, "endpoint_id" uuid NOT NULL, "event" text NOT NULL, "payload" jsonb NOT NULL, "status" text DEFAULT 'pending' NOT NULL, "attempts" integer DEFAULT 0 NOT NULL, "max_attempts" integer DEFAULT 5 NOT NULL, "next_attempt_at" timestamp with time zone DEFAULT now() NOT NULL, "response_status" integer, "response_body" text, "error" text, "delivered_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 TABLE "webhook_endpoints" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "user_id" text NOT NULL, "url" text NOT NULL, "description" text, "events" text[] DEFAULT '{}'::text[] NOT NULL, "secret" text NOT NULL, "status" text DEFAULT 'active' NOT NULL, "source" text DEFAULT 'dashboard' NOT NULL, "last_success_at" timestamp with time zone, "last_error_at" timestamp with time zone, "last_error" text, "failure_count" integer DEFAULT 0 NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint ALTER TABLE "webhook_deliveries" ADD CONSTRAINT "webhook_deliveries_user_id_profiles_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."profiles"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "webhook_deliveries" ADD CONSTRAINT "webhook_deliveries_endpoint_id_webhook_endpoints_id_fk" FOREIGN KEY ("endpoint_id") REFERENCES "public"."webhook_endpoints"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "webhook_endpoints" ADD CONSTRAINT "webhook_endpoints_user_id_profiles_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."profiles"("id") ON DELETE cascade ON UPDATE no action;