diff --git a/app/services/category_service.py b/app/services/category_service.py new file mode 100644 index 0000000..7bee7ae --- /dev/null +++ b/app/services/category_service.py @@ -0,0 +1,39 @@ +from sqlalchemy.orm import Session +from app.models.category import Category +from app.schemas.category import CategoryCreate, CategoryUpdate + + +def create_category(db: Session, data: CategoryCreate) -> Category: + cat = Category(name=data.name, description=data.description) + db.add(cat) + db.commit() + db.refresh(cat) + return cat + + +def get_categories(db: Session): + return db.query(Category).all() + + +def get_category(db: Session, category_id: str): + return db.query(Category).filter(Category.id == category_id).first() + + +def update_category(db: Session, category_id: str, data: CategoryUpdate): + cat = get_category(db, category_id) + if not cat: + return None + for field, value in data.model_dump(exclude_unset=True).items(): + setattr(cat, field, value) + db.commit() + db.refresh(cat) + return cat + + +def delete_category(db: Session, category_id: str): + cat = get_category(db, category_id) + if not cat: + return False + db.delete(cat) + db.commit() + return True