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

75 lines
2.6 KiB
Python

from typing import List, Optional
from sqlalchemy.orm import Session
from app.core.entities.step import StepEntity
from app.infrastructure.database.models.steps import Step
from app.infrastructure.database.repository.step_repository import StepRepository
class StepService:
def __init__(self, db: Session):
self.repository = StepRepository(db)
def get_all_steps(self) -> List[StepEntity]:
steps = self.repository.get_all()
return [
StepEntity(
id=s.id,
start_deadline=s.start_deadline,
finish_deadline=s.finish_deadline,
order_id=s.order_id,
status_id=s.status_id,
) for s in steps
]
def get_step_by_id(self, step_id: int) -> Optional[StepEntity]:
step = self.repository.get_by_id(step_id)
if step:
return StepEntity(
id=step.id,
start_deadline=step.start_deadline,
finish_deadline=step.finish_deadline,
order_id=step.order_id,
status_id=step.status_id,
)
return None
def create_step(self, entity: StepEntity) -> StepEntity:
step_model = Step(
start_deadline=entity.start_deadline,
finish_deadline=entity.finish_deadline,
order_id=entity.order_id,
status_id=entity.status_id,
)
created_step = self.repository.create(step_model)
return StepEntity(
id=created_step.id,
start_deadline=created_step.start_deadline,
finish_deadline=created_step.finish_deadline,
order_id=created_step.order_id,
status_id=created_step.status_id,
)
def update_step(self, step_id: int, entity: StepEntity) -> Optional[StepEntity]:
step_model = self.repository.get_by_id(step_id)
if step_model:
step_model.start_deadline = entity.start_deadline
step_model.finish_deadline = entity.finish_deadline
step_model.order_id = entity.order_id
step_model.status_id = entity.status_id
self.repository.update(step_model)
return StepEntity(
id=step_model.id,
start_deadline=step_model.start_deadline,
finish_deadline=step_model.finish_deadline,
order_id=step_model.order_id,
status_id=step_model.status_id,
)
return None
def delete_step(self, step_id: int) -> bool:
return self.repository.delete(step_id) is not None