Archived
1
0

feat: Контроллер и сервис пользователей

This commit is contained in:
2025-11-19 10:43:05 +03:00
parent 709054ed08
commit ec37fc0316
7 changed files with 237 additions and 2 deletions

View File

@ -0,0 +1,83 @@
import { Elysia, t } from 'elysia';
import { usersService } from '@/services/users.service';
export const usersController = new Elysia({ prefix: '/users' })
.get(
'/by-name',
async ({ query, set }) => {
try {
const name = query.name?.trim();
const foundUser = await usersService.getByName(name);
if (!foundUser) {
set.status = 404;
return { error: 'User not found' };
}
return {
id: foundUser.id,
name: foundUser.name,
email: foundUser.email,
image: foundUser.image,
emailVerified: foundUser.emailVerified,
createdAt: foundUser.createdAt.toISOString(),
updatedAt: foundUser.updatedAt.toISOString(),
};
} catch (error) {
set.status = 500;
return {
error: error instanceof Error ? error.message : 'Failed to get user',
};
}
},
{
query: t.Object({
name: t.String({ minLength: 1 }),
}),
detail: {
tags: ['Users'],
summary: 'Get user by name',
description: 'Returns user information by name',
},
}
)
.get(
'/:id',
async ({ params: { id }, set }) => {
try {
const foundUser = await usersService.getById(id);
if (!foundUser) {
set.status = 404;
return { error: 'User not found' };
}
return {
id: foundUser.id,
name: foundUser.name,
email: foundUser.email,
image: foundUser.image,
emailVerified: foundUser.emailVerified,
createdAt: foundUser.createdAt.toISOString(),
updatedAt: foundUser.updatedAt.toISOString(),
};
} catch (error) {
set.status = 500;
return {
error: error instanceof Error ? error.message : 'Failed to get user',
};
}
},
{
params: t.Object({
id: t.String(),
}),
detail: {
tags: ['Users'],
summary: 'Get user by ID',
description: 'Returns user information by ID',
},
}
);