Files
X-Financial/server/src/app/services/employee.py

35 lines
1.2 KiB
Python
Raw Normal View History

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