80 lines
2.9 KiB
JavaScript
80 lines
2.9 KiB
JavaScript
import { UserRepository } from '../../Infrastructure/userRepository.js';
|
|
import { GetAllUsersQuery } from '../../Application/users/query/getAllUsersQuery.js';
|
|
import { GetAllUsersQueryHandler } from '../../Application/users/query/getAllUsersQueryHandler.js';
|
|
import { GetUserByIdQuery } from '../../Application/users/query/getUserByIdQuery.js';
|
|
import { GetUserByIdQueryHandler } from '../../Application/users/query/getUserByIdQueryHandler.js';
|
|
import { CreateUserCommand } from '../../Application/users/command/createUserCommand.js';
|
|
import { CreateUserCommandHandler } from '../../Application/users/command/createUserCommandHandler.js';
|
|
import { UpdateUserCommand } from '../../Application/users/command/updateUserCommand.js';
|
|
import { UpdateUserCommandHandler } from '../../Application/users/command/updateUserCommandHandler.js';
|
|
import { DeleteUserCommand } from '../../Application/users/command/deleteUserCommand.js';
|
|
import { DeleteUserCommandHandler } from '../../Application/users/command/deleteUserCommandHandler.js';
|
|
|
|
const userRepository = new UserRepository();
|
|
const getAllUsersQueryHandler = new GetAllUsersQueryHandler(userRepository);
|
|
const getUserByIdQueryHandler = new GetUserByIdQueryHandler(userRepository);
|
|
const createUserCommandHandler = new CreateUserCommandHandler(userRepository);
|
|
const updateUserCommandHandler = new UpdateUserCommandHandler(userRepository);
|
|
const deleteUserCommandHandler = new DeleteUserCommandHandler(userRepository);
|
|
|
|
export class UserController {
|
|
async getAll(req, res) {
|
|
try {
|
|
const query = new GetAllUsersQuery();
|
|
const users = await getAllUsersQueryHandler.handle(query);
|
|
res.json(users);
|
|
} catch (error) {
|
|
res.status(500).json({ error: error.message });
|
|
}
|
|
}
|
|
|
|
async getById(req, res) {
|
|
try {
|
|
const query = new GetUserByIdQuery(req.params.id);
|
|
const user = await getUserByIdQueryHandler.handle(query);
|
|
res.json(user);
|
|
} catch (error) {
|
|
res.status(404).json({ error: error.message });
|
|
}
|
|
}
|
|
|
|
async create(req, res) {
|
|
try {
|
|
const command = new CreateUserCommand(
|
|
req.body.name,
|
|
req.body.email,
|
|
req.body.age
|
|
);
|
|
const user = await createUserCommandHandler.handle(command);
|
|
res.status(201).json(user);
|
|
} catch (error) {
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
}
|
|
|
|
async update(req, res) {
|
|
try {
|
|
const command = new UpdateUserCommand(
|
|
req.params.id,
|
|
req.body.name,
|
|
req.body.email,
|
|
req.body.age
|
|
);
|
|
const user = await updateUserCommandHandler.handle(command);
|
|
res.json(user);
|
|
} catch (error) {
|
|
res.status(404).json({ error: error.message });
|
|
}
|
|
}
|
|
|
|
async delete(req, res) {
|
|
try {
|
|
const command = new DeleteUserCommand(req.params.id);
|
|
await deleteUserCommandHandler.handle(command);
|
|
res.status(204).send();
|
|
} catch (error) {
|
|
res.status(404).json({ error: error.message });
|
|
}
|
|
}
|
|
}
|