Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | import { Employee } from "../../domain/entity/employee"; import { EmployeeRepository } from "../../domain/repository/employee-repository"; import EmployeeModel, { EmployeeInterface } from "./models/employee-model"; export class EmployeeRepositoryDataBase implements EmployeeRepository { constructor() {} async findAll(page: number, pageSize: number,filter:string,sortorder: string): Promise<Employee[]> { const skip = (page - 1) * pageSize; const sortOrder = sortorder === 'desc' ? -1 : 1 ; // Ordem de ordenação (1 para ascendente, -1 para descendente) const employeesModel = await EmployeeModel.find({ name: new RegExp(filter, 'i') // Filtra por nome (insensível a maiúsculas/minúsculas) }) .skip(skip) // Pula os documentos necessários para a página atual .limit(pageSize) // Limita o número de documentos retornados .sort({ name: sortOrder}); const employees: Employee[] = employeesModel.map((data: EmployeeInterface) => { return new Employee({ id: data.id, name: data.name, date: data.date, department: data.department, role: data.role }); }); return employees; } async findById(id: string): Promise<Employee | undefined> { const employeeModel = await EmployeeModel.findById(id); if (!employeeModel) { return undefined } return new Employee({ id: employeeModel.id, // Adiciona o ID date: employeeModel.date, department: employeeModel.department, name: employeeModel.name, role: employeeModel.role, }); } async create(employee: Employee): Promise<Employee> { const newEmployee = new EmployeeModel({ name: employee.name, role:employee.role, department: employee.department, date: employee.date, }); const savedEmployee = await newEmployee.save(); return new Employee({ date: savedEmployee.date, department: savedEmployee.department, id: employee.id, name: employee.name, role: employee.role }) } async update(id: string,employee: Employee): Promise<Employee> { const employeeToUpdate = await EmployeeModel.findById(id); if (!employeeToUpdate) { throw new Error('Funcionário não encontrado'); } employeeToUpdate.name = employee.name; employeeToUpdate.role = employee.role; employeeToUpdate.department = employee.department; employeeToUpdate.date = employee.date; const updateEmployee = await employeeToUpdate.save(); return new Employee({ date: updateEmployee.date, department: updateEmployee.department, id: updateEmployee.id, name: updateEmployee.name, role: updateEmployee.role }) } async delete(id: string): Promise<void | undefined> { const employeeToDelete = await EmployeeModel.findById(id); if (!employeeToDelete) return await employeeToDelete.deleteOne(); } } |