36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
|
|
from sqlalchemy.orm import Session
|
|
from app.domain.models.item import Item
|
|
from sqlalchemy.dialects.postgresql import UUID
|
|
from app.repositories.base_repository import BaseRepository
|
|
from typing import Optional
|
|
|
|
class ItemRepository(BaseRepository[Item]):
|
|
'''업체 레포지토리'''
|
|
|
|
def __init__(self, db: Session):
|
|
super().__init__(Item, db)
|
|
|
|
def get_items(self, id: UUID) -> list[Item]:
|
|
'''업체(items) 가져오기'''
|
|
return self.db.query(Item).filter(
|
|
Item.user_id == id,
|
|
Item.deleted == False
|
|
).all()
|
|
|
|
def get_by_order_id(self, order_id: UUID) -> Optional[Item]:
|
|
'''주문 ID로 업체 정보 조회'''
|
|
from app.domain.models.order import Order
|
|
return self.db.query(Item).join(Order).filter(
|
|
Order.id == order_id,
|
|
Item.deleted == False,
|
|
Order.deleted == False
|
|
).first()
|
|
|
|
def update_item(self, item_id: UUID, update_data: dict) -> Optional[Item]:
|
|
'''ID로 업체 정보 업데이트'''
|
|
return self.update(item_id, update_data)
|
|
|
|
def delete_item(self, item_id: UUID) -> bool:
|
|
'''ID로 업체 삭제'''
|
|
return self.soft_delete(item_id) |