I have a product listing page in which I want to give a search product option if the user enters any search term for product name or product price then the search term should be included in the final query otherwise I want to show full product list.
The query is written in my module to fetch all product having word “Widget” in the product name and product price less than $10 is as shown below:
def list_products(params) do
query = from p in MyStore.Products.Product,
where: like(p.name,"%Widget%"),
where: p.price <= 10,
order_by: [
desc: p.id
],
select: struct(
p,
[:id, :name, :quantity, :inserted_at, :updated_at]
)
products = MyStore.Repo.paginate(query,params)
end
Now if the user enters Product name or Product price in the Product filter form I want to include that variable in my query instead of static where clause I have passed in above code. I need the “where” clause optional if user wants to filter product list then “where” clause should be added otherwise it should show the complete product list. It will be great if someone provides me the correct demo code based on the above query.