cursor-init/src/modules/sample/example.response.ts
expressgy a23d336ebd refactor: 重构项目架构并标准化开发规范
- 重构项目结构:controllers/services -> modules模块化组织

- 新增Drizzle ORM集成和数据库schema定义

- 添加完整的开发规范文档(.cursor/rules/)

- 重新组织插件结构为子目录方式

- 新增用户模块和示例代码

- 更新类型定义并移除试验性代码

- 添加API文档和JWT使用示例

关联任务计划文档
2025-06-30 01:25:17 +08:00

82 lines
2.3 KiB
TypeScript

/**
* @file 样例接口响应Schema定义
* @author hotok
* @date 2025-06-29
* @lastEditor hotok
* @lastEditTime 2025-06-29
* @description 样例接口的响应结构定义,基于全局响应格式扩展
*/
import { t } from 'elysia';
import { UserInfoSchema } from './example.schema';
/**
* 根据用户名查询用户成功响应
*/
export const GetUserByUsernameSuccessResponse = t.Object({
code: t.Literal(0, {
description: '成功响应码',
}),
message: t.String({
description: '成功消息',
examples: ['查询用户成功'],
}),
data: UserInfoSchema,
});
/**
* 根据用户名查询用户失败响应
*/
export const GetUserByUsernameErrorResponse = t.Object({
code: t.Number({
description: '错误响应码',
examples: [400, 401, 404],
}),
message: t.String({
description: '错误消息',
examples: ['用户不存在', '参数验证失败', '身份认证失败'],
}),
data: t.Null({
description: '错误时数据字段为null',
}),
});
/**
* 根据用户名查询用户接口的所有可能响应
*/
export const GetUserByUsernameResponses = {
/** 200 查询成功 */
200: GetUserByUsernameSuccessResponse,
/** 400 业务错误 */
400: t.Object({
code: t.Literal(400),
message: t.String({
examples: ['用户不存在', '用户状态异常'],
}),
data: t.Null(),
}),
/** 401 认证失败 */
401: t.Object({
code: t.Literal(401),
message: t.String({
examples: ['身份认证失败,请重新登录', 'Token已过期'],
}),
data: t.Null(),
}),
/** 422 参数验证失败 */
422: t.Object({
code: t.Literal(422),
message: t.String({
examples: ['用户名长度必须在2-50字符之间', '用户名不能为空'],
}),
data: t.Null(),
}),
/** 500 服务器内部错误 */
500: t.Object({
code: t.Literal(500),
message: t.String({
examples: ['服务器内部错误,请稍后重试', '数据库查询失败'],
}),
data: t.Null(),
}),
};