import { ParsedMessage } from '../message_handler'; import { userDatabase } from '../../db_managers/db'; import { OperationHandler } from '../operations_base/operation_handler'; import { OperationPlugin } from '../operations_base/operation_plugin'; import { operationCodes} from "../operation_codes"; export class UserOperations implements OperationPlugin { public static readonly operationCodes = { GET_USERS: 'GET_USERS', CREATE_USER: 'CREATE_USER', MODIFY_USER: 'MODIFY_USER', DELETE_USER: 'DELETE_USER', FIND_BY_ID: 'FIND_BY_ID', FIND_BY_EMAIL: 'FIND_BY_EMAIL', }; public static async handleGetUsers(): Promise { const users = userDatabase.getAllUsers(); return { operationCode: operationCodes.OK, metaInfo: { users } }; } public static async handleGetUserById(parsedMessage: ParsedMessage): Promise { const { id } = parsedMessage.metaInfo || {}; const user = userDatabase.findById(id); return user ? { operationCode: operationCodes.OK, metaInfo: { user } } : { operationCode: operationCodes.ERR, metaInfo: { message: 'User not found.' } }; } public static async handleModifyUser(parsedMessage: ParsedMessage): Promise { const { id, name, email, password, departmentId, app_type } = parsedMessage.metaInfo || {}; const success = userDatabase.modifyUser(id, name, email, password, departmentId, app_type); return success ? { operationCode: operationCodes.OK, metaInfo: { message: 'User modified successfully.' } } : { operationCode: operationCodes.ERR, metaInfo: { message: 'Failed to modify user.' } }; } public register(operationHandler: OperationHandler): void { operationHandler.registerHandler(UserOperations.operationCodes.GET_USERS, UserOperations.handleGetUsers); operationHandler.registerHandler(UserOperations.operationCodes.MODIFY_USER, UserOperations.handleModifyUser); operationHandler.registerHandler(UserOperations.operationCodes.FIND_BY_ID, UserOperations.handleGetUserById); } }