69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
from typing import Optional
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.application.step_tasks_repository import StepTasksRepository
|
|
from app.domain.entities.step_tasks_entity import StepTaskEntity
|
|
from app.domain.models.step_tasks import StepTask
|
|
|
|
|
|
class StepTasksService:
|
|
def __init__(self, db: Session):
|
|
self.step_tasks_repository = StepTasksRepository(db)
|
|
|
|
def get_all(self) -> list[StepTaskEntity]:
|
|
step_tasks = self.step_tasks_repository.get_all()
|
|
return [
|
|
StepTaskEntity(
|
|
id=step_task.id,
|
|
text=step_task.text,
|
|
step_id=step_task.step_id,
|
|
type_id=step_task.type_id,
|
|
) for step_task in step_tasks
|
|
]
|
|
|
|
def get_by_id(self, step_task_id: int) -> Optional[StepTaskEntity]:
|
|
step_task = self.step_tasks_repository.get_by_id(step_task_id)
|
|
if step_task:
|
|
return StepTaskEntity(
|
|
id=step_task.id,
|
|
text=step_task.text,
|
|
step_id=step_task.step_id,
|
|
type_id=step_task.type_id,
|
|
)
|
|
|
|
return None
|
|
|
|
def create(self, step_task: StepTaskEntity) -> StepTaskEntity:
|
|
step_task_model = StepTask(
|
|
text=step_task.text,
|
|
step_id=step_task.step_id,
|
|
type_id=step_task.type_id,
|
|
)
|
|
created_step_task = self.step_tasks_repository.create(step_task_model)
|
|
return StepTaskEntity(
|
|
id=created_step_task.id,
|
|
text=created_step_task.text,
|
|
step_id=created_step_task.step_id,
|
|
type_id=created_step_task.type_id,
|
|
)
|
|
|
|
def update(self, step_task_id: int, step_task: StepTaskEntity) -> Optional[StepTaskEntity]:
|
|
step_task_model = self.step_tasks_repository.get_by_id(step_task_id)
|
|
if step_task_model:
|
|
step_task_model.text = step_task.text
|
|
step_task_model.step_id = step_task.step_id
|
|
step_task_model.type_id = step_task.type_id
|
|
updated_step_task = self.step_tasks_repository.update(step_task_model)
|
|
return StepTaskEntity(
|
|
id=updated_step_task.id,
|
|
text=updated_step_task.text,
|
|
step_id=updated_step_task.step_id,
|
|
type_id=updated_step_task.type_id,
|
|
)
|
|
|
|
return None
|
|
|
|
def delete(self, step_task_id: int) -> bool:
|
|
return self.step_tasks_repository.delete(step_task_id) is not None
|