172 lines · 8.7 KB · Text
RawDownload
CREATE TABLE IF NOT EXISTS "plugin_storage" (  "row_id" varchar(255) PRIMARY KEY NOT NULL,  "id" varchar(255) NOT NULL,  "scope_id" varchar(255) NOT NULL,  "plugin_id" text NOT NULL,  "collection" text NOT NULL,  "key" text NOT NULL,  "data" json NOT NULL,  "created_at" timestamp NOT NULL,  "updated_at" timestamp NOT NULL);--> statement-breakpointCREATE UNIQUE INDEX IF NOT EXISTS "plugin_storage_scope_id_id_uidx" ON "plugin_storage" USING btree ("scope_id","id");--> statement-breakpointINSERT INTO "plugin_storage" ("row_id", "id", "scope_id", "plugin_id", "collection", "key", "data", "created_at", "updated_at")SELECT  'plugin_storage_' || md5('openapi:source:' || s."scope_id" || ':' || s."id"),  '["openapi","source",' || to_json(s."id")::text || ']',  s."scope_id",  'openapi',  'source',  s."id",  json_build_object(    'namespace', s."id",    'scope', s."scope_id",    'name', s."name",    'config', json_strip_nulls(json_build_object(      'spec', s."spec",      'sourceUrl', s."source_url",      'baseUrl', s."base_url",      'headers', h."headers",      'queryParams', q."queryParams",      'specFetchCredentials', CASE WHEN sfh."headers" IS NULL AND sfq."queryParams" IS NULL THEN NULL ELSE json_strip_nulls(json_build_object('headers', sfh."headers", 'queryParams', sfq."queryParams")) END,      'oauth2', s."oauth2"    ))  ),  now(),  now()FROM "openapi_source" sLEFT JOIN (  SELECT "scope_id", "source_id", json_object_agg("name", CASE WHEN "kind" = 'text' THEN to_json("text_value") ELSE json_build_object('kind', 'binding', 'slot', "slot_key", 'prefix', "prefix") END) AS "headers"  FROM "openapi_source_header"  GROUP BY "scope_id", "source_id") h ON h."scope_id" = s."scope_id" AND h."source_id" = s."id"LEFT JOIN (  SELECT "scope_id", "source_id", json_object_agg("name", CASE WHEN "kind" = 'text' THEN to_json("text_value") ELSE json_build_object('kind', 'binding', 'slot', "slot_key", 'prefix', "prefix") END) AS "queryParams"  FROM "openapi_source_query_param"  GROUP BY "scope_id", "source_id") q ON q."scope_id" = s."scope_id" AND q."source_id" = s."id"LEFT JOIN (  SELECT "scope_id", "source_id", json_object_agg("name", CASE WHEN "kind" = 'text' THEN to_json("text_value") ELSE json_build_object('kind', 'binding', 'slot', "slot_key", 'prefix', "prefix") END) AS "headers"  FROM "openapi_source_spec_fetch_header"  GROUP BY "scope_id", "source_id") sfh ON sfh."scope_id" = s."scope_id" AND sfh."source_id" = s."id"LEFT JOIN (  SELECT "scope_id", "source_id", json_object_agg("name", CASE WHEN "kind" = 'text' THEN to_json("text_value") ELSE json_build_object('kind', 'binding', 'slot', "slot_key", 'prefix', "prefix") END) AS "queryParams"  FROM "openapi_source_spec_fetch_query_param"  GROUP BY "scope_id", "source_id") sfq ON sfq."scope_id" = s."scope_id" AND sfq."source_id" = s."id"ON CONFLICT DO NOTHING;--> statement-breakpointINSERT INTO "plugin_storage" ("row_id", "id", "scope_id", "plugin_id", "collection", "key", "data", "created_at", "updated_at")SELECT 'plugin_storage_' || md5('openapi:operation:' || o."scope_id" || ':' || o."id"), '["openapi","operation",' || to_json(o."id")::text || ']', o."scope_id", 'openapi', 'operation', o."id", json_build_object('toolId', o."id", 'sourceId', o."source_id", 'binding', o."binding"), now(), now()FROM "openapi_operation" oON CONFLICT DO NOTHING;--> statement-breakpointINSERT INTO "plugin_storage" ("row_id", "id", "scope_id", "plugin_id", "collection", "key", "data", "created_at", "updated_at")SELECT  'plugin_storage_' || md5('graphql:source:' || s."scope_id" || ':' || s."id"),  '["graphql","source",' || to_json(s."id")::text || ']',  s."scope_id",  'graphql',  'source',  s."id",  json_build_object(    'namespace', s."id",    'scope', s."scope_id",    'name', s."name",    'endpoint', s."endpoint",    'headers', COALESCE(h."headers", '{}'::json),    'queryParams', COALESCE(q."queryParams", '{}'::json),    'auth', CASE WHEN s."auth_kind" = 'oauth2' AND s."auth_connection_slot" IS NOT NULL THEN json_build_object('kind', 'oauth2', 'connectionSlot', s."auth_connection_slot") ELSE json_build_object('kind', 'none') END  ),  now(),  now()FROM "graphql_source" sLEFT JOIN (  SELECT "scope_id", "source_id", json_object_agg("name", CASE WHEN "kind" = 'text' THEN to_json("text_value") ELSE json_build_object('kind', 'binding', 'slot', "slot_key", 'prefix', "prefix") END) AS "headers"  FROM "graphql_source_header"  GROUP BY "scope_id", "source_id") h ON h."scope_id" = s."scope_id" AND h."source_id" = s."id"LEFT JOIN (  SELECT "scope_id", "source_id", json_object_agg("name", CASE WHEN "kind" = 'text' THEN to_json("text_value") ELSE json_build_object('kind', 'binding', 'slot', "slot_key", 'prefix', "prefix") END) AS "queryParams"  FROM "graphql_source_query_param"  GROUP BY "scope_id", "source_id") q ON q."scope_id" = s."scope_id" AND q."source_id" = s."id"ON CONFLICT DO NOTHING;--> statement-breakpointINSERT INTO "plugin_storage" ("row_id", "id", "scope_id", "plugin_id", "collection", "key", "data", "created_at", "updated_at")SELECT 'plugin_storage_' || md5('graphql:operation:' || o."scope_id" || ':' || o."id"), '["graphql","operation",' || to_json(o."id")::text || ']', o."scope_id", 'graphql', 'operation', o."id", json_build_object('toolId', o."id", 'sourceId', o."source_id", 'binding', o."binding"), now(), now()FROM "graphql_operation" oON CONFLICT DO NOTHING;--> statement-breakpointINSERT INTO "plugin_storage" ("row_id", "id", "scope_id", "plugin_id", "collection", "key", "data", "created_at", "updated_at")SELECT  'plugin_storage_' || md5('mcp:source:' || s."scope_id" || ':' || s."id"),  '["mcp","source",' || to_json(s."id")::text || ']',  s."scope_id",  'mcp',  'source',  s."id",  json_build_object(    'namespace', s."id",    'scope', s."scope_id",    'name', s."name",    'config', CASE WHEN s."config"->>'transport' = 'remote' THEN jsonb_strip_nulls(s."config"::jsonb || jsonb_build_object(      'headers', h."headers",      'queryParams', q."queryParams",      'auth', CASE        WHEN s."auth_kind" = 'header' THEN json_build_object('kind', 'header', 'headerName', COALESCE(s."auth_header_name", ''), 'secretSlot', s."auth_header_slot", 'prefix', s."auth_header_prefix")        WHEN s."auth_kind" = 'oauth2' THEN json_build_object('kind', 'oauth2', 'connectionSlot', s."auth_connection_slot", 'clientIdSlot', s."auth_client_id_slot", 'clientSecretSlot', s."auth_client_secret_slot")        ELSE json_build_object('kind', 'none')      END    )) ELSE s."config"::jsonb END  ),  now(),  now()FROM "mcp_source" sLEFT JOIN (  SELECT "scope_id", "source_id", json_object_agg("name", CASE WHEN "kind" = 'text' THEN to_json("text_value") ELSE json_build_object('kind', 'binding', 'slot', "slot_key", 'prefix', "prefix") END) AS "headers"  FROM "mcp_source_header"  GROUP BY "scope_id", "source_id") h ON h."scope_id" = s."scope_id" AND h."source_id" = s."id"LEFT JOIN (  SELECT "scope_id", "source_id", json_object_agg("name", CASE WHEN "kind" = 'text' THEN to_json("text_value") ELSE json_build_object('kind', 'binding', 'slot', "slot_key", 'prefix', "prefix") END) AS "queryParams"  FROM "mcp_source_query_param"  GROUP BY "scope_id", "source_id") q ON q."scope_id" = s."scope_id" AND q."source_id" = s."id"ON CONFLICT DO NOTHING;--> statement-breakpointINSERT INTO "plugin_storage" ("row_id", "id", "scope_id", "plugin_id", "collection", "key", "data", "created_at", "updated_at")SELECT 'plugin_storage_' || md5('mcp:binding:' || b."scope_id" || ':' || b."id"), '["mcp","binding",' || to_json(b."id")::text || ']', b."scope_id", 'mcp', 'binding', b."id", json_build_object('namespace', b."source_id", 'toolId', b."id", 'binding', b."binding"), b."created_at", now()FROM "mcp_binding" bON CONFLICT DO NOTHING;--> statement-breakpointDROP TABLE IF EXISTS "openapi_source";--> statement-breakpointDROP TABLE IF EXISTS "openapi_operation";--> statement-breakpointDROP TABLE IF EXISTS "openapi_source_header";--> statement-breakpointDROP TABLE IF EXISTS "openapi_source_query_param";--> statement-breakpointDROP TABLE IF EXISTS "openapi_source_spec_fetch_header";--> statement-breakpointDROP TABLE IF EXISTS "openapi_source_spec_fetch_query_param";--> statement-breakpointDROP TABLE IF EXISTS "graphql_source";--> statement-breakpointDROP TABLE IF EXISTS "graphql_source_header";--> statement-breakpointDROP TABLE IF EXISTS "graphql_source_query_param";--> statement-breakpointDROP TABLE IF EXISTS "graphql_operation";--> statement-breakpointDROP TABLE IF EXISTS "mcp_source";--> statement-breakpointDROP TABLE IF EXISTS "mcp_source_header";--> statement-breakpointDROP TABLE IF EXISTS "mcp_source_query_param";--> statement-breakpointDROP TABLE IF EXISTS "mcp_binding";