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

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