first commit 🎉
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
import { Elysia, t } from 'elysia'
|
||||
import { bearerAuthMiddleware } from '~/middlewares'
|
||||
import { validationErrorSchema } from '~/plugins/defaultHandler'
|
||||
import CommandService from './commands/service'
|
||||
import QueryService from './queries/service'
|
||||
import { createUserBody, createUserResponse, listUserResponse } from './schema'
|
||||
|
||||
export const router = new Elysia({
|
||||
name: 'modules.user',
|
||||
detail: { tags: ['Users'] },
|
||||
prefix: '/user/v1/users',
|
||||
})
|
||||
.get('/', async ({ headers, set }) => {
|
||||
await bearerAuthMiddleware(headers, set)
|
||||
|
||||
const users = await QueryService.getUsers()
|
||||
return {
|
||||
message: 'Get users.' as const,
|
||||
data: users,
|
||||
}
|
||||
}, {
|
||||
response: {
|
||||
200: t.Object({
|
||||
message: t.Literal('Get users.'),
|
||||
data: listUserResponse,
|
||||
}),
|
||||
401: t.Object({
|
||||
message: t.Literal('Unauthenticated.'),
|
||||
}),
|
||||
},
|
||||
})
|
||||
.post('/', async ({ body, headers, set }) => {
|
||||
await bearerAuthMiddleware(headers, set)
|
||||
|
||||
const user = await CommandService.createUser(body)
|
||||
return {
|
||||
message: 'User created.',
|
||||
data: user,
|
||||
}
|
||||
}, {
|
||||
body: createUserBody,
|
||||
response: {
|
||||
200: t.Object({
|
||||
message: t.Literal('User created.'),
|
||||
data: createUserResponse,
|
||||
}),
|
||||
401: t.Object({
|
||||
message: t.Literal('Unauthenticated.'),
|
||||
}),
|
||||
422: validationErrorSchema,
|
||||
},
|
||||
})
|
||||
.put('/:id', async ({ params: { id }, body, headers, set }) => {
|
||||
await bearerAuthMiddleware(headers, set)
|
||||
|
||||
const user = await CommandService.updateUser(id, body)
|
||||
return {
|
||||
message: 'User updated.' as const,
|
||||
data: user,
|
||||
}
|
||||
}, {
|
||||
body: createUserBody,
|
||||
response: {
|
||||
200: t.Object({
|
||||
message: t.Literal('User updated.'),
|
||||
data: createUserResponse,
|
||||
}),
|
||||
},
|
||||
})
|
||||
.delete('/:id', async ({ params: { id }, headers, set }) => {
|
||||
await bearerAuthMiddleware(headers, set)
|
||||
|
||||
await CommandService.deleteUser(id)
|
||||
return {
|
||||
message: 'User deleted.' as const,
|
||||
data: { id },
|
||||
}
|
||||
}, {
|
||||
response: {
|
||||
200: t.Object({
|
||||
message: t.Literal('User deleted.'),
|
||||
data: t.Object({ id: t.String() }),
|
||||
}),
|
||||
},
|
||||
})
|
||||
|
||||
export default router
|
||||
Reference in New Issue
Block a user