215 lines · 12.3 KB · Text
RawDownload
CREATE TABLE IF NOT EXISTS `openapi_source` (`id` text NOT NULL, `scope_id` text NOT NULL, `name` text NOT NULL, `spec` text NOT NULL, `source_url` text, `base_url` text, `oauth2` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `openapi_operation` (`id` text NOT NULL, `scope_id` text NOT NULL, `source_id` text NOT NULL, `binding` text NOT NULL);--> statement-breakpointCREATE TABLE IF NOT EXISTS `openapi_source_header` (`id` text, `scope_id` text, `source_id` text, `name` text, `kind` text, `text_value` text, `slot_key` text, `prefix` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `openapi_source_query_param` (`id` text, `scope_id` text, `source_id` text, `name` text, `kind` text, `text_value` text, `slot_key` text, `prefix` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `openapi_source_spec_fetch_header` (`id` text, `scope_id` text, `source_id` text, `name` text, `kind` text, `text_value` text, `slot_key` text, `prefix` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `openapi_source_spec_fetch_query_param` (`id` text, `scope_id` text, `source_id` text, `name` text, `kind` text, `text_value` text, `slot_key` text, `prefix` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `graphql_source` (`id` text NOT NULL, `scope_id` text NOT NULL, `name` text NOT NULL, `endpoint` text NOT NULL, `auth_kind` text NOT NULL DEFAULT 'none', `auth_connection_slot` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `graphql_source_header` (`id` text, `scope_id` text, `source_id` text, `name` text, `kind` text, `text_value` text, `slot_key` text, `prefix` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `graphql_source_query_param` (`id` text, `scope_id` text, `source_id` text, `name` text, `kind` text, `text_value` text, `slot_key` text, `prefix` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `graphql_operation` (`id` text NOT NULL, `scope_id` text NOT NULL, `source_id` text NOT NULL, `binding` text NOT NULL);--> statement-breakpointCREATE TABLE IF NOT EXISTS `mcp_source` (`id` text NOT NULL, `scope_id` text NOT NULL, `name` text NOT NULL, `config` text NOT NULL, `auth_kind` text NOT NULL DEFAULT 'none', `auth_header_name` text, `auth_header_slot` text, `auth_header_prefix` text, `auth_connection_slot` text, `auth_client_id_slot` text, `auth_client_secret_slot` text, `created_at` integer);--> statement-breakpointCREATE TABLE IF NOT EXISTS `mcp_source_header` (`id` text, `scope_id` text, `source_id` text, `name` text, `kind` text, `text_value` text, `slot_key` text, `prefix` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `mcp_source_query_param` (`id` text, `scope_id` text, `source_id` text, `name` text, `kind` text, `text_value` text, `slot_key` text, `prefix` text);--> statement-breakpointCREATE TABLE IF NOT EXISTS `mcp_binding` (`id` text NOT NULL, `scope_id` text NOT NULL, `source_id` text NOT NULL, `binding` text NOT NULL, `created_at` integer);--> statement-breakpointCREATE TABLE IF NOT EXISTS `plugin_storage` (  `id` text NOT NULL,  `scope_id` text NOT NULL,  `plugin_id` text NOT NULL,  `collection` text NOT NULL,  `key` text NOT NULL,  `data` text NOT NULL,  `created_at` integer NOT NULL,  `updated_at` integer NOT NULL,  PRIMARY KEY(`scope_id`, `id`));--> statement-breakpointCREATE INDEX IF NOT EXISTS `plugin_storage_scope_id_idx` ON `plugin_storage` (`scope_id`);--> statement-breakpointCREATE INDEX IF NOT EXISTS `plugin_storage_plugin_id_collection_idx` ON `plugin_storage` (`plugin_id`, `collection`);--> statement-breakpointCREATE INDEX IF NOT EXISTS `plugin_storage_key_idx` ON `plugin_storage` (`key`);--> statement-breakpointINSERT OR REPLACE INTO `plugin_storage` (`id`, `scope_id`, `plugin_id`, `collection`, `key`, `data`, `created_at`, `updated_at`)SELECT  json_array('openapi', 'source', s.`id`),  s.`scope_id`,  'openapi',  'source',  s.`id`,  json_object(    'namespace', s.`id`,    'scope', s.`scope_id`,    'name', s.`name`,    'config', json_patch(      json_patch(        json_patch(          json_patch(            json_patch(              json_patch(                json_object('spec', s.`spec`),                CASE WHEN s.`source_url` IS NULL THEN json_object() ELSE json_object('sourceUrl', s.`source_url`) END              ),              CASE WHEN s.`base_url` IS NULL THEN json_object() ELSE json_object('baseUrl', s.`base_url`) END            ),            CASE WHEN h.`headers` IS NULL THEN json_object() ELSE json_object('headers', json(h.`headers`)) END          ),          CASE WHEN q.`queryParams` IS NULL THEN json_object() ELSE json_object('queryParams', json(q.`queryParams`)) END        ),        CASE WHEN sfh.`headers` IS NULL AND sfq.`queryParams` IS NULL THEN json_object() ELSE json_object('specFetchCredentials', json_patch(          CASE WHEN sfh.`headers` IS NULL THEN json_object() ELSE json_object('headers', json(sfh.`headers`)) END,          CASE WHEN sfq.`queryParams` IS NULL THEN json_object() ELSE json_object('queryParams', json(sfq.`queryParams`)) END        )) END      ),      CASE WHEN s.`oauth2` IS NULL THEN json_object() ELSE json_object('oauth2', json(s.`oauth2`)) END    )  ),  unixepoch('now') * 1000,  unixepoch('now') * 1000FROM `openapi_source` sLEFT JOIN (  SELECT `scope_id`, `source_id`, json_group_object(`name`, CASE WHEN `kind` = 'text' THEN json_quote(`text_value`) ELSE json_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_group_object(`name`, CASE WHEN `kind` = 'text' THEN json_quote(`text_value`) ELSE json_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_group_object(`name`, CASE WHEN `kind` = 'text' THEN json_quote(`text_value`) ELSE json_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_group_object(`name`, CASE WHEN `kind` = 'text' THEN json_quote(`text_value`) ELSE json_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`;--> statement-breakpointINSERT OR REPLACE INTO `plugin_storage` (`id`, `scope_id`, `plugin_id`, `collection`, `key`, `data`, `created_at`, `updated_at`)SELECT json_array('openapi', 'operation', o.`id`), o.`scope_id`, 'openapi', 'operation', o.`id`, json_object('toolId', o.`id`, 'sourceId', o.`source_id`, 'binding', json(o.`binding`)), unixepoch('now') * 1000, unixepoch('now') * 1000FROM `openapi_operation` o;--> statement-breakpointINSERT OR REPLACE INTO `plugin_storage` (`id`, `scope_id`, `plugin_id`, `collection`, `key`, `data`, `created_at`, `updated_at`)SELECT  json_array('graphql', 'source', s.`id`),  s.`scope_id`,  'graphql',  'source',  s.`id`,  json_object(    'namespace', s.`id`,    'scope', s.`scope_id`,    'name', s.`name`,    'endpoint', s.`endpoint`,    'headers', COALESCE(json(h.`headers`), json_object()),    'queryParams', COALESCE(json(q.`queryParams`), json_object()),    'auth', CASE WHEN s.`auth_kind` = 'oauth2' AND s.`auth_connection_slot` IS NOT NULL THEN json_object('kind', 'oauth2', 'connectionSlot', s.`auth_connection_slot`) ELSE json_object('kind', 'none') END  ),  unixepoch('now') * 1000,  unixepoch('now') * 1000FROM `graphql_source` sLEFT JOIN (  SELECT `scope_id`, `source_id`, json_group_object(`name`, CASE WHEN `kind` = 'text' THEN json_quote(`text_value`) ELSE json_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_group_object(`name`, CASE WHEN `kind` = 'text' THEN json_quote(`text_value`) ELSE json_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`;--> statement-breakpointINSERT OR REPLACE INTO `plugin_storage` (`id`, `scope_id`, `plugin_id`, `collection`, `key`, `data`, `created_at`, `updated_at`)SELECT json_array('graphql', 'operation', o.`id`), o.`scope_id`, 'graphql', 'operation', o.`id`, json_object('toolId', o.`id`, 'sourceId', o.`source_id`, 'binding', json(o.`binding`)), unixepoch('now') * 1000, unixepoch('now') * 1000FROM `graphql_operation` o;--> statement-breakpointINSERT OR REPLACE INTO `plugin_storage` (`id`, `scope_id`, `plugin_id`, `collection`, `key`, `data`, `created_at`, `updated_at`)SELECT  json_array('mcp', 'source', s.`id`),  s.`scope_id`,  'mcp',  'source',  s.`id`,  json_object(    'namespace', s.`id`,    'scope', s.`scope_id`,    'name', s.`name`,    'config', CASE WHEN json_extract(s.`config`, '$.transport') = 'remote' THEN json_patch(      json_patch(        json_patch(          json(s.`config`),          CASE WHEN h.`headers` IS NULL THEN json_object() ELSE json_object('headers', json(h.`headers`)) END        ),        CASE WHEN q.`queryParams` IS NULL THEN json_object() ELSE json_object('queryParams', json(q.`queryParams`)) END      ),      json_object('auth',        CASE          WHEN s.`auth_kind` = 'header' THEN json_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_object('kind', 'oauth2', 'connectionSlot', s.`auth_connection_slot`, 'clientIdSlot', s.`auth_client_id_slot`, 'clientSecretSlot', s.`auth_client_secret_slot`)          ELSE json_object('kind', 'none')        END      )    ) ELSE json(s.`config`) END  ),  unixepoch('now') * 1000,  unixepoch('now') * 1000FROM `mcp_source` sLEFT JOIN (  SELECT `scope_id`, `source_id`, json_group_object(`name`, CASE WHEN `kind` = 'text' THEN json_quote(`text_value`) ELSE json_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_group_object(`name`, CASE WHEN `kind` = 'text' THEN json_quote(`text_value`) ELSE json_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`;--> statement-breakpointINSERT OR REPLACE INTO `plugin_storage` (`id`, `scope_id`, `plugin_id`, `collection`, `key`, `data`, `created_at`, `updated_at`)SELECT json_array('mcp', 'binding', b.`id`), b.`scope_id`, 'mcp', 'binding', b.`id`, json_object('namespace', b.`source_id`, 'toolId', b.`id`, 'binding', json(b.`binding`)), COALESCE(b.`created_at`, unixepoch('now') * 1000), unixepoch('now') * 1000FROM `mcp_binding` b;--> 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`;