from typing import List, Optional from sqlalchemy.orm import Session from app.crud.base import CRUDBase from app.models.rental import RentalItem from app.schemas.rental_item import RentalItemCreate, RentalItemUpdate class CRUDRentalItem(CRUDBase[RentalItem, RentalItemCreate, RentalItemUpdate]): """ CRUD operations for RentalItem model. """ def get_by_name(self, db: Session, *, name: str) -> Optional[RentalItem]: """ Get a rental item by name. """ return db.query(RentalItem).filter(RentalItem.name == name).first() def get_by_category( self, db: Session, *, category_id: int, skip: int = 0, limit: int = 100 ) -> List[RentalItem]: """ Get all rental items by category_id. """ return db.query(RentalItem)\ .filter(RentalItem.category_id == category_id)\ .offset(skip)\ .limit(limit)\ .all() def get_available( self, db: Session, *, skip: int = 0, limit: int = 100 ) -> List[RentalItem]: """ Get all available rental items. """ return db.query(RentalItem)\ .filter(RentalItem.is_available)\ .offset(skip)\ .limit(limit)\ .all() rental_item = CRUDRentalItem(RentalItem)