Spaces:
Paused
Paused
| -- Rollback: | |
| -- DROP INDEX IF EXISTS "plugin_logs_level_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_logs_plugin_time_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_company_settings_company_plugin_uq"; | |
| -- DROP INDEX IF EXISTS "plugin_company_settings_plugin_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_company_settings_company_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_webhook_deliveries_key_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_webhook_deliveries_status_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_webhook_deliveries_plugin_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_job_runs_status_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_job_runs_plugin_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_job_runs_job_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_jobs_unique_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_jobs_next_run_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_jobs_plugin_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_entities_external_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_entities_scope_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_entities_type_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_entities_plugin_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_state_plugin_scope_idx"; | |
| -- DROP INDEX IF EXISTS "plugin_config_plugin_id_idx"; | |
| -- DROP INDEX IF EXISTS "plugins_status_idx"; | |
| -- DROP INDEX IF EXISTS "plugins_plugin_key_idx"; | |
| -- DROP TABLE IF EXISTS "plugin_logs"; | |
| -- DROP TABLE IF EXISTS "plugin_company_settings"; | |
| -- DROP TABLE IF EXISTS "plugin_webhook_deliveries"; | |
| -- DROP TABLE IF EXISTS "plugin_job_runs"; | |
| -- DROP TABLE IF EXISTS "plugin_jobs"; | |
| -- DROP TABLE IF EXISTS "plugin_entities"; | |
| -- DROP TABLE IF EXISTS "plugin_state"; | |
| -- DROP TABLE IF EXISTS "plugin_config"; | |
| -- DROP TABLE IF EXISTS "plugins"; | |
| CREATE TABLE "plugins" ( | |
| "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, | |
| "plugin_key" text NOT NULL, | |
| "package_name" text NOT NULL, | |
| "package_path" text, | |
| "version" text NOT NULL, | |
| "api_version" integer DEFAULT 1 NOT NULL, | |
| "categories" jsonb DEFAULT '[]'::jsonb NOT NULL, | |
| "manifest_json" jsonb NOT NULL, | |
| "status" text DEFAULT 'installed' NOT NULL, | |
| "install_order" integer, | |
| "last_error" text, | |
| "installed_at" timestamp with time zone DEFAULT now() NOT NULL, | |
| "updated_at" timestamp with time zone DEFAULT now() NOT NULL | |
| ); | |
| --> statement-breakpoint | |
| CREATE TABLE "plugin_config" ( | |
| "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, | |
| "plugin_id" uuid NOT NULL, | |
| "config_json" jsonb DEFAULT '{}'::jsonb NOT NULL, | |
| "last_error" 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 "plugin_state" ( | |
| "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, | |
| "plugin_id" uuid NOT NULL, | |
| "scope_kind" text NOT NULL, | |
| "scope_id" text, | |
| "namespace" text DEFAULT 'default' NOT NULL, | |
| "state_key" text NOT NULL, | |
| "value_json" jsonb NOT NULL, | |
| "updated_at" timestamp with time zone DEFAULT now() NOT NULL, | |
| CONSTRAINT "plugin_state_unique_entry_idx" UNIQUE NULLS NOT DISTINCT("plugin_id","scope_kind","scope_id","namespace","state_key") | |
| ); | |
| --> statement-breakpoint | |
| CREATE TABLE "plugin_entities" ( | |
| "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, | |
| "plugin_id" uuid NOT NULL, | |
| "entity_type" text NOT NULL, | |
| "scope_kind" text NOT NULL, | |
| "scope_id" text, | |
| "external_id" text, | |
| "title" text, | |
| "status" text, | |
| "data" 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 "plugin_jobs" ( | |
| "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, | |
| "plugin_id" uuid NOT NULL, | |
| "job_key" text NOT NULL, | |
| "schedule" text NOT NULL, | |
| "status" text DEFAULT 'active' NOT NULL, | |
| "last_run_at" timestamp with time zone, | |
| "next_run_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 "plugin_job_runs" ( | |
| "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, | |
| "job_id" uuid NOT NULL, | |
| "plugin_id" uuid NOT NULL, | |
| "trigger" text NOT NULL, | |
| "status" text DEFAULT 'pending' NOT NULL, | |
| "duration_ms" integer, | |
| "error" text, | |
| "logs" jsonb DEFAULT '[]'::jsonb NOT NULL, | |
| "started_at" timestamp with time zone, | |
| "finished_at" timestamp with time zone, | |
| "created_at" timestamp with time zone DEFAULT now() NOT NULL | |
| ); | |
| --> statement-breakpoint | |
| CREATE TABLE "plugin_webhook_deliveries" ( | |
| "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, | |
| "plugin_id" uuid NOT NULL, | |
| "webhook_key" text NOT NULL, | |
| "external_id" text, | |
| "status" text DEFAULT 'pending' NOT NULL, | |
| "duration_ms" integer, | |
| "error" text, | |
| "payload" jsonb NOT NULL, | |
| "headers" jsonb DEFAULT '{}'::jsonb NOT NULL, | |
| "started_at" timestamp with time zone, | |
| "finished_at" timestamp with time zone, | |
| "created_at" timestamp with time zone DEFAULT now() NOT NULL | |
| ); | |
| --> statement-breakpoint | |
| CREATE TABLE "plugin_company_settings" ( | |
| "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, | |
| "company_id" uuid NOT NULL, | |
| "plugin_id" uuid NOT NULL, | |
| "settings_json" jsonb DEFAULT '{}'::jsonb NOT NULL, | |
| "last_error" text, | |
| "created_at" timestamp with time zone DEFAULT now() NOT NULL, | |
| "updated_at" timestamp with time zone DEFAULT now() NOT NULL, | |
| "enabled" boolean DEFAULT true NOT NULL | |
| ); | |
| --> statement-breakpoint | |
| CREATE TABLE "plugin_logs" ( | |
| "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(), | |
| "plugin_id" uuid NOT NULL, | |
| "level" text NOT NULL DEFAULT 'info', | |
| "message" text NOT NULL, | |
| "meta" jsonb, | |
| "created_at" timestamp with time zone NOT NULL DEFAULT now() | |
| ); | |
| --> statement-breakpoint | |
| ALTER TABLE "plugin_config" ADD CONSTRAINT "plugin_config_plugin_id_plugins_id_fk" FOREIGN KEY ("plugin_id") REFERENCES "public"."plugins"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| ALTER TABLE "plugin_state" ADD CONSTRAINT "plugin_state_plugin_id_plugins_id_fk" FOREIGN KEY ("plugin_id") REFERENCES "public"."plugins"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| ALTER TABLE "plugin_entities" ADD CONSTRAINT "plugin_entities_plugin_id_plugins_id_fk" FOREIGN KEY ("plugin_id") REFERENCES "public"."plugins"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| ALTER TABLE "plugin_jobs" ADD CONSTRAINT "plugin_jobs_plugin_id_plugins_id_fk" FOREIGN KEY ("plugin_id") REFERENCES "public"."plugins"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| ALTER TABLE "plugin_job_runs" ADD CONSTRAINT "plugin_job_runs_job_id_plugin_jobs_id_fk" FOREIGN KEY ("job_id") REFERENCES "public"."plugin_jobs"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| ALTER TABLE "plugin_job_runs" ADD CONSTRAINT "plugin_job_runs_plugin_id_plugins_id_fk" FOREIGN KEY ("plugin_id") REFERENCES "public"."plugins"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| ALTER TABLE "plugin_webhook_deliveries" ADD CONSTRAINT "plugin_webhook_deliveries_plugin_id_plugins_id_fk" FOREIGN KEY ("plugin_id") REFERENCES "public"."plugins"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| ALTER TABLE "plugin_company_settings" ADD CONSTRAINT "plugin_company_settings_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| ALTER TABLE "plugin_company_settings" ADD CONSTRAINT "plugin_company_settings_plugin_id_plugins_id_fk" FOREIGN KEY ("plugin_id") REFERENCES "public"."plugins"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| ALTER TABLE "plugin_logs" ADD CONSTRAINT "plugin_logs_plugin_id_plugins_id_fk" FOREIGN KEY ("plugin_id") REFERENCES "public"."plugins"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint | |
| CREATE UNIQUE INDEX "plugins_plugin_key_idx" ON "plugins" USING btree ("plugin_key");--> statement-breakpoint | |
| CREATE INDEX "plugins_status_idx" ON "plugins" USING btree ("status");--> statement-breakpoint | |
| CREATE UNIQUE INDEX "plugin_config_plugin_id_idx" ON "plugin_config" USING btree ("plugin_id");--> statement-breakpoint | |
| CREATE INDEX "plugin_state_plugin_scope_idx" ON "plugin_state" USING btree ("plugin_id","scope_kind");--> statement-breakpoint | |
| CREATE INDEX "plugin_entities_plugin_idx" ON "plugin_entities" USING btree ("plugin_id");--> statement-breakpoint | |
| CREATE INDEX "plugin_entities_type_idx" ON "plugin_entities" USING btree ("entity_type");--> statement-breakpoint | |
| CREATE INDEX "plugin_entities_scope_idx" ON "plugin_entities" USING btree ("scope_kind","scope_id");--> statement-breakpoint | |
| CREATE UNIQUE INDEX "plugin_entities_external_idx" ON "plugin_entities" USING btree ("plugin_id","entity_type","external_id");--> statement-breakpoint | |
| CREATE INDEX "plugin_jobs_plugin_idx" ON "plugin_jobs" USING btree ("plugin_id");--> statement-breakpoint | |
| CREATE INDEX "plugin_jobs_next_run_idx" ON "plugin_jobs" USING btree ("next_run_at");--> statement-breakpoint | |
| CREATE UNIQUE INDEX "plugin_jobs_unique_idx" ON "plugin_jobs" USING btree ("plugin_id","job_key");--> statement-breakpoint | |
| CREATE INDEX "plugin_job_runs_job_idx" ON "plugin_job_runs" USING btree ("job_id");--> statement-breakpoint | |
| CREATE INDEX "plugin_job_runs_plugin_idx" ON "plugin_job_runs" USING btree ("plugin_id");--> statement-breakpoint | |
| CREATE INDEX "plugin_job_runs_status_idx" ON "plugin_job_runs" USING btree ("status");--> statement-breakpoint | |
| CREATE INDEX "plugin_webhook_deliveries_plugin_idx" ON "plugin_webhook_deliveries" USING btree ("plugin_id");--> statement-breakpoint | |
| CREATE INDEX "plugin_webhook_deliveries_status_idx" ON "plugin_webhook_deliveries" USING btree ("status");--> statement-breakpoint | |
| CREATE INDEX "plugin_webhook_deliveries_key_idx" ON "plugin_webhook_deliveries" USING btree ("webhook_key");--> statement-breakpoint | |
| CREATE INDEX "plugin_company_settings_company_idx" ON "plugin_company_settings" USING btree ("company_id");--> statement-breakpoint | |
| CREATE INDEX "plugin_company_settings_plugin_idx" ON "plugin_company_settings" USING btree ("plugin_id");--> statement-breakpoint | |
| CREATE UNIQUE INDEX "plugin_company_settings_company_plugin_uq" ON "plugin_company_settings" USING btree ("company_id","plugin_id");--> statement-breakpoint | |
| CREATE INDEX "plugin_logs_plugin_time_idx" ON "plugin_logs" USING btree ("plugin_id","created_at");--> statement-breakpoint | |
| CREATE INDEX "plugin_logs_level_idx" ON "plugin_logs" USING btree ("level"); | |