API_logistics/app/core/usecases/status_service.py
2024-10-04 11:11:13 +05:00

56 lines
1.7 KiB
Python

from typing import List, Optional
from sqlalchemy.orm import Session
from app.core.entities.status import StatusEntity
from app.infrastructure.database.models.statuses import Status
from app.infrastructure.database.repository.status_repository import StatusRepository
class StatusService:
def __init__(self, db: Session):
self.repository = StatusRepository(db)
def get_all_statuses(self) -> List[StatusEntity]:
statuses = self.repository.get_all()
return [
StatusEntity(
id=s.id,
name=s.name,
)
for s in statuses
]
def get_status_by_id(self, status_id: int) -> Optional[StatusEntity]:
status = self.repository.get_by_id(status_id)
if status:
return StatusEntity(
id=status.id,
name=status.name,
)
return None
def create_status(self, entity: StatusEntity) -> StatusEntity:
status_model = Status(name=entity.name)
created_status = self.repository.create(status_model)
return StatusEntity(
id=created_status.id,
name=created_status.name,
)
def update_status(self, status_id: int, entity: StatusEntity) -> Optional[StatusEntity]:
status_model = self.repository.get_by_id(status_id)
if status_model:
status_model.name = entity.name
self.repository.update(status_model)
return StatusEntity(
id=status_model.id,
name=status_model.name,
)
return None
def delete_status(self, status_id: int) -> bool:
return self.repository.delete(status_id) is not None