29 lines
1.2 KiB
Python
29 lines
1.2 KiB
Python
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()
|