TIF_E41211115_Genso_quiz_ba.../app/services/subject_service.py

45 lines
1.6 KiB
Python

from typing import List, Optional
from models.entities import SubjectEntity
from schemas.requests import SubjectCreateRequest, SubjectUpdateRequest
from schemas.response import GetSubjectResponse
from repositories import SubjectRepository
class SubjectService:
def __init__(self, repository: SubjectRepository):
self.repository = repository
def create_subject(self, request: SubjectCreateRequest) -> str:
subject = SubjectEntity(**request)
return self.repository.create(subject)
def get_all_subjects(self) -> List[GetSubjectResponse]:
subjects = self.repository.get_all()
return [
GetSubjectResponse(
id=str(subject.id),
name=subject.name,
alias=subject.short_name,
description=subject.description,
)
for subject in subjects
]
def get_subject_by_id(self, subject_id: str) -> Optional[GetSubjectResponse]:
subject = self.repository.get_by_id(subject_id)
if subject:
return GetSubjectResponse(
id=str(subject.id),
name=subject.name,
alias=subject.short_name,
description=subject.description,
)
return None
def update_subject(self, subject_id: str, request: SubjectUpdateRequest) -> bool:
update_data = request.dict(exclude_unset=True)
return self.repository.update(subject_id, update_data)
def delete_subject(self, subject_id: str) -> bool:
return self.repository.delete(subject_id)