-- CreateEnum CREATE TYPE "PluginInstanceMode" AS ENUM ('DISABLED', 'OPTIONAL', 'REQUIRED'); -- CreateTable CREATE TABLE "plugins" ( "id" TEXT NOT NULL, "name" TEXT NOT NULL, "version" TEXT NOT NULL, "api_version" TEXT NOT NULL, "kind" TEXT NOT NULL, "mode" "PluginInstanceMode" NOT NULL DEFAULT 'DISABLED', "manifest" JSONB NOT NULL, "installed_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "removed_at" TIMESTAMP(3), CONSTRAINT "plugins_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "pond_plugins" ( "pond_id" TEXT NOT NULL, "plugin_id" TEXT NOT NULL, "enabled" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "pond_plugins_pkey" PRIMARY KEY ("pond_id","plugin_id") ); -- AddForeignKey ALTER TABLE "pond_plugins" ADD CONSTRAINT "pond_plugins_pond_id_fkey" FOREIGN KEY ("pond_id") REFERENCES "ponds"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "pond_plugins" ADD CONSTRAINT "pond_plugins_plugin_id_fkey" FOREIGN KEY ("plugin_id") REFERENCES "plugins"("id") ON DELETE CASCADE ON UPDATE CASCADE;