feat: refactor route definitions and enhance metadata for app domain manager

- Updated route definitions in `src/route.ts` to utilize `toJSONSchema` and `pick` for cleaner route listing.
- Enhanced the `app.domain.manager` routes in `src/routes/app-manager/domain/manager.ts`:
  - Changed path format to snake_case.
  - Added descriptions for each route.
  - Introduced Zod schema validation for request arguments in metadata.
This commit is contained in:
2026-02-18 03:17:45 +08:00
parent 8c6d57d228
commit 6c611dcf78
4 changed files with 430 additions and 270 deletions

View File

@@ -1,15 +1,23 @@
import { app, db, schema } from '@/app.ts';
import { AppDomain, AppDomainHelper } from '../module/app-domain-drizzle.ts';
import { App } from '../module/app-drizzle.ts';
import { CustomError } from '@kevisual/router';
import { eq, or } from 'drizzle-orm';
import { eq } from 'drizzle-orm';
import { randomUUID } from 'crypto';
import z from 'zod';
app
.route({
path: 'app.domain.manager',
path: 'app_domain_manager',
key: 'list',
description: '获取域名列表,支持分页',
middleware: ['auth-admin'],
metadata: {
args: {
data: z.object({
page: z.number().optional(),
pageSize: z.number().optional(),
}).optional()
}
}
})
.define(async (ctx) => {
const { page = 1, pageSize = 999 } = ctx.query.data || {};
@@ -26,9 +34,21 @@ app
app
.route({
path: 'app.domain.manager',
path: 'app_domain_manager',
key: 'update',
description: '更新一个域名的信息',
middleware: ['auth-admin'],
metadata: {
args: {
data: z.object({
id: z.string().optional(),
domain: z.string(),
appId: z.string().optional(),
status: z.enum(['active', 'inactive']).optional(),
data: z.record(z.string(), z.any()).optional(),
})
}
}
})
.define(async (ctx) => {
const { domain, data, id, ...rest } = ctx.query.data || {};
@@ -95,9 +115,18 @@ app
app
.route({
path: 'app.domain.manager',
path: 'app_domain_manager',
key: 'delete',
description: '删除一个域名',
middleware: ['auth-admin'],
metadata: {
args: {
data: z.object({
id: z.string().optional(),
domain: z.string().optional(),
})
}
}
})
.define(async (ctx) => {
const { id, domain } = ctx.query.data || {};
@@ -117,9 +146,18 @@ app
app
.route({
path: 'app.domain.manager',
path: 'app_domain_manager',
key: 'get',
description: '获取域名信息可以通过id或者domain进行查询',
middleware: ['auth-admin'],
metadata: {
args: {
data: z.object({
id: z.string().optional(),
domain: z.string().optional(),
})
}
}
})
.define(async (ctx) => {
const { id, domain } = ctx.query.data || {};