from typing import List, Optional from sqlalchemy.orm import Session from app.models.item import Item from app.schemas.item import ItemCreate, ItemUpdate def get_item(db: Session, id: int) -> Optional[Item]: """ Get an item by ID. """ return db.query(Item).filter(Item.id == id).first() def get_items(db: Session, skip: int = 0, limit: int = 100) -> List[Item]: """ Get multiple items. """ return db.query(Item).offset(skip).limit(limit).all() def get_user_items( db: Session, owner_id: int, skip: int = 0, limit: int = 100 ) -> List[Item]: """ Get items for a specific user. """ return ( db.query(Item).filter(Item.owner_id == owner_id).offset(skip).limit(limit).all() ) def create_item(db: Session, obj_in: ItemCreate, owner_id: int) -> Item: """ Create a new item. """ db_obj = Item( title=obj_in.title, description=obj_in.description, owner_id=owner_id, ) db.add(db_obj) db.commit() db.refresh(db_obj) return db_obj def update_item(db: Session, db_obj: Item, obj_in: ItemUpdate) -> Item: """ Update an item. """ update_data = obj_in.dict(exclude_unset=True) for field, value in update_data.items(): setattr(db_obj, field, value) db.add(db_obj) db.commit() db.refresh(db_obj) return db_obj def delete_item(db: Session, id: int) -> None: """ Delete an item. """ item = db.query(Item).get(id) if item: db.delete(item) db.commit()