first commit 🎉

This commit is contained in:
2025-10-08 11:37:54 +07:00
commit 4ec61fa51e
61 changed files with 4558 additions and 0 deletions
+87
View File
@@ -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