32 lines
844 B
Python
32 lines
844 B
Python
from datetime import UTC, datetime
|
|
from itertools import count
|
|
|
|
from app.modules.projects.schemas import ProjectCreate, ProjectRead
|
|
|
|
|
|
class ProjectService:
|
|
def __init__(self) -> None:
|
|
self._ids = count(1)
|
|
self._projects: list[ProjectRead] = []
|
|
|
|
def list(self) -> list[ProjectRead]:
|
|
return self._projects.copy()
|
|
|
|
def create(self, payload: ProjectCreate) -> ProjectRead:
|
|
project = ProjectRead(
|
|
id=next(self._ids),
|
|
created_at=datetime.now(UTC),
|
|
**payload.model_dump(),
|
|
)
|
|
self._projects.append(project)
|
|
return project
|
|
|
|
def get(self, project_id: int) -> ProjectRead | None:
|
|
return next(
|
|
(project for project in self._projects if project.id == project_id),
|
|
None,
|
|
)
|
|
|
|
|
|
project_service = ProjectService()
|