UNPKG

koa-typescript-sequlize-swagger

Version:

nodejs的后端模板,使用了koa,typescript,koa-swagger-decorator,zod等

82 lines (76 loc) 2.09 kB
import { Context } from 'koa' import { body, middlewares, responses, routeConfig } from 'koa-swagger-decorator' import { CreateUserReq, CreateUserRes, DeleteUserQuery, DeleteUserRes, IDeleteUserQuery, } from './type' import { ParsedArgs, z } from 'koa-swagger-decorator' import { ICreateUserReq } from '@/controller/User/type' import User from '@/schema/user' import { ctxBody, deleteByIdMiddleware, paginationMiddleware } from '@/utils' import { paginationQuery } from '@/controller/common/queryType' class UserController { @routeConfig({ method: 'post', path: '/user/create', summary: '创建用户', tags: ['用户'], }) @body(CreateUserReq) @responses(CreateUserRes) @middlewares([ async (ctx: Context, next: any) => { // 可以对ctx进行操作,然后放行 await next() } ]) async CreateUser(ctx: Context, args: ParsedArgs<ICreateUserReq>) { await User.create(args.body) .then((res: any) => { ctx.body = ctxBody({ success: true, code: 200, msg: '创建用户成功', data: res.dataValues }) }) .catch(e => { ctx.body = ctxBody({ success: false, code: 500, msg: '创建用户失败', data: e }) }) } @routeConfig({ method: 'get', path: '/user/list', summary: '用户列表', tags: ['用户'], request: { query: paginationQuery() } }) @responses(CreateUserRes) async getUserList(ctx: Context, args: ParsedArgs<ICreateUserReq>) { await paginationMiddleware(ctx, User, '查询用户列表') } @routeConfig({ method: 'delete', path: '/user/delete', summary: '删除指定用户', tags: ['用户'], request: { query: DeleteUserQuery } }) @responses(DeleteUserRes) async deleteUser(ctx: Context, args: ParsedArgs<IDeleteUserQuery>) { await deleteByIdMiddleware(ctx, User, '用户') } } export { UserController }