O2Sound_ver2_final/backend/app/repositories/video_repository.py

43 lines
1.4 KiB
Python

from sqlalchemy.orm import Session
from app.domain.models.video import Video
from sqlalchemy.dialects.postgresql import UUID
from app.repositories.base_repository import BaseRepository
from typing import Optional
class VideoRepository(BaseRepository[Video]):
'''영상 레포지토리'''
def __init__(self, db: Session):
super().__init__(Video, db)
def get_by_id(self, order_id: UUID) -> Optional[Video]:
'''단일 주문 ID로 비디오 1건 조회'''
return self.db.query(Video).filter(
Video.order_id == order_id,
Video.deleted == False
).first()
def get_all_by_order_id(self, order_ids: list[UUID]) -> list[Video]:
'''모든 주문의 영상 전체 조회'''
if not order_ids:
return []
return self.db.query(Video).filter(
Video.order_id.in_(order_ids),
Video.deleted == False
).all()
def delete_by_video_id(self, video_id: UUID) -> bool:
'''비디오 ID로 비디오 삭제 (소프트 삭제)'''
# deleted=False 조건 없이 직접 조회
video = self.db.query(Video).filter(
Video.id == video_id,
Video.deleted == False # 이미 삭제된 것은 제외
).first()
if video:
video.deleted = True # 소프트 삭제
self.db.commit()
return True
return False