87 lines
3.5 KiB
Python
87 lines
3.5 KiB
Python
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
|