koa-typescript-sequlize-swagger
Version:
nodejs的后端模板,使用了koa,typescript,koa-swagger-decorator,zod等
82 lines (76 loc) • 2.09 kB
text/typescript
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 }