feat: add FastAPI backend with PostgreSQL and start script fixes
- Add server/ directory with FastAPI backend - Fix server/start.sh to properly handle venv on Windows/Git Bash - Add alembic migrations and pyproject.toml - Add server tests Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
1
server/src/app/services/__init__.py
Normal file
1
server/src/app/services/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
__all__ = ["employee", "reimbursement"]
|
||||
20
server/src/app/services/employee.py
Normal file
20
server/src/app/services/employee.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.employee import Employee
|
||||
from app.repositories.employee import EmployeeRepository
|
||||
from app.schemas.employee import EmployeeCreate
|
||||
|
||||
|
||||
class EmployeeService:
|
||||
def __init__(self, db: Session) -> None:
|
||||
self.repository = EmployeeRepository(db)
|
||||
|
||||
def list_employees(self) -> list[Employee]:
|
||||
return self.repository.list()
|
||||
|
||||
def get_employee(self, employee_id: str) -> Employee | None:
|
||||
return self.repository.get(employee_id)
|
||||
|
||||
def create_employee(self, payload: EmployeeCreate) -> Employee:
|
||||
employee = Employee(**payload.model_dump())
|
||||
return self.repository.create(employee)
|
||||
20
server/src/app/services/reimbursement.py
Normal file
20
server/src/app/services/reimbursement.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.reimbursement import ReimbursementRequest
|
||||
from app.repositories.reimbursement import ReimbursementRepository
|
||||
from app.schemas.reimbursement import ReimbursementCreate
|
||||
|
||||
|
||||
class ReimbursementService:
|
||||
def __init__(self, db: Session) -> None:
|
||||
self.repository = ReimbursementRepository(db)
|
||||
|
||||
def list_reimbursements(self) -> list[ReimbursementRequest]:
|
||||
return self.repository.list()
|
||||
|
||||
def get_reimbursement(self, request_id: str) -> ReimbursementRequest | None:
|
||||
return self.repository.get(request_id)
|
||||
|
||||
def create_reimbursement(self, payload: ReimbursementCreate) -> ReimbursementRequest:
|
||||
request = ReimbursementRequest(**payload.model_dump(), status="draft")
|
||||
return self.repository.create(request)
|
||||
Reference in New Issue
Block a user