skill-forge/API/app/infrastructure/test_answers_service.py

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)