diff --git a/app/backend/routes/search.py b/app/backend/routes/search.py index 20ff7f954df064a8e419b69f5fac421ff05a0e3f..1c5999d77e9c19cfbdaf31ac5b4de06c61ab4e92 100644 --- a/app/backend/routes/search.py +++ b/app/backend/routes/search.py @@ -1,6 +1,5 @@ from fastapi import APIRouter, Depends, Query -from sqlalchemy.orm import Session -from sqlalchemy.orm import joinedload +from sqlmodel import Session, select from backend.database import get_session from backend.models.models import Shop, Product, Category from typing import List, Union @@ -18,20 +17,21 @@ def search( db: Session = Depends(get_session), ): results = [] + if search_type in ["shops", "both"]: - shop_query = db.query(Shop) + shop_query = select(Shop) if name: - shop_query = shop_query.filter(Shop.name.ilike(f"%{name}%")) - results.extend(shop_query.all()) + shop_query = shop_query.where(Shop.name.ilike(f"%{name}%")) + results.extend(db.exec(shop_query).all()) if search_type in ["products", "both"]: - product_query = db.query(Product).options(joinedload(Product.category)) + product_query = ( + select(Product).join(Category).where(True) + ) # Ensures valid syntax if name: - product_query = product_query.filter(Product.name.ilike(f"%{name}%")) + product_query = product_query.where(Product.name.ilike(f"%{name}%")) if category: - product_query = product_query.join(Category).filter( - Category.name.ilike(f"%{category}%") - ) - results.extend(product_query.all()) + product_query = product_query.where(Category.name.ilike(f"%{category}%")) + results.extend(db.exec(product_query).all()) return results