from sqlalchemy.orm import Session from app.core.logging import get_logger from app.models.employee import Employee from app.repositories.employee import EmployeeRepository from app.schemas.employee import EmployeeCreate logger = get_logger("app.services.employee") class EmployeeService: def __init__(self, db: Session) -> None: self.repository = EmployeeRepository(db) def list_employees(self) -> list[Employee]: employees = self.repository.list() logger.info("Listed employees (count=%d)", len(employees)) return employees def get_employee(self, employee_id: str) -> Employee | None: employee = self.repository.get(employee_id) if employee: logger.info("Fetched employee id=%s name=%s", employee_id, employee.name) else: logger.warning("Employee not found id=%s", employee_id) return employee def create_employee(self, payload: EmployeeCreate) -> Employee: employee = Employee(**payload.model_dump()) created = self.repository.create(employee) logger.info( "Created employee id=%s no=%s name=%s", created.id, created.employee_no, created.name ) return created