diff --git a/core/apps/products/urls.py b/core/apps/products/urls.py index 79eda57..5c656f2 100644 --- a/core/apps/products/urls.py +++ b/core/apps/products/urls.py @@ -2,6 +2,7 @@ from django.urls import path, include from core.apps.products.views import category as category_veiws from core.apps.products.views import product as product_views +from core.apps.products.views import search as search_views urlpatterns = [ path('category/', include( @@ -13,5 +14,6 @@ urlpatterns = [ [ path('/list/', product_views.ProductListApiView.as_view()), ] - )) + )), + path('search/', search_views.SearchApiView.as_view()), ] \ No newline at end of file diff --git a/core/apps/products/views/search.py b/core/apps/products/views/search.py new file mode 100644 index 0000000..6860a25 --- /dev/null +++ b/core/apps/products/views/search.py @@ -0,0 +1,26 @@ +from rest_framework import views +from rest_framework.response import Response + +from core.apps.products.models import Product, Category +from core.apps.products.serializers.category import CategoryListSerializer +from core.apps.products.serializers.product import ProductListSerializer + + +class SearchApiView(views.APIView): + permission_classes = [] + + def get(self, request): + search = request.query_param.get('search') + if search is None: + return Response({"success": False, "message": 'search is required'}, status=400) + products = Product.objects.filter(name__istartswith=search) + categories = Category.objects.filter(name__istartswith=search) + + return Response( + { + 'products': ProductListSerializer(products, many=True).data, + 'categories': CategoryListSerializer(categories, many=True).data, + }, + status=200 + ) +