Files
query/test/examples.ts

267 lines
6.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { createQueryApi } from '../src/query-api.ts';
const api = {
"app_domain_manager": {
/**
* 获取域名信息可以通过id或者domain进行查询
*
* @param data - Request parameters
* @param data.data - {object}
*/
"get": {
"path": "app_domain_manager",
"key": "get",
"description": "获取域名信息可以通过id或者domain进行查询",
"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"
}
},
/**
* 获取域名列表,支持分页
*
* @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({
data: {
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" }
}
});
// ✅ 示例 3list 方法没有 required 字段,所有参数都是可选的
queryApi.app_domain_manager.list({
data: {
page: 1,
pageSize: 10
}
});
// ✅ 示例 4list 方法可以不传参数
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 } }