from typing import Optional, List from sqlalchemy.orm import Session from sqlalchemy import select, update from app.models.FileUploadModel import FileUpload from app.repositories.base_repository import BaseRepository class FileUploadRepository(BaseRepository[FileUpload]): def __init__(self): super().__init__(FileUpload) def get_by_entity(self, db: Session, entity_type: str, entity_id: str) -> List[FileUpload]: stmt = select(FileUpload).where( FileUpload.entity_type == entity_type, FileUpload.entity_id == entity_id, FileUpload.is_deleted.is_(False) ) return list(db.execute(stmt).scalars().all()) def get_active_file(self, db: Session, file_id: str) -> Optional[FileUpload]: stmt = select(FileUpload).where(FileUpload.file_id == file_id, FileUpload.is_deleted.is_(False)) return db.execute(stmt).scalar_one_or_none() def mark_deleted(self, db: Session, file_id: str) -> bool: stmt = update(FileUpload).where(FileUpload.file_id == file_id).values(is_deleted=True) result = db.execute(stmt) db.commit() return result.rowcount > 0 file_repository = FileUploadRepository()