Files
FACULTATE-LICENTA/UC/src/network/operations_custom/user_operations.ts
T
2024-11-13 13:33:03 +02:00

44 lines
2.1 KiB
TypeScript

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<ParsedMessage> {
const users = userDatabase.getAllUsers();
return { operationCode: operationCodes.OK, metaInfo: { users } };
}
public static async handleGetUserById(parsedMessage: ParsedMessage): Promise<ParsedMessage> {
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<ParsedMessage> {
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);
}
}