from typing import Optional from sqlalchemy.orm import Session from app.application.test_answers_repository import TestAnswersRepository from app.domain.entities.test_answers_entity import TestAnswerEntity from app.domain.models.test_answers import TestAnswer class TestAnswersService: def __init__(self, db: Session): self.test_answers_repository = TestAnswersRepository(db) def get_all(self) -> list[TestAnswerEntity]: test_answers = self.test_answers_repository.get_all() return [ TestAnswerEntity( id=test_answer.id, answer_date=test_answer.answer_date, user_id=test_answer.user_id, answer_id=test_answer.answer_id ) for test_answer in test_answers ] def get_by_id(self, test_answer_id: int) -> Optional[TestAnswerEntity]: test_answer = self.test_answers_repository.get_by_id(test_answer_id) if test_answer: return TestAnswerEntity( id=test_answer.id, answer_date=test_answer.answer_date, user_id=test_answer.user_id, answer_id=test_answer.answer_id ) return None def create(self, test_answer: TestAnswerEntity) -> TestAnswerEntity: test_answer_model = TestAnswer( answer_date=test_answer.answer_date, user_id=test_answer.user_id, answer_id=test_answer.answer_id ) created_test_answer = self.test_answers_repository.create(test_answer_model) return TestAnswerEntity( id=created_test_answer.id, answer_date=created_test_answer.answer_date, user_id=created_test_answer.user_id, answer_id=created_test_answer.answer_id ) def update(self, test_answer_id: int, test_answer: TestAnswerEntity) -> Optional[TestAnswerEntity]: test_answer_model = self.test_answers_repository.get_by_id(test_answer_id) if test_answer_model: test_answer_model.answer_date = test_answer.answer_date test_answer_model.user_id = test_answer.user_id test_answer_model.answer_id = test_answer.answer_id updated_test_answer = self.test_answers_repository.update(test_answer_model) return TestAnswerEntity( id=updated_test_answer.id, answer_date=updated_test_answer.answer_date, user_id=updated_test_answer.user_id, answer_id=updated_test_answer.answer_id ) return None def delete(self, test_answer_id: int) -> None: self.test_answers_repository.delete(test_answer_id)