70 lines
2.6 KiB
Python
70 lines
2.6 KiB
Python
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)
|