From 1115ae430d9d03bd1750ed10bf0176e15f263366 Mon Sep 17 00:00:00 2001 From: Drish-xD Date: Thu, 11 Jul 2024 20:26:37 +0530 Subject: [PATCH] make filter general --- .../controllers/session_controller.ex | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/lib/dbservice_web/controllers/session_controller.ex b/lib/dbservice_web/controllers/session_controller.ex index 0dbd7d5e..f0256c67 100644 --- a/lib/dbservice_web/controllers/session_controller.ex +++ b/lib/dbservice_web/controllers/session_controller.ex @@ -68,17 +68,8 @@ defmodule DbserviceWeb.SessionController do :is_quiz -> apply_is_quiz_filter(value, acc) - :group -> - apply_meta_data_filter(value, key, acc) - - :parent_id -> - apply_meta_data_filter(value, key, acc) - - :batch_id -> - apply_meta_data_filter(value, key, acc) - atom -> - from(u in acc, where: field(u, ^atom) == ^value) + apply_filter_based_on_schema(atom, key, value, acc) end end) @@ -86,6 +77,15 @@ defmodule DbserviceWeb.SessionController do render(conn, "index.json", session: session) end + defp apply_filter_based_on_schema(atom, key, value, acc) do + if atom in Session.__schema__(:fields) do + from(u in acc, where: field(u, ^atom) == ^value) + else + from u in acc, + where: fragment("?->>? = ?", u.meta_data, ^key, ^value) + end + end + defp extract_sort_order(params) do case params["sort_order"] do "asc" -> :asc @@ -109,11 +109,6 @@ defmodule DbserviceWeb.SessionController do end end - defp apply_meta_data_filter(value, field, acc) do - from u in acc, - where: fragment("?->>? = ?", u.meta_data, ^field, ^value) - end - swagger_path :create do post("/api/session")