From 585becb6f5f9fd7c7f954197b5f63224f3ff9072 Mon Sep 17 00:00:00 2001 From: abearxiong Date: Wed, 18 Feb 2026 05:00:22 +0800 Subject: [PATCH] test --- test/examples.ts | 227 ++--------------------------------------------- 1 file changed, 7 insertions(+), 220 deletions(-) diff --git a/test/examples.ts b/test/examples.ts index 9de107b..a1a12ac 100644 --- a/test/examples.ts +++ b/test/examples.ts @@ -1,5 +1,5 @@ -import { createQueryApi } from '../src/query-api.ts'; +import { createQueryApi } from '@kevisual/query/api'; const api = { "app_domain_manager": { /** @@ -25,7 +25,8 @@ const api = { "type": "string" } }, - "additionalProperties": false + "additionalProperties": false, + "required": ["id", "domain"] } }, "viewItem": { @@ -38,229 +39,15 @@ const api = { "url": "/api/router", "source": "query-proxy-api" } - }, - /** - * 获取域名列表,支持分页 - * - * @param data - Request parameters - * @param data.data - {object} - */ - "list": { - "path": "app_domain_manager", - "key": "list", - "description": "获取域名列表,支持分页", - "metadata": { - "args": { - "data": { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "type": "object", - "properties": { - "page": { - "type": "number" - }, - "pageSize": { - "type": "number" - } - }, - "additionalProperties": false - } - }, - "viewItem": { - "api": { - "url": "/api/router" - }, - "type": "api", - "title": "路由" - }, - "url": "/api/router", - "source": "query-proxy-api" - } - }, - /** - * 更新一个域名的信息 - * - * @param data - Request parameters - * @param data.data - {object} - */ - "update": { - "path": "app_domain_manager", - "key": "update", - "description": "更新一个域名的信息", - "metadata": { - "args": { - "data": { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "appId": { - "type": "string" - }, - "status": { - "type": "string", - "enum": [ - "active", - "inactive" - ] - }, - "data": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - } - }, - "required": [ - "domain" - ], - "additionalProperties": false - } - }, - "viewItem": { - "api": { - "url": "/api/router" - }, - "type": "api", - "title": "路由" - }, - "url": "/api/router", - "source": "query-proxy-api" - } - }, - /** - * 删除一个域名 - * - * @param data - Request parameters - * @param data.data - {object} - */ - "delete": { - "path": "app_domain_manager", - "key": "delete", - "description": "删除一个域名", - "metadata": { - "args": { - "data": { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "domain": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "viewItem": { - "api": { - "url": "/api/router" - }, - "type": "api", - "title": "路由" - }, - "url": "/api/router", - "source": "query-proxy-api" - } - } - }, - "app": { - "getDomainApp": { - "path": "app", - "key": "getDomainApp", - "metadata": { - "viewItem": { - "api": { - "url": "/api/router" - }, - "type": "api", - "title": "路由" - }, - "url": "/api/router", - "source": "query-proxy-api" - } - } - }, - "app-domain": { - "create": { - "path": "app-domain", - "key": "create", - "metadata": { - "viewItem": { - "api": { - "url": "/api/router" - }, - "type": "api", - "title": "路由" - }, - "url": "/api/router", - "source": "query-proxy-api" - } - }, - "update": { - "path": "app-domain", - "key": "update", - "metadata": { - "viewItem": { - "api": { - "url": "/api/router" - }, - "type": "api", - "title": "路由" - }, - "url": "/api/router", - "source": "query-proxy-api" - } } } } as const; const queryApi = createQueryApi({ api }); export { queryApi }; -// ===== 类型推断示例 ===== - -// ✅ 示例 1:只传必需字段 domain -queryApi.app_domain_manager.update({ +queryApi.app_domain_manager.get({ data: { - domain: "example.com" + id: '123', + domain: 'example.com' } -}); - -// ✅ 示例 2:传必需字段 + 可选字段 -queryApi.app_domain_manager.update({ - data: { - domain: "example.com", - id: "123", - appId: "app-001", - status: "active", // enum 类型,只能是 'active' 或 'inactive' - data: { custom: "metadata" } - } -}); - -// ✅ 示例 3:list 方法没有 required 字段,所有参数都是可选的 -queryApi.app_domain_manager.list({ - data: { - page: 1, - pageSize: 10 - } -}); - -// ✅ 示例 4:list 方法可以不传参数 -queryApi.app_domain_manager.list({ - data: {} -}); - -// 检查类型推断 -type UpdateParams = Parameters[0]; -// 推断为: { data: { domain: string } & { id?: string, appId?: string, status?: "active" | "inactive", data?: Record } } - -type ListParams = Parameters[0]; -// 推断为: { data: { page?: number, pageSize?: number } } - +}) \ No newline at end of file