UNPKG

cube-ms

Version:

Production-ready microservice framework with health monitoring, validation, error handling, and Docker Swarm support

157 lines (138 loc) 3.68 kB
import { UserService } from '../services/user.service.js'; export class UserController { constructor(service) { this.service = service; this.userService = new UserService(service); } /** * Get all users */ async getUsers(req, res, logger) { try { logger.info('Fetching all users'); const result = await this.userService.findMany(req.query); res.json({ success: true, data: result.data, pagination: result.pagination, timestamp: new Date().toISOString() }); } catch (error) { logger.error('Error fetching users', error); res.status(500).json({ success: false, message: 'Failed to fetch users', error: error.message }); } } /** * Get user by ID */ async getUserById(req, res, logger) { try { const { id } = req.params; logger.info('Fetching user by ID', { userId: id }); const user = await this.userService.findById(id); if (!user) { return res.status(404).json({ success: false, message: 'User not found' }); } res.json({ success: true, data: user, timestamp: new Date().toISOString() }); } catch (error) { logger.error('Error fetching user', error); res.status(500).json({ success: false, message: 'Failed to fetch user', error: error.message }); } } /** * Create new user */ async createUser(req, res, logger) { try { const userData = req.body; logger.info('Creating new user', { email: userData.email }); const user = await this.userService.create(userData); res.status(201).json({ success: true, data: user, message: 'User created successfully', timestamp: new Date().toISOString() }); } catch (error) { logger.error('Error creating user', error); res.status(400).json({ success: false, message: 'Failed to create user', error: error.message }); } } /** * Update user */ async updateUser(req, res, logger) { try { const { id } = req.params; const updateData = req.body; logger.info('Updating user', { userId: id }); const user = await this.userService.update(id, updateData); if (!user) { return res.status(404).json({ success: false, message: 'User not found' }); } res.json({ success: true, data: user, message: 'User updated successfully', timestamp: new Date().toISOString() }); } catch (error) { logger.error('Error updating user', error); res.status(400).json({ success: false, message: 'Failed to update user', error: error.message }); } } /** * Delete user */ async deleteUser(req, res, logger) { try { const { id } = req.params; logger.info('Deleting user', { userId: id }); const deleted = await this.userService.delete(id); if (!deleted) { return res.status(404).json({ success: false, message: 'User not found' }); } res.json({ success: true, message: 'User deleted successfully', timestamp: new Date().toISOString() }); } catch (error) { logger.error('Error deleting user', error); res.status(500).json({ success: false, message: 'Failed to delete user', error: error.message }); } } }