From c8696ef4b9c116385985bf25a8a83fe6f3317225 Mon Sep 17 00:00:00 2001 From: duyanhehe <duyanhex@gmail.com> Date: Mon, 17 Mar 2025 09:14:29 +0700 Subject: [PATCH] update search function --- app/backend/routes/search.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/backend/routes/search.py b/app/backend/routes/search.py index 20ff7f9..1c5999d 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 -- GitLab