69 lines
2.5 KiB
Python
69 lines
2.5 KiB
Python
from typing import Optional
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.application.answer_files_repository import AnswerFilesRepository
|
|
from app.domain.entities.answer_files_entitity import AnswerFileEntity
|
|
from app.domain.models.answer_files import AnswerFile
|
|
|
|
|
|
class AnswerFilesService:
|
|
def __init__(self, db: Session):
|
|
self.answer_files_repository = AnswerFilesRepository(db)
|
|
|
|
def get_all(self) -> list[AnswerFileEntity]:
|
|
files = self.answer_files_repository.get_all()
|
|
return [
|
|
AnswerFileEntity(
|
|
id=file.id,
|
|
answer_id=file.answer_id,
|
|
file_title=file.file_title,
|
|
file_path=file.file_path
|
|
) for file in files
|
|
]
|
|
|
|
def get_by_id(self, answer_file_id: int) -> Optional[AnswerFileEntity]:
|
|
file = self.answer_files_repository.get_by_id(answer_file_id)
|
|
if file:
|
|
return AnswerFileEntity(
|
|
id=file.id,
|
|
answer_id=file.answer_id,
|
|
file_title=file.file_title,
|
|
file_path=file.file_path
|
|
)
|
|
|
|
return None
|
|
|
|
def create(self, answer_file: AnswerFileEntity) -> AnswerFileEntity:
|
|
file_model = AnswerFile(
|
|
answer_id=answer_file.answer_id,
|
|
file_title=answer_file.file_title,
|
|
file_path=answer_file.file_path
|
|
)
|
|
created_file = self.answer_files_repository.create(file_model)
|
|
return AnswerFileEntity(
|
|
id=created_file.id,
|
|
answer_id=created_file.answer_id,
|
|
file_title=created_file.file_title,
|
|
file_path=created_file.file_path
|
|
)
|
|
|
|
def update(self, answer_file_id: int, answer_file: AnswerFileEntity) -> Optional[AnswerFileEntity]:
|
|
file_model = self.answer_files_repository.get_by_id(answer_file_id)
|
|
if file_model:
|
|
file_model.answer_id = answer_file.answer_id
|
|
file_model.file_title = answer_file.file_title
|
|
file_model.file_path = answer_file.file_path
|
|
updated_file = self.answer_files_repository.update(file_model)
|
|
return AnswerFileEntity(
|
|
id=updated_file.id,
|
|
answer_id=updated_file.answer_id,
|
|
file_title=updated_file.file_title,
|
|
file_path=updated_file.file_path
|
|
)
|
|
|
|
return None
|
|
|
|
def delete(self, answer_file_id: int) -> bool:
|
|
return self.answer_files_repository.delete(answer_file_id) is not None
|