from sqlalchemy.orm import Session
from app.models.item import Item
from app.schemas.item import ItemCreate, ItemUpdate

def get_items(db: Session, owner_id: int):
    return db.query(Item).filter(Item.owner_id == owner_id).all()

def get_item(db: Session, item_id: int, owner_id: int):
    return db.query(Item).filter(Item.id == item_id, Item.owner_id == owner_id).first()

def create_item(db: Session, item_in: ItemCreate, owner_id: int):
    item = Item(**item_in.model_dump(), owner_id=owner_id)
    db.add(item)
    db.commit()
    db.refresh(item)
    return item

def update_item(db: Session, item_id: int, item_in: ItemUpdate, owner_id: int):
    item = get_item(db, item_id, owner_id)
    if not item:
        return None
    for field, value in item_in.model_dump(exclude_unset=True).items():
        setattr(item, field, value)
    db.commit()
    db.refresh(item)
    return item

def delete_item(db: Session, item_id: int, owner_id: int):
    item = get_item(db, item_id, owner_id)
    if not item:
        return None
    db.delete(item)
    db.commit()
    return item
