test
This commit is contained in:
227
test/examples.ts
227
test/examples.ts
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
import { createQueryApi } from '../src/query-api.ts';
|
import { createQueryApi } from '@kevisual/query/api';
|
||||||
const api = {
|
const api = {
|
||||||
"app_domain_manager": {
|
"app_domain_manager": {
|
||||||
/**
|
/**
|
||||||
@@ -25,7 +25,8 @@ const api = {
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false,
|
||||||
|
"required": ["id", "domain"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"viewItem": {
|
"viewItem": {
|
||||||
@@ -38,229 +39,15 @@ const api = {
|
|||||||
"url": "/api/router",
|
"url": "/api/router",
|
||||||
"source": "query-proxy-api"
|
"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;
|
} as const;
|
||||||
const queryApi = createQueryApi({ api });
|
const queryApi = createQueryApi({ api });
|
||||||
export { queryApi };
|
export { queryApi };
|
||||||
|
|
||||||
// ===== 类型推断示例 =====
|
queryApi.app_domain_manager.get({
|
||||||
|
|
||||||
// ✅ 示例 1:只传必需字段 domain
|
|
||||||
queryApi.app_domain_manager.update({
|
|
||||||
data: {
|
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<typeof queryApi.app_domain_manager.update>[0];
|
|
||||||
// 推断为: { data: { domain: string } & { id?: string, appId?: string, status?: "active" | "inactive", data?: Record<string, any> } }
|
|
||||||
|
|
||||||
type ListParams = Parameters<typeof queryApi.app_domain_manager.list>[0];
|
|
||||||
// 推断为: { data: { page?: number, pageSize?: number } }
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user