from typing import Optional from sqlalchemy.orm import Session from app.application.task_answers_repository import TaskAnswersRepository from app.domain.entities.task_answers_entity import TaskAnswerEntity from app.domain.models.task_answers import TaskAnswer class TaskAnswersService: def __init__(self, db: Session): self.task_answers_repository = TaskAnswersRepository(db) def get_all(self) -> list[TaskAnswerEntity]: task_answers = self.task_answers_repository.get_all() return [ TaskAnswerEntity( id=task_answer.id, answer_date=task_answer.answer_date, text=task_answer.text, is_current=task_answer.is_current, comment=task_answer.comment, user_id=task_answer.user_id, task_id=task_answer.task_id, ) for task_answer in task_answers ] def get_by_id(self, task_answer_id: int) -> Optional[TaskAnswerEntity]: task_answer = self.task_answers_repository.get_by_id(task_answer_id) if task_answer: return TaskAnswerEntity( id=task_answer.id, answer_date=task_answer.answer_date, text=task_answer.text, is_current=task_answer.is_current, comment=task_answer.comment, user_id=task_answer.user_id, task_id=task_answer.task_id, ) return None def create(self, task_answer: TaskAnswerEntity) -> TaskAnswerEntity: task_answer_model = TaskAnswer( answer_date=task_answer.answer_date, text=task_answer.text, is_current=task_answer.is_current, comment=task_answer.comment, user_id=task_answer.user_id, task_id=task_answer.task_id, ) created_task_answer = self.task_answers_repository.create(task_answer_model) return TaskAnswerEntity( id=created_task_answer.id, answer_date=created_task_answer.answer_date, text=created_task_answer.text, is_current=created_task_answer.is_current, comment=created_task_answer.comment, user_id=created_task_answer.user_id, task_id=created_task_answer.task_id, ) def update(self, task_answer_id: int, task_answer: TaskAnswerEntity) -> Optional[TaskAnswerEntity]: task_answer_model = self.task_answers_repository.get_by_id(task_answer_id) if task_answer_model: task_answer_model.answer_date = task_answer.answer_date task_answer_model.text = task_answer.text task_answer_model.is_current = task_answer.is_current task_answer_model.comment = task_answer.comment task_answer_model.user_id = task_answer.user_id task_answer_model.task_id = task_answer.task_id updated_task_answer = self.task_answers_repository.update(task_answer_model) return TaskAnswerEntity( id=updated_task_answer.id, answer_date=updated_task_answer.answer_date, text=updated_task_answer.text, is_current=updated_task_answer.is_current, comment=updated_task_answer.comment, user_id=updated_task_answer.user_id, task_id=updated_task_answer.task_id, ) return None def delete(self, task_answer_id: int) -> bool: return self.task_answers_repository.delete(task_answer_id) is not None