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