From aa34c8c5ab06869c6a04844abff5293b6167eb27 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sat, 16 Mar 2024 21:43:46 +0530 Subject: [PATCH 01/54] renamed group -> auth_group --- lib/dbservice/auth_groups.ex | 97 ++++++++++++ lib/dbservice/groups.ex | 98 ------------ .../groups/{group.ex => auth_group.ex} | 14 +- .../controllers/auth_group_controller.ex | 143 ++++++++++++++++++ .../controllers/group_controller.ex | 143 ------------------ lib/dbservice_web/router.ex | 2 +- lib/dbservice_web/swagger_schemas/group.ex | 24 +-- lib/dbservice_web/views/auth_group_view.ex | 22 +++ lib/dbservice_web/views/group_view.ex | 22 --- 9 files changed, 282 insertions(+), 283 deletions(-) create mode 100644 lib/dbservice/auth_groups.ex delete mode 100644 lib/dbservice/groups.ex rename lib/dbservice/groups/{group.ex => auth_group.ex} (74%) create mode 100644 lib/dbservice_web/controllers/auth_group_controller.ex delete mode 100644 lib/dbservice_web/controllers/group_controller.ex create mode 100644 lib/dbservice_web/views/auth_group_view.ex delete mode 100644 lib/dbservice_web/views/group_view.ex diff --git a/lib/dbservice/auth_groups.ex b/lib/dbservice/auth_groups.ex new file mode 100644 index 00000000..efe02577 --- /dev/null +++ b/lib/dbservice/auth_groups.ex @@ -0,0 +1,97 @@ +defmodule Dbservice.AuthGroup do + @moduledoc """ + The AuthGroup context. + """ + + import Ecto.Query, warn: false + alias Dbservice.Repo + + alias Dbservice.Groups.Group.AuthGroup + + @doc """ + Returns the list of auth groups. + ## Examples + iex> list_auth_group() + [%AuthGroup{}, ...] + """ + def list_auth_group do + Repo.all(AuthGroup) + end + + @doc """ + Gets a single auth-group. + Raises `Ecto.NoResultsError` if the AuthGroup does not exist. + ## Examples + iex> get_auth_group!(123) + %AuthGroup{} + iex> get_auth_group!(456) + ** (Ecto.NoResultsError) + """ + def get_auth_group!(id) do + Repo.get!(AuthGroup, id) |> Repo.preload(:group_type) + end + + @doc """ + Gets an auth group by name. + Raises `Ecto.NoResultsError` if the AuthGroup does not exist. + ## Examples + iex> get_auth_group_by_name(DelhiStudents) + %AuthGroup{} + iex> get_auth_group_by_name(abc) + ** (Ecto.NoResultsError) + """ + def get_auth_group_by_name(name) do + Repo.get_by(AuthGroup, name: name) + end + + @doc """ + Creates an auth group. + ## Examples + iex> create_auth_group(%{field: value}) + {:ok, %AuthGroup{}} + iex> create_auth_group(%{field: bad_value}) + {:error, %Ecto.Changeset{}} + """ + def create_auth_group(attrs \\ %{}) do + %AuthGroup{} + |> AuthGroup.changeset(attrs) + |> Ecto.Changeset.put_assoc(:group_type, [%GroupType{type: "auth_group", child_id: attrs["id"]}]) + |> Repo.insert() + end + + @doc """ + Updates an auth group. + ## Examples + iex> update_auth_group(auth_group, %{field: new_value}) + {:ok, %AuthGroup{}} + iex> update_auth_group(auth_group, %{field: bad_value}) + {:error, %Ecto.Changeset{}} + """ + def update_auth_group(%AuthGroup{} = auth_group, attrs) do + auth_group + |> AuthGroup.changeset(attrs) + |> Repo.update() + end + + @doc """ + Deletes an auth group. + ## Examples + iex> delete_auth_group(auth_group) + {:ok, %AuthGroup{}} + iex> delete_auth_group(auth_group) + {:error, %Ecto.Changeset{}} + """ + def delete_auth_group(%AuthGroup{} = auth_group) do + Repo.delete(auth_group) + end + + @doc """ + Returns an `%Ecto.Changeset{}` for tracking auth_group changes. + ## Examples + iex> change_auth_group(auth_group) + %Ecto.Changeset{data: %AuthGroup{}} + """ + def change_auth_group(%AuthGroup{} = auth_group, attrs \\ %{}) do + AuthGroup.changeset(auth_group, attrs) + end +end diff --git a/lib/dbservice/groups.ex b/lib/dbservice/groups.ex deleted file mode 100644 index d3bb4665..00000000 --- a/lib/dbservice/groups.ex +++ /dev/null @@ -1,98 +0,0 @@ -defmodule Dbservice.Groups do - @moduledoc """ - The Groups context. - """ - - import Ecto.Query, warn: false - alias Dbservice.Repo - - alias Dbservice.Groups.Group - alias Dbservice.Groups.GroupType - - @doc """ - Returns the list of group. - ## Examples - iex> list_group() - [%Group{}, ...] - """ - def list_group do - Repo.all(Group) - end - - @doc """ - Gets a single group. - Raises `Ecto.NoResultsError` if the Group does not exist. - ## Examples - iex> get_group!(123) - %Group{} - iex> get_group!(456) - ** (Ecto.NoResultsError) - """ - def get_group!(id) do - Repo.get!(Group, id) |> Repo.preload(:group_type) - end - - @doc """ - Gets a Group by name. - Raises `Ecto.NoResultsError` if the Group does not exist. - ## Examples - iex> get_group_by_name(DelhiStudents) - %Group{} - iex> get_group_by_name(abc) - ** (Ecto.NoResultsError) - """ - def get_group_by_name(name) do - Repo.get_by(Group, name: name) - end - - @doc """ - Creates a group. - ## Examples - iex> create_group(%{field: value}) - {:ok, %Group{}} - iex> create_group(%{field: bad_value}) - {:error, %Ecto.Changeset{}} - """ - def create_group(attrs \\ %{}) do - %Group{} - |> Group.changeset(attrs) - |> Ecto.Changeset.put_assoc(:group_type, [%GroupType{type: "group", child_id: attrs["id"]}]) - |> Repo.insert() - end - - @doc """ - Updates a group. - ## Examples - iex> update_group(group, %{field: new_value}) - {:ok, %Group{}} - iex> update_group(group, %{field: bad_value}) - {:error, %Ecto.Changeset{}} - """ - def update_group(%Group{} = group, attrs) do - group - |> Group.changeset(attrs) - |> Repo.update() - end - - @doc """ - Deletes a group. - ## Examples - iex> delete_group(group) - {:ok, %Group{}} - iex> delete_group(group) - {:error, %Ecto.Changeset{}} - """ - def delete_group(%Group{} = group) do - Repo.delete(group) - end - - @doc """ - Returns an `%Ecto.Changeset{}` for tracking group changes. - ## Examples - iex> change_group(group) - %Ecto.Changeset{data: %Group{}} - """ - def change_group(%Group{} = group, attrs \\ %{}) do - Group.changeset(group, attrs) - end -end diff --git a/lib/dbservice/groups/group.ex b/lib/dbservice/groups/auth_group.ex similarity index 74% rename from lib/dbservice/groups/group.ex rename to lib/dbservice/groups/auth_group.ex index 8c9a5834..8625202f 100644 --- a/lib/dbservice/groups/group.ex +++ b/lib/dbservice/groups/auth_group.ex @@ -1,4 +1,4 @@ -defmodule Dbservice.Groups.Group do +defmodule Dbservice.Groups.AuthGroup do @moduledoc false use Ecto.Schema @@ -8,25 +8,25 @@ defmodule Dbservice.Groups.Group do alias Dbservice.Groups.GroupType alias Dbservice.EnrollmentRecords.EnrollmentRecord - schema "group" do + schema "auth_group" do field :name, :string field :input_schema, :map field :locale, :string field :locale_data, :map has_many :program, Program - has_many :group_type, GroupType, foreign_key: :child_id, where: [type: "group"] + has_many :group_type, GroupType, foreign_key: :child_id, where: [type: "auth-group"] has_many :enrollment_record, EnrollmentRecord, - foreign_key: :grouping_id, - where: [grouping_type: "group"] + foreign_key: :group_id, + where: [group_type: "auth-group"] timestamps() end @doc false - def changeset(group_type, attrs) do - group_type + def changeset(auth_group, attrs) do + auth_group |> cast(attrs, [ :name, :input_schema, diff --git a/lib/dbservice_web/controllers/auth_group_controller.ex b/lib/dbservice_web/controllers/auth_group_controller.ex new file mode 100644 index 00000000..75458beb --- /dev/null +++ b/lib/dbservice_web/controllers/auth_group_controller.ex @@ -0,0 +1,143 @@ +defmodule DbserviceWeb.AuthGroupController do + use DbserviceWeb, :controller + + import Ecto.Query + alias Dbservice.Repo + alias Dbservice.AuthGroups + alias Dbservice.Groups.AuthGroups + + action_fallback DbserviceWeb.FallbackController + + use PhoenixSwagger + + alias DbserviceWeb.SwaggerSchema.AuthGroup, as: SwaggerSchemaAuthGroup + + def swagger_definitions do + # merge the required definitions in a pair at a time using the Map.merge/2 function + Map.merge(SwaggerSchemaAuthGroup.auth_group(), SwaggerSchemaAuthGroup.auth_groups()) + end + + swagger_path :index do + get("/api/auth-group") + + parameters do + params(:query, :string, "The name of the auth-group", required: false, name: "name") + + params(:query, :string, "The locale of the auth-group", + required: false, + name: "locale" + ) + end + + response(200, "OK", Schema.ref(:AuthGroups)) + end + + def index(conn, params) do + query = + from m in AuthGroup, + order_by: [asc: m.id], + offset: ^params["offset"], + limit: ^params["limit"] + + query = + Enum.reduce(params, query, fn {key, value}, acc -> + case String.to_existing_atom(key) do + :offset -> acc + :limit -> acc + atom -> from u in acc, where: field(u, ^atom) == ^value + end + end) + + auth_group = Repo.all(query) + render(conn, "index.json", auth_group: auth_group) + end + + swagger_path :create do + post("/api/auth-group") + + parameters do + body(:body, Schema.ref(:AuthGroup), "AuthGroup to create", required: true) + end + + response(201, "Created", Schema.ref(:AuthGroup)) + end + + def create(conn, params) do + case AuthGroup.get_auth_group_by_name(params["name"]) do + nil -> + create_new_auth_group(conn, params) + + existing_auth_group -> + update_existing_auth_group(conn, existing_auth_group, params) + end + end + + swagger_path :show do + get("/api/auth-group/{authGroupId}") + + parameters do + authGroupId(:path, :integer, "The id of the auth-group record", required: true) + end + + response(200, "OK", Schema.ref(:AuthGroup)) + end + + def show(conn, %{"id" => id}) do + auth_group = AuthGroups.get_auth_group!(id) + render(conn, "show.json", auth_group: auth_group) + end + + swagger_path :update do + patch("/api/auth-group/{authGroupId}") + + parameters do + authGroupId(:path, :integer, "The id of the auth-group record", required: true) + body(:body, Schema.ref(:AuthGroup), "Auth-Group to create", required: true) + end + + response(200, "Updated", Schema.ref(:AuthGroup)) + end + + def update(conn, params) do + auth_group = AuthGroups.get_auth_group!(params["id"]) + + with {:ok, %AuthGroup{} = auth_group} <- AuthGroups.update_auth_group(auth_group, params) do + render(conn, "show.json", auth_group: auth_group) + end + end + + swagger_path :delete do + PhoenixSwagger.Path.delete("/api/auth-group/{authGroupId}") + + parameters do + authGroupId(:path, :integer, "The id of the auth-group record", required: true) + end + + response(204, "No Content") + end + + def delete(conn, %{"id" => id}) do + auth_group = AuthGroups.get_auth_group!(id) + + with {:ok, %AuthGroup{}} <- AuthGroups.delete_auth_group(auth_group) do + send_resp(conn, :no_content, "") + end + end + + defp create_new_auth_group(conn, params) do + with {:ok, %AuthGroup{} = auth_group} <- AuthGroups.create_auth_group(params) do + conn + |> put_status(:created) + |> put_resp_header("location", Routes.auth_group_path(conn, :show, auth_group)) + |> render("show.json", auth_group: auth_group) + end + end + + defp update_existing_auth_group(conn, existing_auth_group, params) do + with {:ok, %AuthGroup{} = auth_group} <- AuthGroups.update_auth_group(existing_auth_group, params) do + conn + |> put_status(:ok) + |> render("show.json", auth_group: auth_group) + end + end +end diff --git a/lib/dbservice_web/controllers/group_controller.ex b/lib/dbservice_web/controllers/group_controller.ex deleted file mode 100644 index d7828bcf..00000000 --- a/lib/dbservice_web/controllers/group_controller.ex +++ /dev/null @@ -1,143 +0,0 @@ -defmodule DbserviceWeb.GroupController do - use DbserviceWeb, :controller - - import Ecto.Query - alias Dbservice.Repo - alias Dbservice.Groups - alias Dbservice.Groups.Group - - action_fallback DbserviceWeb.FallbackController - - use PhoenixSwagger - - alias DbserviceWeb.SwaggerSchema.Group, as: SwaggerSchemaGroup - - def swagger_definitions do - # merge the required definitions in a pair at a time using the Map.merge/2 function - Map.merge(SwaggerSchemaGroup.group(), SwaggerSchemaGroup.groups()) - end - - swagger_path :index do - get("/api/group") - - parameters do - params(:query, :string, "The name the group", required: false, name: "name") - - params(:query, :string, "The locale the group", - required: false, - name: "locale" - ) - end - - response(200, "OK", Schema.ref(:Groups)) - end - - def index(conn, params) do - query = - from m in Group, - order_by: [asc: m.id], - offset: ^params["offset"], - limit: ^params["limit"] - - query = - Enum.reduce(params, query, fn {key, value}, acc -> - case String.to_existing_atom(key) do - :offset -> acc - :limit -> acc - atom -> from u in acc, where: field(u, ^atom) == ^value - end - end) - - group = Repo.all(query) - render(conn, "index.json", group: group) - end - - swagger_path :create do - post("/api/group") - - parameters do - body(:body, Schema.ref(:Group), "Group to create", required: true) - end - - response(201, "Created", Schema.ref(:Group)) - end - - def create(conn, params) do - case Groups.get_group_by_name(params["name"]) do - nil -> - create_new_group(conn, params) - - existing_group -> - update_existing_group(conn, existing_group, params) - end - end - - swagger_path :show do - get("/api/group/{groupId}") - - parameters do - groupId(:path, :integer, "The id of the group record", required: true) - end - - response(200, "OK", Schema.ref(:Group)) - end - - def show(conn, %{"id" => id}) do - group = Groups.get_group!(id) - render(conn, "show.json", group: group) - end - - swagger_path :update do - patch("/api/group/{groupId}") - - parameters do - groupId(:path, :integer, "The id of the group record", required: true) - body(:body, Schema.ref(:Group), "Group to create", required: true) - end - - response(200, "Updated", Schema.ref(:Group)) - end - - def update(conn, params) do - group = Groups.get_group!(params["id"]) - - with {:ok, %Group{} = group} <- Groups.update_group(group, params) do - render(conn, "show.json", group: group) - end - end - - swagger_path :delete do - PhoenixSwagger.Path.delete("/api/group/{groupId}") - - parameters do - groupId(:path, :integer, "The id of the group record", required: true) - end - - response(204, "No Content") - end - - def delete(conn, %{"id" => id}) do - group = Groups.get_group!(id) - - with {:ok, %Group{}} <- Groups.delete_group(group) do - send_resp(conn, :no_content, "") - end - end - - defp create_new_group(conn, params) do - with {:ok, %Group{} = group} <- Groups.create_group(params) do - conn - |> put_status(:created) - |> put_resp_header("location", Routes.group_path(conn, :show, group)) - |> render("show.json", group: group) - end - end - - defp update_existing_group(conn, existing_group, params) do - with {:ok, %Group{} = group} <- Groups.update_group(existing_group, params) do - conn - |> put_status(:ok) - |> render("show.json", group: group) - end - end -end diff --git a/lib/dbservice_web/router.ex b/lib/dbservice_web/router.ex index ba1b4230..b6e4776f 100644 --- a/lib/dbservice_web/router.ex +++ b/lib/dbservice_web/router.ex @@ -11,7 +11,7 @@ defmodule DbserviceWeb.Router do scope "/api", DbserviceWeb do pipe_through(:api) - resources("/group", GroupController, except: [:new, :edit]) + resources("/auth-group", AuthGroupController, except: [:new, :edit]) post("/group-type/:id/update-users", GroupTypeController, :update_users) post("/group-type/:id/update-sessions", GroupTypeController, :update_sessions) diff --git a/lib/dbservice_web/swagger_schemas/group.ex b/lib/dbservice_web/swagger_schemas/group.ex index cb86d357..353e1c5e 100644 --- a/lib/dbservice_web/swagger_schemas/group.ex +++ b/lib/dbservice_web/swagger_schemas/group.ex @@ -3,18 +3,18 @@ defmodule DbserviceWeb.SwaggerSchema.Group do use PhoenixSwagger - def group do + def auth_group do %{ - Group: + AuthGroup: swagger_schema do - title("Group") - description("A group in the application") + title("AuthGroup") + description("An auth-group in the application") properties do - name(:string, "Name of a group") + name(:string, "Name of the auth group") input_schema(:map, "Input schema") - locale(:string, "The configured locale for the group") - locale_data(:map, "Meta data about locale settings for the group") + locale(:string, "The configured locale for the auth-group") + locale_data(:map, "Meta data about locale settings for the auth-group") end example(%{ @@ -80,14 +80,14 @@ defmodule DbserviceWeb.SwaggerSchema.Group do } end - def groups do + def auth_groups do %{ - Groups: + AuthGroups: swagger_schema do - title("Groups") - description("All the groups") + title("AuthGroups") + description("All the auth-groups") type(:array) - items(Schema.ref(:Group)) + items(Schema.ref(:AuthGroup)) end } end diff --git a/lib/dbservice_web/views/auth_group_view.ex b/lib/dbservice_web/views/auth_group_view.ex new file mode 100644 index 00000000..f7b5b74a --- /dev/null +++ b/lib/dbservice_web/views/auth_group_view.ex @@ -0,0 +1,22 @@ +defmodule DbserviceWeb.AuthGroupView do + use DbserviceWeb, :view + alias DbserviceWeb.AuthGroupView + + def render("index.json", %{auth_group: auth_group}) do + render_many(auth_group, AuthGroupView, "auth_group.json") + end + + def render("show.json", %{auth_group: auth_group}) do + render_one(auth_group, AuthGroupView, "auth_group.json") + end + + def render("auth_group.json", %{auth_group: auth_group}) do + %{ + id: auth_group.id, + name: auth_group.name, + input_schema: auth_group.input_schema, + locale: auth_group.locale, + locale_data: auth_group.locale_data + } + end +end diff --git a/lib/dbservice_web/views/group_view.ex b/lib/dbservice_web/views/group_view.ex deleted file mode 100644 index 4f45fdfa..00000000 --- a/lib/dbservice_web/views/group_view.ex +++ /dev/null @@ -1,22 +0,0 @@ -defmodule DbserviceWeb.GroupView do - use DbserviceWeb, :view - alias DbserviceWeb.GroupView - - def render("index.json", %{group: group}) do - render_many(group, GroupView, "group.json") - end - - def render("show.json", %{group: group}) do - render_one(group, GroupView, "group.json") - end - - def render("group.json", %{group: group}) do - %{ - id: group.id, - name: group.name, - input_schema: group.input_schema, - locale: group.locale, - locale_data: group.locale_data - } - end -end From 4c4828794380e56213cb529607b11495f31f4b98 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sat, 16 Mar 2024 21:47:37 +0530 Subject: [PATCH 02/54] formatting --- lib/dbservice/auth_groups.ex | 4 +++- lib/dbservice_web/controllers/auth_group_controller.ex | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/dbservice/auth_groups.ex b/lib/dbservice/auth_groups.ex index efe02577..216d60a2 100644 --- a/lib/dbservice/auth_groups.ex +++ b/lib/dbservice/auth_groups.ex @@ -55,7 +55,9 @@ defmodule Dbservice.AuthGroup do def create_auth_group(attrs \\ %{}) do %AuthGroup{} |> AuthGroup.changeset(attrs) - |> Ecto.Changeset.put_assoc(:group_type, [%GroupType{type: "auth_group", child_id: attrs["id"]}]) + |> Ecto.Changeset.put_assoc(:group_type, [ + %GroupType{type: "auth_group", child_id: attrs["id"]} + ]) |> Repo.insert() end diff --git a/lib/dbservice_web/controllers/auth_group_controller.ex b/lib/dbservice_web/controllers/auth_group_controller.ex index 75458beb..59f860f0 100644 --- a/lib/dbservice_web/controllers/auth_group_controller.ex +++ b/lib/dbservice_web/controllers/auth_group_controller.ex @@ -134,7 +134,8 @@ defmodule DbserviceWeb.AuthGroupController do end defp update_existing_auth_group(conn, existing_auth_group, params) do - with {:ok, %AuthGroup{} = auth_group} <- AuthGroups.update_auth_group(existing_auth_group, params) do + with {:ok, %AuthGroup{} = auth_group} <- + AuthGroups.update_auth_group(existing_auth_group, params) do conn |> put_status(:ok) |> render("show.json", auth_group: auth_group) From a86d8f9e576ba2f569e69470514255e22aafd09b Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sun, 17 Mar 2024 16:45:42 +0530 Subject: [PATCH 03/54] failed check --- lib/dbservice/auth_groups.ex | 2 +- lib/dbservice_web/controllers/auth_group_controller.ex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/dbservice/auth_groups.ex b/lib/dbservice/auth_groups.ex index 216d60a2..ddfa151d 100644 --- a/lib/dbservice/auth_groups.ex +++ b/lib/dbservice/auth_groups.ex @@ -1,4 +1,4 @@ -defmodule Dbservice.AuthGroup do +defmodule Dbservice.AuthGroups do @moduledoc """ The AuthGroup context. """ diff --git a/lib/dbservice_web/controllers/auth_group_controller.ex b/lib/dbservice_web/controllers/auth_group_controller.ex index 59f860f0..0f1199a7 100644 --- a/lib/dbservice_web/controllers/auth_group_controller.ex +++ b/lib/dbservice_web/controllers/auth_group_controller.ex @@ -4,7 +4,7 @@ defmodule DbserviceWeb.AuthGroupController do import Ecto.Query alias Dbservice.Repo alias Dbservice.AuthGroups - alias Dbservice.Groups.AuthGroups + alias Dbservice.Groups.AuthGroup action_fallback DbserviceWeb.FallbackController From 662a9bf513f95c97a2cbc890f38c9898d4f7ca9a Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sun, 17 Mar 2024 16:55:00 +0530 Subject: [PATCH 04/54] failed check --- lib/dbservice/auth_groups.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dbservice/auth_groups.ex b/lib/dbservice/auth_groups.ex index ddfa151d..66a288bf 100644 --- a/lib/dbservice/auth_groups.ex +++ b/lib/dbservice/auth_groups.ex @@ -6,7 +6,7 @@ defmodule Dbservice.AuthGroups do import Ecto.Query, warn: false alias Dbservice.Repo - alias Dbservice.Groups.Group.AuthGroup + alias Dbservice.Groups.AuthGroup @doc """ Returns the list of auth groups. From 9684a67d350f4bcc11682113b802b90ea869c715 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sun, 17 Mar 2024 17:18:25 +0530 Subject: [PATCH 05/54] renamed group-type -> group --- lib/dbservice/auth_groups.ex | 2 +- lib/dbservice/batches.ex | 4 +- lib/dbservice/batches/batch.ex | 4 +- lib/dbservice/group_types.ex | 117 ------------------ lib/dbservice/groups.ex | 117 ++++++++++++++++++ lib/dbservice/groups/auth_group.ex | 4 +- .../groups/{group_type.ex => group.ex} | 8 +- lib/dbservice/groups/group_session.ex | 8 +- lib/dbservice/groups/group_user.ex | 8 +- lib/dbservice/programs.ex | 4 +- lib/dbservice/programs/program.ex | 10 +- lib/dbservice/sessions.ex | 2 +- lib/dbservice/users.ex | 2 +- lib/dbservice/users/user.ex | 4 +- ...type_controller.ex => group_controller.ex} | 88 ++++++------- lib/dbservice_web/router.ex | 6 +- lib/dbservice_web/views/group_type_view.ex | 57 --------- lib/dbservice_web/views/group_view.ex | 57 +++++++++ 18 files changed, 252 insertions(+), 250 deletions(-) delete mode 100644 lib/dbservice/group_types.ex create mode 100644 lib/dbservice/groups.ex rename lib/dbservice/groups/{group_type.ex => group.ex} (80%) rename lib/dbservice_web/controllers/{group_type_controller.ex => group_controller.ex} (50%) delete mode 100644 lib/dbservice_web/views/group_type_view.ex create mode 100644 lib/dbservice_web/views/group_view.ex diff --git a/lib/dbservice/auth_groups.ex b/lib/dbservice/auth_groups.ex index 66a288bf..600f6312 100644 --- a/lib/dbservice/auth_groups.ex +++ b/lib/dbservice/auth_groups.ex @@ -56,7 +56,7 @@ defmodule Dbservice.AuthGroups do %AuthGroup{} |> AuthGroup.changeset(attrs) |> Ecto.Changeset.put_assoc(:group_type, [ - %GroupType{type: "auth_group", child_id: attrs["id"]} + %Group{type: "auth_group", child_id: attrs["id"]} ]) |> Repo.insert() end diff --git a/lib/dbservice/batches.ex b/lib/dbservice/batches.ex index 1777f3ed..deccca92 100644 --- a/lib/dbservice/batches.ex +++ b/lib/dbservice/batches.ex @@ -7,7 +7,7 @@ defmodule Dbservice.Batches do alias Dbservice.Repo alias Dbservice.Batches.Batch - alias Dbservice.Groups.GroupType + alias Dbservice.Groups.Group @doc """ Returns the list of batch. @@ -54,7 +54,7 @@ defmodule Dbservice.Batches do def create_batch(attrs \\ %{}) do %Batch{} |> Batch.changeset(attrs) - |> Ecto.Changeset.put_assoc(:group_type, [%GroupType{type: "batch", child_id: attrs["id"]}]) + |> Ecto.Changeset.put_assoc(:group_type, [%Group{type: "batch", child_id: attrs["id"]}]) |> Repo.insert() end diff --git a/lib/dbservice/batches/batch.ex b/lib/dbservice/batches/batch.ex index 79fe2ca1..72d4157c 100644 --- a/lib/dbservice/batches/batch.ex +++ b/lib/dbservice/batches/batch.ex @@ -5,7 +5,7 @@ defmodule Dbservice.Batches.Batch do import Ecto.Changeset alias Dbservice.Programs.Program - alias Dbservice.Groups.GroupType + alias Dbservice.Groups.Group alias Dbservice.EnrollmentRecords.EnrollmentRecord alias Dbservice.Sessions.SessionSchedule @@ -15,7 +15,7 @@ defmodule Dbservice.Batches.Batch do field :batch_id, :string field :parent_id, :integer - has_many :group_type, GroupType, foreign_key: :child_id, where: [type: "batch"] + has_many :group_type, Group, foreign_key: :child_id, where: [type: "batch"] has_many :enrollment_record, EnrollmentRecord, foreign_key: :grouping_id, diff --git a/lib/dbservice/group_types.ex b/lib/dbservice/group_types.ex deleted file mode 100644 index ae50107e..00000000 --- a/lib/dbservice/group_types.ex +++ /dev/null @@ -1,117 +0,0 @@ -defmodule Dbservice.GroupTypes do - @moduledoc """ - The GroupTypes context. - """ - - import Ecto.Query, warn: false - alias Dbservice.Repo - - alias Dbservice.Groups.GroupSession - alias Dbservice.Groups.GroupUser - alias Dbservice.Groups.GroupType - - @doc """ - Returns the list of group_type. - ## Examples - iex> list_group_type() - [%GroupType{}, ...] - """ - def list_group_type do - Repo.all(GroupType) - end - - @doc """ - Gets a single group_type. - Raises `Ecto.NoResultsError` if the GroupType does not exist. - ## Examples - iex> get_group_type!(123) - %GroupType{} - iex> get_group_type!(456) - ** (Ecto.NoResultsError) - """ - def get_group_type!(id), do: Repo.get!(GroupType, id) - - @doc """ - Creates a group_type. - ## Examples - iex> create_group_type_type(%{field: value}) - {:ok, %GroupType{}} - iex> create_group_type(%{field: bad_value}) - {:error, %Ecto.Changeset{}} - """ - def create_group_type(attrs \\ %{}) do - %GroupType{} - |> GroupType.changeset(attrs) - |> Repo.insert() - end - - @doc """ - Updates a group_type. - ## Examples - iex> update_group_type(group_type, %{field: new_value}) - {:ok, %GroupType{}} - iex> update_group_type(group_type, %{field: bad_value}) - {:error, %Ecto.Changeset{}} - """ - def update_group_type(%GroupType{} = group, attrs) do - group - |> GroupType.changeset(attrs) - |> Repo.update() - end - - @doc """ - Deletes a group_type. - ## Examples - iex> delete_group_type(group) - {:ok, %Group{}} - iex> delete_group_type(group) - {:error, %Ecto.Changeset{}} - """ - def delete_group_type(%GroupType{} = group) do - Repo.delete(group) - end - - @doc """ - Returns an `%Ecto.Changeset{}` for tracking group_type changes. - ## Examples - iex> change_group_type(group_type) - %Ecto.Changeset{data: %GroupType{}} - """ - def change_group_type(%GroupType{} = group, attrs \\ %{}) do - GroupType.changeset(group, attrs) - end - - @doc """ - Updates the users mapped to a group_type. - """ - def update_users(group_id, user_ids) when is_list(user_ids) do - group = get_group_type!(group_id) - - users = - Dbservice.Users.User - |> where([user], user.id in ^user_ids) - |> Repo.all() - - group - |> Repo.preload(:user) - |> GroupUser.changeset_update_users(users) - |> Repo.update() - end - - @doc """ - Updates the sessions mapped to a group. - """ - def update_sessions(group_id, session_ids) when is_list(session_ids) do - group = get_group_type!(group_id) - - sessions = - Dbservice.Sessions.Session - |> where([session], session.id in ^session_ids) - |> Repo.all() - - group - |> Repo.preload(:session) - |> GroupSession.changeset_update_sessions(sessions) - |> Repo.update() - end -end diff --git a/lib/dbservice/groups.ex b/lib/dbservice/groups.ex new file mode 100644 index 00000000..a38440ef --- /dev/null +++ b/lib/dbservice/groups.ex @@ -0,0 +1,117 @@ +defmodule Dbservice.Groups do + @moduledoc """ + The Groups context. + """ + + import Ecto.Query, warn: false + alias Dbservice.Repo + + alias Dbservice.Groups.GroupSession + alias Dbservice.Groups.GroupUser + alias Dbservice.Groups.Group + + @doc """ + Returns the list of groups. + ## Examples + iex> list_group() + [%Group{}, ...] + """ + def list_group do + Repo.all(Group) + end + + @doc """ + Gets a single group. + Raises `Ecto.NoResultsError` if the Group does not exist. + ## Examples + iex> get_group!(123) + %Group{} + iex> get_group!(456) + ** (Ecto.NoResultsError) + """ + def get_group!(id), do: Repo.get!(Group, id) + + @doc """ + Creates a group. + ## Examples + iex> create_group(%{field: value}) + {:ok, %Group{}} + iex> create_group(%{field: bad_value}) + {:error, %Ecto.Changeset{}} + """ + def create_group(attrs \\ %{}) do + %Group{} + |> Group.changeset(attrs) + |> Repo.insert() + end + + @doc """ + Updates a group. + ## Examples + iex> update_group(group, %{field: new_value}) + {:ok, %Group{}} + iex> update_group(group, %{field: bad_value}) + {:error, %Ecto.Changeset{}} + """ + def update_group(%Group{} = group, attrs) do + group + |> Group.changeset(attrs) + |> Repo.update() + end + + @doc """ + Deletes a group. + ## Examples + iex> delete_group(group) + {:ok, %Group{}} + iex> delete_group(group) + {:error, %Ecto.Changeset{}} + """ + def delete_group(%Group{} = group) do + Repo.delete(group) + end + + @doc """ + Returns an `%Ecto.Changeset{}` for tracking group changes. + ## Examples + iex> change_group(group) + %Ecto.Changeset{data: %Group{}} + """ + def change_group(%Group{} = group, attrs \\ %{}) do + Group.changeset(group, attrs) + end + + @doc """ + Updates the users mapped to a group. + """ + def update_users(group_id, user_ids) when is_list(user_ids) do + group = get_group!(group_id) + + users = + Dbservice.Users.User + |> where([user], user.id in ^user_ids) + |> Repo.all() + + group + |> Repo.preload(:user) + |> GroupUser.changeset_update_users(users) + |> Repo.update() + end + + @doc """ + Updates the sessions mapped to a group. + """ + def update_sessions(group_id, session_ids) when is_list(session_ids) do + group = get_group!(group_id) + + sessions = + Dbservice.Sessions.Session + |> where([session], session.id in ^session_ids) + |> Repo.all() + + group + |> Repo.preload(:session) + |> GroupSession.changeset_update_sessions(sessions) + |> Repo.update() + end +end diff --git a/lib/dbservice/groups/auth_group.ex b/lib/dbservice/groups/auth_group.ex index 8625202f..8c8dbb11 100644 --- a/lib/dbservice/groups/auth_group.ex +++ b/lib/dbservice/groups/auth_group.ex @@ -5,7 +5,7 @@ defmodule Dbservice.Groups.AuthGroup do import Ecto.Changeset alias Dbservice.Programs.Program - alias Dbservice.Groups.GroupType + alias Dbservice.Groups.Group alias Dbservice.EnrollmentRecords.EnrollmentRecord schema "auth_group" do @@ -15,7 +15,7 @@ defmodule Dbservice.Groups.AuthGroup do field :locale_data, :map has_many :program, Program - has_many :group_type, GroupType, foreign_key: :child_id, where: [type: "auth-group"] + has_many :group, Group, foreign_key: :child_id, where: [type: "auth-group"] has_many :enrollment_record, EnrollmentRecord, foreign_key: :group_id, diff --git a/lib/dbservice/groups/group_type.ex b/lib/dbservice/groups/group.ex similarity index 80% rename from lib/dbservice/groups/group_type.ex rename to lib/dbservice/groups/group.ex index 300ca311..1b4041e8 100644 --- a/lib/dbservice/groups/group_type.ex +++ b/lib/dbservice/groups/group.ex @@ -1,4 +1,4 @@ -defmodule Dbservice.Groups.GroupType do +defmodule Dbservice.Groups.Group do @moduledoc false use Ecto.Schema @@ -6,7 +6,7 @@ defmodule Dbservice.Groups.GroupType do alias Dbservice.Users.User alias Dbservice.Sessions.Session - schema "group_type" do + schema "group" do field :type, :string field :child_id, :integer @@ -17,8 +17,8 @@ defmodule Dbservice.Groups.GroupType do end @doc false - def changeset(group_type, attrs) do - group_type + def changeset(group, attrs) do + group |> cast(attrs, [ :type, :child_id diff --git a/lib/dbservice/groups/group_session.ex b/lib/dbservice/groups/group_session.ex index caf5ccb2..47736e6b 100644 --- a/lib/dbservice/groups/group_session.ex +++ b/lib/dbservice/groups/group_session.ex @@ -2,12 +2,12 @@ defmodule Dbservice.Groups.GroupSession do @moduledoc false use Ecto.Schema - alias Dbservice.Groups.GroupType + alias Dbservice.Groups.Group alias Dbservice.Sessions.Session import Ecto.Changeset schema "group_session" do - belongs_to :group_type, GroupType + belongs_to :group, Group belongs_to :session, Session timestamps() @@ -17,10 +17,10 @@ defmodule Dbservice.Groups.GroupSession do def changeset(group_session, attrs) do group_session |> cast(attrs, [ - :group_type_id, + :group_id, :session_id ]) - |> validate_required([:group_type_id, :session_id]) + |> validate_required([:group_id, :session_id]) end def changeset_update_sessions(group, sessions) do diff --git a/lib/dbservice/groups/group_user.ex b/lib/dbservice/groups/group_user.ex index db0f008b..01f6e3ba 100644 --- a/lib/dbservice/groups/group_user.ex +++ b/lib/dbservice/groups/group_user.ex @@ -3,13 +3,13 @@ defmodule Dbservice.Groups.GroupUser do use Ecto.Schema alias Dbservice.Users.User - alias Dbservice.Groups.GroupType + alias Dbservice.Groups.Group import Ecto.Changeset schema "group_user" do field :program_date_of_joining, :utc_datetime field :program_student_language, :string - belongs_to :group_type, GroupType + belongs_to :group, Group belongs_to :user, User belongs_to :program_manager, User @@ -20,13 +20,13 @@ defmodule Dbservice.Groups.GroupUser do def changeset(group_user, attrs) do group_user |> cast(attrs, [ - :group_type_id, + :group_id, :user_id, :program_manager_id, :program_date_of_joining, :program_student_language ]) - |> validate_required([:group_type_id, :user_id]) + |> validate_required([:group_id, :user_id]) end def changeset_update_users(group, users) do diff --git a/lib/dbservice/programs.ex b/lib/dbservice/programs.ex index 38a468c7..9dcbd257 100644 --- a/lib/dbservice/programs.ex +++ b/lib/dbservice/programs.ex @@ -7,7 +7,7 @@ defmodule Dbservice.Programs do alias Dbservice.Repo alias Dbservice.Programs.Program - alias Dbservice.Groups.GroupType + alias Dbservice.Groups.Group @doc """ Returns the list of program. @@ -41,7 +41,7 @@ defmodule Dbservice.Programs do def create_program(attrs \\ %{}) do %Program{} |> Program.changeset(attrs) - |> Ecto.Changeset.put_assoc(:group_type, [%GroupType{type: "program", child_id: attrs["id"]}]) + |> Ecto.Changeset.put_assoc(:group_type, [%Group{type: "program", child_id: attrs["id"]}]) |> Repo.insert() end diff --git a/lib/dbservice/programs/program.ex b/lib/dbservice/programs/program.ex index b301ac63..b60b801b 100644 --- a/lib/dbservice/programs/program.ex +++ b/lib/dbservice/programs/program.ex @@ -4,9 +4,9 @@ defmodule Dbservice.Programs.Program do use Ecto.Schema import Ecto.Changeset - alias Dbservice.Groups.Group + alias Dbservice.Groups.AuthGroup alias Dbservice.Batches.Batch - alias Dbservice.Groups.GroupType + alias Dbservice.Groups.Group alias Dbservice.EnrollmentRecords.EnrollmentRecord schema "program" do @@ -21,8 +21,8 @@ defmodule Dbservice.Programs.Program do field :state, :string field :model, :string - belongs_to :group, Group - has_many :group_type, GroupType, foreign_key: :child_id, where: [type: "program"] + belongs_to :auth_group, AuthGroup + has_many :group_type, Group, foreign_key: :child_id, where: [type: "program"] many_to_many :batch, Batch, join_through: "batch_program", on_replace: :delete has_many :enrollment_record, EnrollmentRecord, @@ -46,7 +46,7 @@ defmodule Dbservice.Programs.Program do :donor, :state, :model, - :group_id + :auth_group_id ]) |> validate_required([:name]) end diff --git a/lib/dbservice/sessions.ex b/lib/dbservice/sessions.ex index e13f31be..386b3844 100644 --- a/lib/dbservice/sessions.ex +++ b/lib/dbservice/sessions.ex @@ -122,7 +122,7 @@ defmodule Dbservice.Sessions do session = get_session!(session_id) group_types = - Dbservice.Groups.GroupType + Dbservice.Groups.Group |> where([group_type], group_type.id in ^group_type_ids) |> Repo.all() diff --git a/lib/dbservice/users.ex b/lib/dbservice/users.ex index fb1d5977..80786e9f 100644 --- a/lib/dbservice/users.ex +++ b/lib/dbservice/users.ex @@ -122,7 +122,7 @@ defmodule Dbservice.Users do user = get_user!(user_id) group_types = - Dbservice.Groups.GroupType + Dbservice.Groups.Group |> where([group_type], group_type.id in ^group_type_ids) |> Repo.all() diff --git a/lib/dbservice/users/user.ex b/lib/dbservice/users/user.ex index 9a433a52..2782c802 100644 --- a/lib/dbservice/users/user.ex +++ b/lib/dbservice/users/user.ex @@ -8,7 +8,7 @@ defmodule Dbservice.Users.User do alias Dbservice.Sessions.SessionOccurence alias Dbservice.Users.Teacher alias Dbservice.Users.Student - alias Dbservice.Groups.GroupType + alias Dbservice.Groups.Group schema "user" do field(:first_name, :string) @@ -32,7 +32,7 @@ defmodule Dbservice.Users.User do many_to_many(:sessions, SessionOccurence, join_through: "user_session", on_replace: :delete) has_one(:teacher, Teacher) has_one(:student, Student) - many_to_many(:group_type, GroupType, join_through: "group_user", on_replace: :delete) + many_to_many(:group_type, Group, join_through: "group_user", on_replace: :delete) end @doc false diff --git a/lib/dbservice_web/controllers/group_type_controller.ex b/lib/dbservice_web/controllers/group_controller.ex similarity index 50% rename from lib/dbservice_web/controllers/group_type_controller.ex rename to lib/dbservice_web/controllers/group_controller.ex index d54b42df..1730c156 100644 --- a/lib/dbservice_web/controllers/group_type_controller.ex +++ b/lib/dbservice_web/controllers/group_controller.ex @@ -1,17 +1,17 @@ -defmodule DbserviceWeb.GroupTypeController do +defmodule DbserviceWeb.GroupController do use DbserviceWeb, :controller import Ecto.Query alias Dbservice.Repo - alias Dbservice.GroupTypes - alias Dbservice.Groups.GroupType + alias Dbservice.Groups + alias Dbservice.Groups.Group action_fallback DbserviceWeb.FallbackController use PhoenixSwagger - alias DbserviceWeb.SwaggerSchema.GroupType, as: SwaggerSchemaGroupType alias DbserviceWeb.SwaggerSchema.Group, as: SwaggerSchemaGroup + alias DbserviceWeb.SwaggerSchema.AuthGroup, as: SwaggerSchemaAuthGroup alias DbserviceWeb.SwaggerSchema.Common, as: SwaggerSchemaCommon def swagger_definitions do @@ -19,34 +19,34 @@ defmodule DbserviceWeb.GroupTypeController do Map.merge( Map.merge( Map.merge( - Map.merge(SwaggerSchemaGroupType.group_type(), SwaggerSchemaGroup.groupsessions()), + Map.merge(SwaggerSchemaGroup.group(), SwaggerSchemaGroup.groupsessions()), Map.merge(SwaggerSchemaCommon.user_ids(), SwaggerSchemaCommon.session_ids()) ), SwaggerSchemaGroup.groupusers() ), - SwaggerSchemaGroupType.group_types() + SwaggerSchemaGroup.groups() ) end swagger_path :index do - get("/api/group-type") + get("/api/group") parameters do - params(:query, :string, "The type the group", required: false, name: "type") + params(:query, :string, "The type of the group", required: false, name: "type") - params(:query, :integer, "The child id the group type", + params(:query, :integer, "The child id of the group", required: false, name: "child_id" ) end - response(200, "OK", Schema.ref(:GroupTypes)) + response(200, "OK", Schema.ref(:Groups)) end @spec index(Plug.Conn.t(), any) :: Plug.Conn.t() def index(conn, params) do query = - from m in GroupType, + from m in Group, order_by: [asc: m.id], offset: ^params["offset"], limit: ^params["limit"] @@ -60,88 +60,90 @@ defmodule DbserviceWeb.GroupTypeController do end end) - group_type = Repo.all(query) - render(conn, "index.json", group_type: group_type) + group = Repo.all(query) + render(conn, "index.json", group: group) end swagger_path :create do - post("/api/group-type") + post("/api/group") parameters do - body(:body, Schema.ref(:GroupType), "Group to create", required: true) + body(:body, Schema.ref(:Group), "Group to create", required: true) end - response(201, "Created", Schema.ref(:GroupType)) + response(201, "Created", Schema.ref(:Group)) end def create(conn, params) do - with {:ok, %GroupType{} = group_type} <- GroupTypes.create_group_type(params) do + with {:ok, %Group{} = group} <- Groups.create_group(params) do conn |> put_status(:created) - |> put_resp_header("location", Routes.group_path(conn, :show, group_type)) - |> render("show.json", group_type: group_type) + |> put_resp_header("location", Routes.group_path(conn, :show, group)) + |> render("show.json", group: group) end end swagger_path :show do - get("/api/group-type/{groupTypeId}") + get("/api/group/{groupId}") parameters do - groupTypeId(:path, :integer, "The id of the group-type record", required: true) + groupId(:path, :integer, "The id of the group record", required: true) end - response(200, "OK", Schema.ref(:GroupType)) + response(200, "OK", Schema.ref(:Group)) end def show(conn, %{"id" => id}) do - group_type = GroupTypes.get_group_type!(id) - render(conn, "show.json", group_type: group_type) + group = Groups.get_group!(id) + render(conn, "show.json", group: group) end swagger_path :update do - patch("/api/group-type/{groupTypeId}") + patch("/api/group/{groupId}") parameters do - groupTypeId(:path, :integer, "The id of the group-type record", required: true) - body(:body, Schema.ref(:GroupType), "Group to create", required: true) + groupId(:path, :integer, "The id of the group record", required: true) + body(:body, Schema.ref(:Group), "Group to create", required: true) end response(200, "Updated", Schema.ref(:Group)) end def update(conn, params) do - group_type = GroupTypes.get_group_type!(params["id"]) + group = Groups.get_group!(params["id"]) - with {:ok, %GroupType{} = group_type} <- GroupTypes.update_group_type(group_type, params) do - render(conn, "show.json", group_type: group_type) + with {:ok, %Group{} = group} <- Groups.update_group(group, params) do + render(conn, "show.json", group: group) end end swagger_path :delete do - PhoenixSwagger.Path.delete("/api/group-type/{groupTypeId}") + PhoenixSwagger.Path.delete("/api/group/{groupId}") parameters do - groupTypeId(:path, :integer, "The id of the group-type record", required: true) + groupId(:path, :integer, "The id of the group record", required: true) end response(204, "No Content") end def delete(conn, %{"id" => id}) do - group_type = GroupTypes.get_group_type!(id) + group = Groups.get_group!(id) - with {:ok, %GroupType{}} <- GroupTypes.delete_group_type(group_type) do + with {:ok, %Group{}} <- Groups.delete_group(group) do send_resp(conn, :no_content, "") end end swagger_path :update_users do - post("/api/group-type/{groupTypeId}/update-users") + post("/api/group/{groupId}/update-users") parameters do - groupTypeId(:path, :integer, "The id of the group record", required: true) + groupId(:path, :integer, "The id of the group record", required: true) - body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", required: true) + body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", + required: true + ) end response(200, "OK", Schema.ref(:GroupUsers)) @@ -149,16 +151,16 @@ defmodule DbserviceWeb.GroupTypeController do def update_users(conn, %{"id" => group_id, "user_ids" => user_ids}) when is_list(user_ids) do - with {:ok, %GroupType{} = group_type} <- GroupTypes.update_users(group_id, user_ids) do - render(conn, "show.json", group_type: group_type) + with {:ok, %Group{} = group} <- Groups.update_users(group_id, user_ids) do + render(conn, "show.json", group: group) end end swagger_path :update_sessions do - post("/api/group-type/{groupTypeId}/update-sessions") + post("/api/group/{groupId}/update-sessions") parameters do - groupTypeId(:path, :integer, "The id of the group record", required: true) + groupId(:path, :integer, "The id of the group record", required: true) body(:body, Schema.ref(:SessionIds), "List of session ids to update for the group", required: true @@ -170,8 +172,8 @@ defmodule DbserviceWeb.GroupTypeController do def update_sessions(conn, %{"id" => group_id, "session_ids" => session_ids}) when is_list(session_ids) do - with {:ok, %GroupType{} = group_type} <- GroupTypes.update_sessions(group_id, session_ids) do - render(conn, "show.json", group_type: group_type) + with {:ok, %Group{} = group} <- Groups.update_sessions(group_id, session_ids) do + render(conn, "show.json", group: group) end end end diff --git a/lib/dbservice_web/router.ex b/lib/dbservice_web/router.ex index b6e4776f..ac895925 100644 --- a/lib/dbservice_web/router.ex +++ b/lib/dbservice_web/router.ex @@ -12,8 +12,8 @@ defmodule DbserviceWeb.Router do pipe_through(:api) resources("/auth-group", AuthGroupController, except: [:new, :edit]) - post("/group-type/:id/update-users", GroupTypeController, :update_users) - post("/group-type/:id/update-sessions", GroupTypeController, :update_sessions) + post("/group/:id/update-users", GroupController, :update_users) + post("/group/:id/update-sessions", GroupController, :update_sessions) resources("/user", UserController, only: [:index, :create, :update, :show]) post("/user/:id/update-groups", UserController, :update_group_type) @@ -29,7 +29,7 @@ defmodule DbserviceWeb.Router do resources("/program", ProgramController, except: [:new, :edit]) resources("/batch", BatchController, except: [:new, :edit]) resources("/batch-program", BatchProgramController, except: [:new, :edit]) - resources("/group-type", GroupTypeController, except: [:new, :edit]) + resources("/group", GroupController, except: [:new, :edit]) resources("/form-schema", FormSchemaController) resources("/group-user", GroupUserController) resources("/tag", TagController, except: [:new, :edit]) diff --git a/lib/dbservice_web/views/group_type_view.ex b/lib/dbservice_web/views/group_type_view.ex deleted file mode 100644 index a02d75d3..00000000 --- a/lib/dbservice_web/views/group_type_view.ex +++ /dev/null @@ -1,57 +0,0 @@ -defmodule DbserviceWeb.GroupTypeView do - use DbserviceWeb, :view - alias DbserviceWeb.GroupTypeView - alias DbserviceWeb.GroupView - alias DbserviceWeb.ProgramView - alias DbserviceWeb.BatchView - alias Dbservice.Repo - alias Dbservice.Groups.Group - alias Dbservice.Batches.Batch - alias Dbservice.Programs.Program - - def render("index.json", %{group_type: group_type}) do - render_many(group_type, GroupTypeView, "group_type.json") - end - - def render("show.json", %{group_type: group_type}) do - render_one(group_type, GroupTypeView, "group_type.json") - end - - def render("group_type.json", %{group_type: group_type}) do - case group_type.type do - "group" -> - group = Repo.get!(Group, group_type.child_id) - - %{ - id: group_type.id, - type: group_type.type, - child_id: render_one(group, GroupView, "group.json") - } - - "program" -> - program = Repo.get!(Program, group_type.child_id) - - %{ - id: group_type.id, - type: group_type.type, - child_id: render_one(program, ProgramView, "program.json") - } - - "batch" -> - batch = Repo.get!(Batch, group_type.child_id) - - %{ - id: group_type.id, - type: group_type.type, - child_id: render_one(batch, BatchView, "batch.json") - } - - _ -> - %{ - id: group_type.id, - type: group_type.type, - child_id: group_type.child_id - } - end - end -end diff --git a/lib/dbservice_web/views/group_view.ex b/lib/dbservice_web/views/group_view.ex new file mode 100644 index 00000000..f1df286d --- /dev/null +++ b/lib/dbservice_web/views/group_view.ex @@ -0,0 +1,57 @@ +defmodule DbserviceWeb.GroupView do + use DbserviceWeb, :view + alias DbserviceWeb.GroupView + alias DbserviceWeb.AuthGroupView + alias DbserviceWeb.ProgramView + alias DbserviceWeb.BatchView + alias Dbservice.Repo + alias Dbservice.Groups.AuthGroup + alias Dbservice.Batches.Batch + alias Dbservice.Programs.Program + + def render("index.json", %{group: group}) do + render_many(group, GroupView, "group.json") + end + + def render("show.json", %{group: group}) do + render_one(group, GroupView, "group.json") + end + + def render("group.json", %{group: group}) do + case group.type do + "auth-group" -> + auth_group = Repo.get!(AuthGroup, group.child_id) + + %{ + id: group.id, + type: group.type, + child_id: render_one(auth_group, AuthGroupView, "auth_group.json") + } + + "program" -> + program = Repo.get!(Program, group.child_id) + + %{ + id: group.id, + type: group.type, + child_id: render_one(program, ProgramView, "program.json") + } + + "batch" -> + batch = Repo.get!(Batch, group.child_id) + + %{ + id: group.id, + type: group.type, + child_id: render_one(batch, BatchView, "batch.json") + } + + _ -> + %{ + id: group.id, + type: group.type, + child_id: group.child_id + } + end + end +end From 84870c47af9213aa544974cde6834ad9e42dcf71 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sun, 17 Mar 2024 17:19:54 +0530 Subject: [PATCH 06/54] renamed group-type -> group --- lib/dbservice/sessions/session.ex | 8 +- lib/dbservice_web/swagger_schemas/group.ex | 95 +++++-------------- .../swagger_schemas/group_type.ex | 51 ---------- 3 files changed, 30 insertions(+), 124 deletions(-) delete mode 100644 lib/dbservice_web/swagger_schemas/group_type.ex diff --git a/lib/dbservice/sessions/session.ex b/lib/dbservice/sessions/session.ex index e84fd564..8f4ab582 100644 --- a/lib/dbservice/sessions/session.ex +++ b/lib/dbservice/sessions/session.ex @@ -5,7 +5,7 @@ defmodule Dbservice.Sessions.Session do import Ecto.Changeset alias Dbservice.Users.User - alias Dbservice.Groups.GroupType + alias Dbservice.Groups.Group alias Dbservice.FormSchemas.FormSchema alias Dbservice.Sessions.SessionSchedule @@ -35,7 +35,7 @@ defmodule Dbservice.Sessions.Session do timestamps() many_to_many(:users, User, join_through: "user_session", on_replace: :delete) - many_to_many(:group_type, GroupType, join_through: "group_session", on_replace: :delete) + many_to_many(:group, Group, join_through: "group_session", on_replace: :delete) belongs_to(:form_schema, FormSchema) has_many(:session_schedule, SessionSchedule) end @@ -73,9 +73,9 @@ defmodule Dbservice.Sessions.Session do ]) end - def changeset_update_groups(session, group_types) do + def changeset_update_groups(session, groups) do session |> change() - |> put_assoc(:group_type, group_types) + |> put_assoc(:group, groups) end end diff --git a/lib/dbservice_web/swagger_schemas/group.ex b/lib/dbservice_web/swagger_schemas/group.ex index 353e1c5e..308efdbd 100644 --- a/lib/dbservice_web/swagger_schemas/group.ex +++ b/lib/dbservice_web/swagger_schemas/group.ex @@ -3,91 +3,48 @@ defmodule DbserviceWeb.SwaggerSchema.Group do use PhoenixSwagger - def auth_group do + def group do %{ - AuthGroup: + Group: swagger_schema do - title("AuthGroup") - description("An auth-group in the application") + title("Group") + description("A Group in application") properties do - name(:string, "Name of the auth group") - input_schema(:map, "Input schema") - locale(:string, "The configured locale for the auth-group") - locale_data(:map, "Meta data about locale settings for the auth-group") + type(:string, "The type of a group") + child_id(:integer, "The id of type") end example(%{ - name: "DelhiStudents", - input_schema: %{}, - locale: "hi", - locale_data: %{ - "hi" => %{ - "title" => "सत्र के लिए पंजीकरण करें" - }, - "en" => %{ - "title" => "Register for session" - } + id: 54, + type: "program", + child_id: %{ + donor: "YES", + group_id: 29, + id: 24, + mode: "Offline", + model: "Live Classes", + name: "Mrs. Stefanie Goldner", + product_used: "One", + start_date: "2016-11-18", + state: "UTTARAKHAND", + sub_type: "High", + target_outreach: 4743, + type: "Competitive" } }) end } end - def groupsessions do + def groups do %{ - GroupSessions: + Groups: swagger_schema do - title("Group Session") - description("Relation between group and session") - - properties do - group_type_id(:integer, "Id of a particular group") - session_id(:integer, "Id of a particular group") - end - - example(%{ - group_type_id: 1, - session_id: 1 - }) - end - } - end - - def groupusers do - %{ - GroupUsers: - swagger_schema do - title("Group User") - description("Relation between group and user") - - properties do - group_id(:integer, "Id of a particular group") - user_id(:integer, "Id of a particular group") - program_manager_id(:integer, "ID of a program manager") - program_date_of_joining(:utc_datetime, "Date of joining a program") - program_student_language(:string, "Language used in an enrolled program") - end - - example(%{ - group_id: 1, - user_id: 1, - program_manager_id: 1, - program_date_of_joining: "2020/01/06", - program_student_language: "English" - }) - end - } - end - - def auth_groups do - %{ - AuthGroups: - swagger_schema do - title("AuthGroups") - description("All the auth-groups") + title("Groups") + description("All the Groups") type(:array) - items(Schema.ref(:AuthGroup)) + items(Schema.ref(:Group)) end } end diff --git a/lib/dbservice_web/swagger_schemas/group_type.ex b/lib/dbservice_web/swagger_schemas/group_type.ex deleted file mode 100644 index ed2b238f..00000000 --- a/lib/dbservice_web/swagger_schemas/group_type.ex +++ /dev/null @@ -1,51 +0,0 @@ -defmodule DbserviceWeb.SwaggerSchema.GroupType do - @moduledoc false - - use PhoenixSwagger - - def group_type do - %{ - GroupType: - swagger_schema do - title("GroupType") - description("A Group type in application") - - properties do - type(:string, "The type of a group") - child_id(:integer, "The id of type") - end - - example(%{ - id: 54, - type: "program", - child_id: %{ - donor: "YES", - group_id: 29, - id: 24, - mode: "Offline", - model: "Live Classes", - name: "Mrs. Stefanie Goldner", - product_used: "One", - start_date: "2016-11-18", - state: "UTTARAKHAND", - sub_type: "High", - target_outreach: 4743, - type: "Competitive" - } - }) - end - } - end - - def group_types do - %{ - GroupTypes: - swagger_schema do - title("GroupTypes") - description("All the GroupTypes") - type(:array) - items(Schema.ref(:GroupType)) - end - } - end -end From f16edf36d7505b73520f28275a94d65281f5d0ad Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sun, 17 Mar 2024 17:36:34 +0530 Subject: [PATCH 07/54] renamed group-type -> group --- lib/dbservice/auth_groups.ex | 4 ++-- lib/dbservice/batches.ex | 2 +- lib/dbservice/batches/batch.ex | 2 +- lib/dbservice/groups/auth_group.ex | 2 +- lib/dbservice/programs.ex | 2 +- lib/dbservice/programs/program.ex | 2 +- lib/dbservice/sessions.ex | 10 +++++----- lib/dbservice/users.ex | 12 ++++++------ lib/dbservice/users/user.ex | 6 +++--- .../controllers/group_session_controller.ex | 2 +- .../controllers/group_user_controller.ex | 2 +- lib/dbservice_web/controllers/session_controller.ex | 6 +++--- lib/dbservice_web/controllers/user_controller.ex | 6 +++--- lib/dbservice_web/router.ex | 2 +- lib/dbservice_web/views/group_session_view.ex | 2 +- lib/dbservice_web/views/group_user_view.ex | 2 +- 16 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lib/dbservice/auth_groups.ex b/lib/dbservice/auth_groups.ex index 600f6312..afebcc1e 100644 --- a/lib/dbservice/auth_groups.ex +++ b/lib/dbservice/auth_groups.ex @@ -28,7 +28,7 @@ defmodule Dbservice.AuthGroups do ** (Ecto.NoResultsError) """ def get_auth_group!(id) do - Repo.get!(AuthGroup, id) |> Repo.preload(:group_type) + Repo.get!(AuthGroup, id) |> Repo.preload(:group) end @doc """ @@ -55,7 +55,7 @@ defmodule Dbservice.AuthGroups do def create_auth_group(attrs \\ %{}) do %AuthGroup{} |> AuthGroup.changeset(attrs) - |> Ecto.Changeset.put_assoc(:group_type, [ + |> Ecto.Changeset.put_assoc(:group, [ %Group{type: "auth_group", child_id: attrs["id"]} ]) |> Repo.insert() diff --git a/lib/dbservice/batches.ex b/lib/dbservice/batches.ex index deccca92..07a2cb9f 100644 --- a/lib/dbservice/batches.ex +++ b/lib/dbservice/batches.ex @@ -54,7 +54,7 @@ defmodule Dbservice.Batches do def create_batch(attrs \\ %{}) do %Batch{} |> Batch.changeset(attrs) - |> Ecto.Changeset.put_assoc(:group_type, [%Group{type: "batch", child_id: attrs["id"]}]) + |> Ecto.Changeset.put_assoc(:group, [%Group{type: "batch", child_id: attrs["id"]}]) |> Repo.insert() end diff --git a/lib/dbservice/batches/batch.ex b/lib/dbservice/batches/batch.ex index 72d4157c..7a0980f1 100644 --- a/lib/dbservice/batches/batch.ex +++ b/lib/dbservice/batches/batch.ex @@ -15,7 +15,7 @@ defmodule Dbservice.Batches.Batch do field :batch_id, :string field :parent_id, :integer - has_many :group_type, Group, foreign_key: :child_id, where: [type: "batch"] + has_many :group, Group, foreign_key: :child_id, where: [type: "batch"] has_many :enrollment_record, EnrollmentRecord, foreign_key: :grouping_id, diff --git a/lib/dbservice/groups/auth_group.ex b/lib/dbservice/groups/auth_group.ex index 8c8dbb11..8e315185 100644 --- a/lib/dbservice/groups/auth_group.ex +++ b/lib/dbservice/groups/auth_group.ex @@ -19,7 +19,7 @@ defmodule Dbservice.Groups.AuthGroup do has_many :enrollment_record, EnrollmentRecord, foreign_key: :group_id, - where: [group_type: "auth-group"] + where: [group: "auth-group"] timestamps() end diff --git a/lib/dbservice/programs.ex b/lib/dbservice/programs.ex index 9dcbd257..84c6a319 100644 --- a/lib/dbservice/programs.ex +++ b/lib/dbservice/programs.ex @@ -41,7 +41,7 @@ defmodule Dbservice.Programs do def create_program(attrs \\ %{}) do %Program{} |> Program.changeset(attrs) - |> Ecto.Changeset.put_assoc(:group_type, [%Group{type: "program", child_id: attrs["id"]}]) + |> Ecto.Changeset.put_assoc(:group, [%Group{type: "program", child_id: attrs["id"]}]) |> Repo.insert() end diff --git a/lib/dbservice/programs/program.ex b/lib/dbservice/programs/program.ex index b60b801b..2108c622 100644 --- a/lib/dbservice/programs/program.ex +++ b/lib/dbservice/programs/program.ex @@ -22,7 +22,7 @@ defmodule Dbservice.Programs.Program do field :model, :string belongs_to :auth_group, AuthGroup - has_many :group_type, Group, foreign_key: :child_id, where: [type: "program"] + has_many :group, Group, foreign_key: :child_id, where: [type: "program"] many_to_many :batch, Batch, join_through: "batch_program", on_replace: :delete has_many :enrollment_record, EnrollmentRecord, diff --git a/lib/dbservice/sessions.ex b/lib/dbservice/sessions.ex index 386b3844..b4968854 100644 --- a/lib/dbservice/sessions.ex +++ b/lib/dbservice/sessions.ex @@ -118,17 +118,17 @@ defmodule Dbservice.Sessions do @doc """ Updates the groups mapped to a session. """ - def update_group_types(session_id, group_type_ids) when is_list(group_type_ids) do + def update_groups(session_id, group_ids) when is_list(group_ids) do session = get_session!(session_id) - group_types = + groups = Dbservice.Groups.Group - |> where([group_type], group_type.id in ^group_type_ids) + |> where([group], group.id in ^group_ids) |> Repo.all() session - |> Repo.preload(:group_type) - |> Session.changeset_update_groups(group_types) + |> Repo.preload(:group) + |> Session.changeset_update_groups(groups) |> Repo.update() end diff --git a/lib/dbservice/users.ex b/lib/dbservice/users.ex index 80786e9f..7db47955 100644 --- a/lib/dbservice/users.ex +++ b/lib/dbservice/users.ex @@ -116,19 +116,19 @@ defmodule Dbservice.Users do end @doc """ - Updates the group_type mapped to a user. + Updates the group mapped to a user. """ - def update_group_type(user_id, group_type_ids) when is_list(group_type_ids) do + def update_group(user_id, group_ids) when is_list(group_ids) do user = get_user!(user_id) - group_types = + groups = Dbservice.Groups.Group - |> where([group_type], group_type.id in ^group_type_ids) + |> where([group], group.id in ^group_ids) |> Repo.all() user - |> Repo.preload(:group_type) - |> User.changeset_update_group_types(group_types) + |> Repo.preload(:group) + |> User.changeset_update_groups(groups) |> Repo.update() end diff --git a/lib/dbservice/users/user.ex b/lib/dbservice/users/user.ex index 2782c802..1d8f53b0 100644 --- a/lib/dbservice/users/user.ex +++ b/lib/dbservice/users/user.ex @@ -32,7 +32,7 @@ defmodule Dbservice.Users.User do many_to_many(:sessions, SessionOccurence, join_through: "user_session", on_replace: :delete) has_one(:teacher, Teacher) has_one(:student, Student) - many_to_many(:group_type, Group, join_through: "group_user", on_replace: :delete) + many_to_many(:group, Group, join_through: "group_user", on_replace: :delete) end @doc false @@ -59,10 +59,10 @@ defmodule Dbservice.Users.User do |> validate_date_of_birth end - def changeset_update_group_types(user, group_types) do + def changeset_update_groups(user, groups) do user |> change() - |> put_assoc(:group_type, group_types) + |> put_assoc(:group, groups) end defp validate_date_of_birth(changeset) do diff --git a/lib/dbservice_web/controllers/group_session_controller.ex b/lib/dbservice_web/controllers/group_session_controller.ex index 61a09441..75e7ed84 100644 --- a/lib/dbservice_web/controllers/group_session_controller.ex +++ b/lib/dbservice_web/controllers/group_session_controller.ex @@ -14,7 +14,7 @@ defmodule DbserviceWeb.GroupSessionController do get("/api/group-session") parameters do - params(:query, :integer, "The id the group type", required: false, name: "group_type_id") + params(:query, :integer, "The id the group type", required: false, name: "group_id") params(:query, :integer, "The id the session", required: false, diff --git a/lib/dbservice_web/controllers/group_user_controller.ex b/lib/dbservice_web/controllers/group_user_controller.ex index 56abd081..92280840 100644 --- a/lib/dbservice_web/controllers/group_user_controller.ex +++ b/lib/dbservice_web/controllers/group_user_controller.ex @@ -14,7 +14,7 @@ defmodule DbserviceWeb.GroupUserController do get("/api/group-user") parameters do - params(:query, :integer, "The id the group type", required: false, name: "group_type_id") + params(:query, :integer, "The id the group type", required: false, name: "group_id") params(:query, :integer, "The id the user", required: false, diff --git a/lib/dbservice_web/controllers/session_controller.ex b/lib/dbservice_web/controllers/session_controller.ex index ca541264..6521784c 100644 --- a/lib/dbservice_web/controllers/session_controller.ex +++ b/lib/dbservice_web/controllers/session_controller.ex @@ -175,9 +175,9 @@ defmodule DbserviceWeb.SessionController do response(200, "OK", Schema.ref(:Session)) end - def update_groups(conn, %{"id" => session_id, "group_type_ids" => group_type_ids}) - when is_list(group_type_ids) do - with {:ok, %Session{} = session} <- Sessions.update_group_types(session_id, group_type_ids) do + def update_groups(conn, %{"id" => session_id, "group_ids" => group_ids}) + when is_list(group_ids) do + with {:ok, %Session{} = session} <- Sessions.update_groups(session_id, group_ids) do render(conn, "show.json", session: session) end end diff --git a/lib/dbservice_web/controllers/user_controller.ex b/lib/dbservice_web/controllers/user_controller.ex index f40ee43c..1be3b772 100644 --- a/lib/dbservice_web/controllers/user_controller.ex +++ b/lib/dbservice_web/controllers/user_controller.ex @@ -147,9 +147,9 @@ defmodule DbserviceWeb.UserController do response(200, "OK", Schema.ref(:User)) end - def update_group_type(conn, %{"id" => user_id, "group_type_ids" => group_type_ids}) - when is_list(group_type_ids) do - with {:ok, %User{} = user} <- Users.update_group_type(user_id, group_type_ids) do + def update_group(conn, %{"id" => user_id, "group_ids" => group_ids}) + when is_list(group_ids) do + with {:ok, %User{} = user} <- Users.update_group(user_id, group_ids) do render(conn, "show.json", user: user) end end diff --git a/lib/dbservice_web/router.ex b/lib/dbservice_web/router.ex index ac895925..39c42be2 100644 --- a/lib/dbservice_web/router.ex +++ b/lib/dbservice_web/router.ex @@ -16,7 +16,7 @@ defmodule DbserviceWeb.Router do post("/group/:id/update-sessions", GroupController, :update_sessions) resources("/user", UserController, only: [:index, :create, :update, :show]) - post("/user/:id/update-groups", UserController, :update_group_type) + post("/user/:id/update-groups", UserController, :update_group) resources("/student", StudentController, except: [:new, :edit]) resources("/teacher", TeacherController, except: [:new, :edit]) resources("/school", SchoolController, except: [:new, :edit]) diff --git a/lib/dbservice_web/views/group_session_view.ex b/lib/dbservice_web/views/group_session_view.ex index e2b31b2c..3dd01c46 100644 --- a/lib/dbservice_web/views/group_session_view.ex +++ b/lib/dbservice_web/views/group_session_view.ex @@ -13,7 +13,7 @@ defmodule DbserviceWeb.GroupSessionView do def render("group_session.json", %{group_session: group_session}) do %{ id: group_session.id, - group_type_id: group_session.group_type_id, + group_id: group_session.group_id, session_id: group_session.session_id } end diff --git a/lib/dbservice_web/views/group_user_view.ex b/lib/dbservice_web/views/group_user_view.ex index 1383adb6..884b3eb7 100644 --- a/lib/dbservice_web/views/group_user_view.ex +++ b/lib/dbservice_web/views/group_user_view.ex @@ -15,7 +15,7 @@ defmodule DbserviceWeb.GroupUserView do id: group_user.id, program_date_of_joining: group_user.program_date_of_joining, program_student_language: group_user.program_student_language, - group_type_id: group_user.group_type_id, + group_id: group_user.group_id, user_id: group_user.user_id, program_manager_id: group_user.program_manager_id } From 1cd2cbe2b8b1d79e668a509bb59939a834b8ba3d Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sun, 17 Mar 2024 22:46:57 +0530 Subject: [PATCH 08/54] schema changes --- lib/dbservice/batches/batch.ex | 17 ++-- lib/dbservice/batches/batch_program.ex | 25 ------ .../enrollment_record/enrollment_record.ex | 42 +++++----- lib/dbservice/exams/exam.ex | 6 +- lib/dbservice/exams/student_exam_record.ex | 10 ++- lib/dbservice/groups/group_user.ex | 9 +- lib/dbservice/products.ex | 83 +++++++++++++++++++ lib/dbservice/products/product.ex | 37 +++++++++ lib/dbservice/programs/program.ex | 17 +--- lib/dbservice/schools/school.ex | 8 +- lib/dbservice/sessions/session.ex | 15 ++-- lib/dbservice/sessions/user_session.ex | 19 ++--- lib/dbservice/users/teacher.ex | 15 ++-- lib/dbservice/users/user.ex | 2 - 14 files changed, 195 insertions(+), 110 deletions(-) delete mode 100644 lib/dbservice/batches/batch_program.ex create mode 100644 lib/dbservice/products.ex create mode 100644 lib/dbservice/products/product.ex diff --git a/lib/dbservice/batches/batch.ex b/lib/dbservice/batches/batch.ex index 7a0980f1..97996dab 100644 --- a/lib/dbservice/batches/batch.ex +++ b/lib/dbservice/batches/batch.ex @@ -13,15 +13,17 @@ defmodule Dbservice.Batches.Batch do field :name, :string field :contact_hours_per_week, :integer field :batch_id, :string - field :parent_id, :integer + field :parent_id, :integer, + field :start_date, :date, + field :end_date, :date - has_many :group, Group, foreign_key: :child_id, where: [type: "batch"] + belongs_to :program, Program + has_many :group, Group, foreign_key: :child_id, where: [type: "batch"] has_many :enrollment_record, EnrollmentRecord, - foreign_key: :grouping_id, - where: [grouping_type: "batch"] + foreign_key: :group_id, + where: [group_type: "batch"] - many_to_many :program, Program, join_through: "batch_program", on_replace: :delete has_one :session_schedule, SessionSchedule timestamps() @@ -34,7 +36,10 @@ defmodule Dbservice.Batches.Batch do :name, :contact_hours_per_week, :batch_id, - :parent_id + :parent_id, + :start_date, + :end_date, + :program_id ]) |> validate_required([:name]) end diff --git a/lib/dbservice/batches/batch_program.ex b/lib/dbservice/batches/batch_program.ex deleted file mode 100644 index 6f7067ee..00000000 --- a/lib/dbservice/batches/batch_program.ex +++ /dev/null @@ -1,25 +0,0 @@ -defmodule Dbservice.Batches.BatchProgram do - @moduledoc false - - use Ecto.Schema - alias Dbservice.Batches.Batch - alias Dbservice.Programs.Program - import Ecto.Changeset - - schema "batch_program" do - belongs_to :batch, Batch - belongs_to :program, Program - - timestamps() - end - - @doc false - def changeset(batch_program, attrs) do - batch_program - |> cast(attrs, [ - :batch_id, - :program_id - ]) - |> validate_required([:batch_id, :program_id]) - end -end diff --git a/lib/dbservice/enrollment_record/enrollment_record.ex b/lib/dbservice/enrollment_record/enrollment_record.ex index 5764afbc..a4eb30e6 100644 --- a/lib/dbservice/enrollment_record/enrollment_record.ex +++ b/lib/dbservice/enrollment_record/enrollment_record.ex @@ -5,18 +5,17 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do import Ecto.Changeset import Dbservice.Utils.Util - alias Dbservice.Users.Student + alias Dbservice.Users.User schema "enrollment_record" do - field(:academic_year, :string) - field(:grade, :string) - field(:is_current, :boolean, default: false) - field(:board_medium, :string) - field(:date_of_enrollment, :date) - field(:grouping_id, :integer) - field(:grouping_type, :string) + field :start_date, :date + field :end_date, :date + field :is_current, :boolean, default :true + field :academic_year, :string + field :group_id, :integer + field :group_type, :string - belongs_to(:student, Student) + belongs_to(:user, User) timestamps() end @@ -25,22 +24,23 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do def changeset(enrollment_record, attrs) do enrollment_record |> cast(attrs, [ - :student_id, - :grade, - :academic_year, + :user_id, + :start_date, + :end_date, :is_current, - :board_medium, - :date_of_enrollment, - :grouping_id, - :grouping_type + :academic_year, + :group_id, + :group_type ]) - |> validate_required([:student_id, :grouping_id, :grouping_type, :date_of_enrollment]) - |> validate_date_of_enrollment + |> validate_required([:user_id, :group_id, :group_type, :start_date, :academic_year]) + |> validate_dates_of_enrollment end - defp validate_date_of_enrollment(changeset) do - if get_field(changeset, :date_of_enrollment) != nil do - invalidate_future_date(changeset, :date_of_enrollment) + defp validate_dates_of_enrollment(changeset) do + if get_field(changeset, :start_end) != nil do + invalidate_future_date(changeset, :start_end) + else if get_field(changeset, :end_date) != nil do + invalidate_future_date(changeset, :end_date) else changeset end diff --git a/lib/dbservice/exams/exam.ex b/lib/dbservice/exams/exam.ex index 86f13c3c..e081d67f 100644 --- a/lib/dbservice/exams/exam.ex +++ b/lib/dbservice/exams/exam.ex @@ -7,7 +7,8 @@ defmodule Dbservice.Exams.Exam do schema "exam" do field :name, :string field :registration_deadline, :utc_datetime - field :date, :utc_datetime + field :date, :utc_datetime, + field :cutoff, :map timestamps() end @@ -18,7 +19,8 @@ defmodule Dbservice.Exams.Exam do |> cast(attrs, [ :name, :registration_deadline, - :date + :date, + :cutoff ]) |> validate_required([:name]) end diff --git a/lib/dbservice/exams/student_exam_record.ex b/lib/dbservice/exams/student_exam_record.ex index 3682787c..cc2ae087 100644 --- a/lib/dbservice/exams/student_exam_record.ex +++ b/lib/dbservice/exams/student_exam_record.ex @@ -12,7 +12,9 @@ defmodule Dbservice.Exams.StudentExamRecord do field :application_password, :string field :date, :utc_datetime field :score, :float - field :rank, :integer + field :percentile, :float + field :all_india_rank, :integer + field :category_rank, :integer belongs_to(:exam, Exam) belongs_to(:student, Student) @@ -30,8 +32,10 @@ defmodule Dbservice.Exams.StudentExamRecord do :application_password, :date, :score, - :rank + :percentile, + :all_india_rank, + :category_rank ]) - |> validate_required([:student_id, :exam_id]) + |> validate_required([:student_id, :exam_id, :date]) end end diff --git a/lib/dbservice/groups/group_user.ex b/lib/dbservice/groups/group_user.ex index 01f6e3ba..5d680eb2 100644 --- a/lib/dbservice/groups/group_user.ex +++ b/lib/dbservice/groups/group_user.ex @@ -7,11 +7,9 @@ defmodule Dbservice.Groups.GroupUser do import Ecto.Changeset schema "group_user" do - field :program_date_of_joining, :utc_datetime - field :program_student_language, :string + belongs_to :group, Group belongs_to :user, User - belongs_to :program_manager, User timestamps() end @@ -21,10 +19,7 @@ defmodule Dbservice.Groups.GroupUser do group_user |> cast(attrs, [ :group_id, - :user_id, - :program_manager_id, - :program_date_of_joining, - :program_student_language + :user_id ]) |> validate_required([:group_id, :user_id]) end diff --git a/lib/dbservice/products.ex b/lib/dbservice/products.ex new file mode 100644 index 00000000..91bb35ca --- /dev/null +++ b/lib/dbservice/products.ex @@ -0,0 +1,83 @@ +defmodule Dbservice.Products do + @moduledoc """ + The Products context. + """ + + import Ecto.Query, warn: false + alias Dbservice.Repo + + alias Dbservice.Products.Product + alias Dbservice.Groups.Group + + @doc """ + Returns the list of products. + ## Examples + iex> list_product() + [%Product{}, ...] + """ + def list_product do + Repo.all(Product) + end + + @doc """ + Gets a single product. + Raises `Ecto.NoResultsError` if the Product does not exist. + ## Examples + iex> get_product!(123) + %Product{} + iex> get_product!(456) + ** (Ecto.NoResultsError) + """ + def get_product!(id), do: Repo.get!(Product, id) + + @doc """ + Creates a product. + ## Examples + iex> create_product(%{field: value}) + {:ok, %Product{}} + iex> create_product(%{field: bad_value}) + {:error, %Ecto.Changeset{}} + """ + def create_product(attrs \\ %{}) do + %Product{} + |> Product.changeset(attrs) + |> Ecto.Changeset.put_assoc(:group, [%Group{type: "product", child_id: attrs["id"]}]) + |> Repo.insert() + end + + @doc """ + Updates a product. + ## Examples + iex> update_product(product, %{field: new_value}) + {:ok, %Product{}} + iex> update_product(product, %{field: bad_value}) + {:error, %Ecto.Changeset{}} + """ + def update_product(%Product{} = product, attrs) do + product + |> Product.changeset(attrs) + |> Repo.update() + end + + @doc """ + Deletes a product. + ## Examples + iex> delete_product(product) + {:ok, %Product{}} + iex> delete_product(product) + {:error, %Ecto.Changeset{}} + """ + def delete_product(%Product{} = product) do + Repo.delete(product) + end + + @doc """ + Returns an `%Ecto.Changeset{}` for tracking group changes. + ## Examples + iex> change_product(product) + %Ecto.Changeset{data: %Product{}} + """ + def change_product(%Product{} = product, attrs \\ %{}) do + Product.changeset(product, attrs) + end +end diff --git a/lib/dbservice/products/product.ex b/lib/dbservice/products/product.ex new file mode 100644 index 00000000..27aba929 --- /dev/null +++ b/lib/dbservice/products/product.ex @@ -0,0 +1,37 @@ +defmodule Dbservice.Products.Product do + @moduledoc false + + use Ecto.Schema + import Ecto.Changeset + + schema "product" do + field :name, :string + field :mode, :string + field :model, :string + field :tech_modules, :string + field :type, :string + field :led_by, :string + field :goal, :string + field :code, :string + + has_many :group, Group, foreign_key: :child_id, where: [type: "product"] + + timestamps() + end + + @doc false + def changeset(product, attrs) do + product + |> cast(attrs, [ + :name, + :mode, + :model, + :tech_modules, + :type, + :led_by, + :goal, + :code + ]) + |> validate_required([:name]) + end +end diff --git a/lib/dbservice/programs/program.ex b/lib/dbservice/programs/program.ex index 2108c622..9e2588e1 100644 --- a/lib/dbservice/programs/program.ex +++ b/lib/dbservice/programs/program.ex @@ -5,25 +5,19 @@ defmodule Dbservice.Programs.Program do import Ecto.Changeset alias Dbservice.Groups.AuthGroup - alias Dbservice.Batches.Batch + alias Dbservice.Products.Product alias Dbservice.Groups.Group alias Dbservice.EnrollmentRecords.EnrollmentRecord schema "program" do field :name, :string - field :type, :string - field :sub_type, :string - field :mode, :string - field :start_date, :date field :target_outreach, :integer - field :product_used, :string field :donor, :string field :state, :string - field :model, :string belongs_to :auth_group, AuthGroup + belongs_to :product, Product has_many :group, Group, foreign_key: :child_id, where: [type: "program"] - many_to_many :batch, Batch, join_through: "batch_program", on_replace: :delete has_many :enrollment_record, EnrollmentRecord, foreign_key: :grouping_id, @@ -37,15 +31,10 @@ defmodule Dbservice.Programs.Program do program |> cast(attrs, [ :name, - :type, - :sub_type, - :mode, - :start_date, :target_outreach, - :product_used, :donor, :state, - :model, + :product_id, :auth_group_id ]) |> validate_required([:name]) diff --git a/lib/dbservice/schools/school.ex b/lib/dbservice/schools/school.ex index 555e9e19..507b2367 100644 --- a/lib/dbservice/schools/school.ex +++ b/lib/dbservice/schools/school.ex @@ -10,8 +10,8 @@ defmodule Dbservice.Schools.School do field :code, :string field :name, :string field :udise_code, :string - field :type, :string - field :category, :string + field :gender_type, :string + field :af_school_category, :string field :region, :string field :state_code, :string field :state, :string @@ -36,8 +36,8 @@ defmodule Dbservice.Schools.School do :code, :name, :udise_code, - :type, - :category, + :gender_type, + :af_school_categorycategory, :region, :state_code, :state, diff --git a/lib/dbservice/sessions/session.ex b/lib/dbservice/sessions/session.ex index 8f4ab582..70ba8531 100644 --- a/lib/dbservice/sessions/session.ex +++ b/lib/dbservice/sessions/session.ex @@ -26,11 +26,12 @@ defmodule Dbservice.Sessions.Session do field(:platform_id, :string) field(:type, :string) field(:auth_type, :string) - field(:activate_signup, :boolean) + field(:signup_form, :boolean) + field(:signup_form_id, :integer) field(:id_generation, :boolean) field(:redirection, :boolean) - field(:pop_up_form, :boolean) - field(:number_of_fields_in_pop_form, :integer) + field(:popup_form, :boolean) + field(:popup_form_id, :integer) timestamps() @@ -60,15 +61,17 @@ defmodule Dbservice.Sessions.Session do :platform_id, :type, :auth_type, - :activate_signup, + :signup_form, :id_generation, :redirection, :pop_up_form, - :number_of_fields_in_pop_form, - :form_schema_id + :popup_form_id + :signup_form_id ]) |> validate_required([ :name, + :session_id, + :start_time, :platform ]) end diff --git a/lib/dbservice/sessions/user_session.ex b/lib/dbservice/sessions/user_session.ex index 647ebcf0..203bd21c 100644 --- a/lib/dbservice/sessions/user_session.ex +++ b/lib/dbservice/sessions/user_session.ex @@ -6,37 +6,36 @@ defmodule Dbservice.Sessions.UserSession do import Dbservice.Utils.Util alias Dbservice.Sessions.SessionOccurence + alias Dbservice.Users.User schema "user_session" do - field :end_time, :utc_datetime - field :start_time, :utc_datetime + field :timestamp, :utc_datetime field :data, :map - field :is_user_valid, :boolean - field :user_id, :string + field :type, :string timestamps() belongs_to :session_occurrence, SessionOccurence + belongs_to :user, User end @doc false def changeset(user_session, attrs) do user_session |> cast(attrs, [ - :start_time, - :end_time, + :timestamp, + :type, :data, :session_occurrence_id, - :is_user_valid, :user_id ]) - |> validate_required([:start_time]) + |> validate_required([:user_id, :session_occurrence_id, :timestamp, :type]) |> validate_start_end_date_time end defp validate_start_end_date_time(changeset) do - if get_field(changeset, :start_time, :end_time) do - validate_start_end_datetime(changeset, :start_time, :end_time) + if get_field(changeset, :timestamp) do + validate_start_end_datetime(changeset, :timestamp) else changeset end diff --git a/lib/dbservice/users/teacher.ex b/lib/dbservice/users/teacher.ex index f6c30c23..ee9d37b5 100644 --- a/lib/dbservice/users/teacher.ex +++ b/lib/dbservice/users/teacher.ex @@ -5,16 +5,15 @@ defmodule Dbservice.Users.Teacher do import Ecto.Changeset alias Dbservice.Users.User - alias Dbservice.Schools.School + alias Dbservice.EnrollmentRecords.EnrollmentRecord schema "teacher" do field :designation, :string - field :grade, :string - field :subject, :string field :teacher_id, :string + belongs_to :user, User - belongs_to :school, School - belongs_to :program_manager, User + + has_many(:enrollment_record, EnrollmentRecord) timestamps() end @@ -24,13 +23,9 @@ defmodule Dbservice.Users.Teacher do teacher |> cast(attrs, [ :user_id, - :school_id, - :program_manager_id, :designation, - :subject, - :grade, :teacher_id ]) - |> validate_required([:user_id]) + |> validate_required([:user_id, :teacher_id]) end end diff --git a/lib/dbservice/users/user.ex b/lib/dbservice/users/user.ex index 1d8f53b0..162702e1 100644 --- a/lib/dbservice/users/user.ex +++ b/lib/dbservice/users/user.ex @@ -12,7 +12,6 @@ defmodule Dbservice.Users.User do schema "user" do field(:first_name, :string) - field(:middle_name, :string) field(:last_name, :string) field(:email, :string) field(:phone, :string) @@ -40,7 +39,6 @@ defmodule Dbservice.Users.User do user |> cast(attrs, [ :first_name, - :middle_name, :last_name, :email, :phone, From c92d3b511b280d659abba2039edff3a8b97172c9 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sun, 17 Mar 2024 22:47:54 +0530 Subject: [PATCH 09/54] schema changes --- lib/dbservice/exams/exam.ex | 2 +- lib/dbservice/groups/group_user.ex | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/dbservice/exams/exam.ex b/lib/dbservice/exams/exam.ex index e081d67f..ed6b89f0 100644 --- a/lib/dbservice/exams/exam.ex +++ b/lib/dbservice/exams/exam.ex @@ -7,7 +7,7 @@ defmodule Dbservice.Exams.Exam do schema "exam" do field :name, :string field :registration_deadline, :utc_datetime - field :date, :utc_datetime, + field :date, :utc_datetime field :cutoff, :map timestamps() diff --git a/lib/dbservice/groups/group_user.ex b/lib/dbservice/groups/group_user.ex index 5d680eb2..5506ea85 100644 --- a/lib/dbservice/groups/group_user.ex +++ b/lib/dbservice/groups/group_user.ex @@ -7,7 +7,6 @@ defmodule Dbservice.Groups.GroupUser do import Ecto.Changeset schema "group_user" do - belongs_to :group, Group belongs_to :user, User From 3014165f073387803a50c12feda285525c9d91da Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Sun, 17 Mar 2024 22:49:06 +0530 Subject: [PATCH 10/54] schema changes --- lib/dbservice/batches/batch.ex | 5 +++-- lib/dbservice/enrollment_record/enrollment_record.ex | 8 +++----- lib/dbservice/sessions/session.ex | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/dbservice/batches/batch.ex b/lib/dbservice/batches/batch.ex index 97996dab..ecb4dfc2 100644 --- a/lib/dbservice/batches/batch.ex +++ b/lib/dbservice/batches/batch.ex @@ -13,13 +13,14 @@ defmodule Dbservice.Batches.Batch do field :name, :string field :contact_hours_per_week, :integer field :batch_id, :string - field :parent_id, :integer, - field :start_date, :date, + field :parent_id, :integer + field :start_date, :date field :end_date, :date belongs_to :program, Program has_many :group, Group, foreign_key: :child_id, where: [type: "batch"] + has_many :enrollment_record, EnrollmentRecord, foreign_key: :group_id, where: [group_type: "batch"] diff --git a/lib/dbservice/enrollment_record/enrollment_record.ex b/lib/dbservice/enrollment_record/enrollment_record.ex index a4eb30e6..51f8498a 100644 --- a/lib/dbservice/enrollment_record/enrollment_record.ex +++ b/lib/dbservice/enrollment_record/enrollment_record.ex @@ -10,7 +10,7 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do schema "enrollment_record" do field :start_date, :date field :end_date, :date - field :is_current, :boolean, default :true + field :is_current, :boolean, default(true) field :academic_year, :string field :group_id, :integer field :group_type, :string @@ -37,10 +37,8 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do end defp validate_dates_of_enrollment(changeset) do - if get_field(changeset, :start_end) != nil do - invalidate_future_date(changeset, :start_end) - else if get_field(changeset, :end_date) != nil do - invalidate_future_date(changeset, :end_date) + if get_field(changeset, :start_end, :end_date) != nil do + invalidate_future_date(changeset, :start_end, :end_date) else changeset end diff --git a/lib/dbservice/sessions/session.ex b/lib/dbservice/sessions/session.ex index 70ba8531..3406b2ab 100644 --- a/lib/dbservice/sessions/session.ex +++ b/lib/dbservice/sessions/session.ex @@ -65,7 +65,7 @@ defmodule Dbservice.Sessions.Session do :id_generation, :redirection, :pop_up_form, - :popup_form_id + :popup_form_id, :signup_form_id ]) |> validate_required([ From f479daabf78471fc9edc0052f7607a27d4f9fca9 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Mon, 18 Mar 2024 15:49:05 +0530 Subject: [PATCH 11/54] format error --- lib/dbservice_web/controllers/group_controller.ex | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/dbservice_web/controllers/group_controller.ex b/lib/dbservice_web/controllers/group_controller.ex index 1730c156..966868fe 100644 --- a/lib/dbservice_web/controllers/group_controller.ex +++ b/lib/dbservice_web/controllers/group_controller.ex @@ -141,9 +141,7 @@ defmodule DbserviceWeb.GroupController do parameters do groupId(:path, :integer, "The id of the group record", required: true) - body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", - required: true - ) + body(:body, Schema.ref(:UserIds), "List of user ids to update for the group",required: true) end response(200, "OK", Schema.ref(:GroupUsers)) From ea18f7e2817529be3443b1ab35e55250a2a4643d Mon Sep 17 00:00:00 2001 From: Bahugunajii Date: Mon, 18 Mar 2024 15:53:41 +0530 Subject: [PATCH 12/54] fixed formatting --- lib/dbservice_web/controllers/group_controller.ex | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/dbservice_web/controllers/group_controller.ex b/lib/dbservice_web/controllers/group_controller.ex index 1730c156..49ba7c42 100644 --- a/lib/dbservice_web/controllers/group_controller.ex +++ b/lib/dbservice_web/controllers/group_controller.ex @@ -141,9 +141,7 @@ defmodule DbserviceWeb.GroupController do parameters do groupId(:path, :integer, "The id of the group record", required: true) - body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", - required: true - ) + body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", required: true) end response(200, "OK", Schema.ref(:GroupUsers)) From 0dc30d372aa168c5f6adb70ce450f80c5c0aabdc Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Mon, 18 Mar 2024 15:56:13 +0530 Subject: [PATCH 13/54] formatting error --- lib/dbservice/auth_groups.ex | 2 +- lib/dbservice_web/controllers/group_controller.ex | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/dbservice/auth_groups.ex b/lib/dbservice/auth_groups.ex index afebcc1e..1258186b 100644 --- a/lib/dbservice/auth_groups.ex +++ b/lib/dbservice/auth_groups.ex @@ -56,7 +56,7 @@ defmodule Dbservice.AuthGroups do %AuthGroup{} |> AuthGroup.changeset(attrs) |> Ecto.Changeset.put_assoc(:group, [ - %Group{type: "auth_group", child_id: attrs["id"]} + %AuthGroup{type: "auth_group", child_id: attrs["id"]} ]) |> Repo.insert() end diff --git a/lib/dbservice_web/controllers/group_controller.ex b/lib/dbservice_web/controllers/group_controller.ex index 966868fe..014b91ca 100644 --- a/lib/dbservice_web/controllers/group_controller.ex +++ b/lib/dbservice_web/controllers/group_controller.ex @@ -11,7 +11,6 @@ defmodule DbserviceWeb.GroupController do use PhoenixSwagger alias DbserviceWeb.SwaggerSchema.Group, as: SwaggerSchemaGroup - alias DbserviceWeb.SwaggerSchema.AuthGroup, as: SwaggerSchemaAuthGroup alias DbserviceWeb.SwaggerSchema.Common, as: SwaggerSchemaCommon def swagger_definitions do @@ -141,7 +140,9 @@ defmodule DbserviceWeb.GroupController do parameters do groupId(:path, :integer, "The id of the group record", required: true) - body(:body, Schema.ref(:UserIds), "List of user ids to update for the group",required: true) + body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", + required: true + ) end response(200, "OK", Schema.ref(:GroupUsers)) From da71a86c787f0a70ec197d054fa056a29ccaafb0 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Mon, 18 Mar 2024 15:59:03 +0530 Subject: [PATCH 14/54] added alias --- lib/dbservice/auth_groups.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/dbservice/auth_groups.ex b/lib/dbservice/auth_groups.ex index 1258186b..5f380c3e 100644 --- a/lib/dbservice/auth_groups.ex +++ b/lib/dbservice/auth_groups.ex @@ -7,6 +7,7 @@ defmodule Dbservice.AuthGroups do alias Dbservice.Repo alias Dbservice.Groups.AuthGroup + alias Dbservice.Groups.Group @doc """ Returns the list of auth groups. @@ -56,7 +57,7 @@ defmodule Dbservice.AuthGroups do %AuthGroup{} |> AuthGroup.changeset(attrs) |> Ecto.Changeset.put_assoc(:group, [ - %AuthGroup{type: "auth_group", child_id: attrs["id"]} + %Group{type: "auth_group", child_id: attrs["id"]} ]) |> Repo.insert() end From 8d7382d2e103fa7dc95424ae952f4dc563a10c2c Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Mon, 18 Mar 2024 21:22:54 +0530 Subject: [PATCH 15/54] check fail --- lib/dbservice/auth_groups.ex | 1 + lib/dbservice_web/controllers/auth_group_controller.ex | 2 +- lib/dbservice_web/controllers/group_session_controller.ex | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/dbservice/auth_groups.ex b/lib/dbservice/auth_groups.ex index afebcc1e..5f380c3e 100644 --- a/lib/dbservice/auth_groups.ex +++ b/lib/dbservice/auth_groups.ex @@ -7,6 +7,7 @@ defmodule Dbservice.AuthGroups do alias Dbservice.Repo alias Dbservice.Groups.AuthGroup + alias Dbservice.Groups.Group @doc """ Returns the list of auth groups. diff --git a/lib/dbservice_web/controllers/auth_group_controller.ex b/lib/dbservice_web/controllers/auth_group_controller.ex index 0f1199a7..8fea43fa 100644 --- a/lib/dbservice_web/controllers/auth_group_controller.ex +++ b/lib/dbservice_web/controllers/auth_group_controller.ex @@ -63,7 +63,7 @@ defmodule DbserviceWeb.AuthGroupController do end def create(conn, params) do - case AuthGroup.get_auth_group_by_name(params["name"]) do + case AuthGroups.get_auth_group_by_name(params["name"]) do nil -> create_new_auth_group(conn, params) diff --git a/lib/dbservice_web/controllers/group_session_controller.ex b/lib/dbservice_web/controllers/group_session_controller.ex index 75e7ed84..60b1444a 100644 --- a/lib/dbservice_web/controllers/group_session_controller.ex +++ b/lib/dbservice_web/controllers/group_session_controller.ex @@ -14,7 +14,7 @@ defmodule DbserviceWeb.GroupSessionController do get("/api/group-session") parameters do - params(:query, :integer, "The id the group type", required: false, name: "group_id") + params(:query, :integer, "The id the group", required: false, name: "group_id") params(:query, :integer, "The id the session", required: false, From 6d518918c9038d6507816d245693e8057ab23f28 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Mon, 18 Mar 2024 21:39:24 +0530 Subject: [PATCH 16/54] migration --- .../enrollment_record/enrollment_record.ex | 2 +- .../swagger_schemas/auth_group.ex | 94 +++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 lib/dbservice_web/swagger_schemas/auth_group.ex diff --git a/lib/dbservice/enrollment_record/enrollment_record.ex b/lib/dbservice/enrollment_record/enrollment_record.ex index 51f8498a..f7a628fb 100644 --- a/lib/dbservice/enrollment_record/enrollment_record.ex +++ b/lib/dbservice/enrollment_record/enrollment_record.ex @@ -10,7 +10,7 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do schema "enrollment_record" do field :start_date, :date field :end_date, :date - field :is_current, :boolean, default(true) + field :is_current, :boolean, default: true field :academic_year, :string field :group_id, :integer field :group_type, :string diff --git a/lib/dbservice_web/swagger_schemas/auth_group.ex b/lib/dbservice_web/swagger_schemas/auth_group.ex new file mode 100644 index 00000000..f3e2f063 --- /dev/null +++ b/lib/dbservice_web/swagger_schemas/auth_group.ex @@ -0,0 +1,94 @@ +defmodule DbserviceWeb.SwaggerSchema.AuthGroup do + @moduledoc false + + use PhoenixSwagger + + def auth_group do + %{ + AuthGroup: + swagger_schema do + title("AuthGroup") + description("An auth-group in the application") + + properties do + name(:string, "Name of the auth group") + input_schema(:map, "Input schema") + locale(:string, "The configured locale for the auth-group") + locale_data(:map, "Meta data about locale settings for the auth-group") + end + + example(%{ + name: "DelhiStudents", + input_schema: %{}, + locale: "hi", + locale_data: %{ + "hi" => %{ + "title" => "सत्र के लिए पंजीकरण करें" + }, + "en" => %{ + "title" => "Register for session" + } + } + }) + end + } + end + + def groupsessions do + %{ + GroupSessions: + swagger_schema do + title("Group Session") + description("Relation between group and session") + + properties do + group_id(:integer, "Id of a particular group") + session_id(:integer, "Id of a particular group") + end + + example(%{ + group_id: 1, + session_id: 1 + }) + end + } + end + + def groupusers do + %{ + GroupUsers: + swagger_schema do + title("Group User") + description("Relation between group and user") + + properties do + group_id(:integer, "Id of a particular group") + user_id(:integer, "Id of a particular group") + program_manager_id(:integer, "ID of a program manager") + program_date_of_joining(:utc_datetime, "Date of joining a program") + program_student_language(:string, "Language used in an enrolled program") + end + + example(%{ + group_id: 1, + user_id: 1, + program_manager_id: 1, + program_date_of_joining: "2020/01/06", + program_student_language: "English" + }) + end + } + end + + def auth_groups do + %{ + AuthGroups: + swagger_schema do + title("AuthGroups") + description("All the auth-groups") + type(:array) + items(Schema.ref(:AuthGroup)) + end + } + end +end From 986ebd96ebdf8df4045de5f284e59d49fd172259 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Mon, 18 Mar 2024 22:10:23 +0530 Subject: [PATCH 17/54] migration file --- lib/dbservice/batch_programs.ex | 82 ----------- .../enrollment_record/enrollment_record.ex | 2 +- lib/dbservice/programs/program.ex | 4 +- lib/dbservice/schools/school.ex | 4 +- lib/dbservice/sessions/user_session.ex | 2 +- lib/dbservice/users/student.ex | 2 - lib/dbservice/users/teacher.ex | 3 - lib/dbservice/users/user.ex | 2 + .../controllers/batch_program_controller.ex | 130 ------------------ lib/dbservice_web/router.ex | 1 - .../swagger_schemas/auth_group.ex | 46 ------- .../swagger_schemas/batch_program.ex | 37 ----- lib/dbservice_web/swagger_schemas/group.ex | 46 +++++++ lib/dbservice_web/views/batch_program_view.ex | 20 --- .../20240318162349_update_table_schemas.exs | 77 +++++++++++ 15 files changed, 131 insertions(+), 327 deletions(-) delete mode 100644 lib/dbservice/batch_programs.ex delete mode 100644 lib/dbservice_web/controllers/batch_program_controller.ex delete mode 100644 lib/dbservice_web/swagger_schemas/batch_program.ex delete mode 100644 lib/dbservice_web/views/batch_program_view.ex create mode 100644 priv/repo/migrations/20240318162349_update_table_schemas.exs diff --git a/lib/dbservice/batch_programs.ex b/lib/dbservice/batch_programs.ex deleted file mode 100644 index f3439a24..00000000 --- a/lib/dbservice/batch_programs.ex +++ /dev/null @@ -1,82 +0,0 @@ -defmodule Dbservice.BatchPrograms do - @moduledoc """ - The BatchPrograms context. - """ - - import Ecto.Query, warn: false - alias Dbservice.Repo - - alias Dbservice.Batches.BatchProgram - - @spec list_batch_program :: any - @doc """ - Returns the list of batch_program. - ## Examples - iex> list_batch_program() - [%Group{}, ...] - """ - def list_batch_program do - Repo.all(BatchProgram) - end - - @doc """ - Gets a single batch_program. - Raises `Ecto.NoResultsError` if the Group does not exist. - ## Examples - iex> get_batch_program!(123) - %Group{} - iex> get_batch_program!(456) - ** (Ecto.NoResultsError) - """ - def get_batch_program!(id), do: Repo.get!(BatchProgram, id) - - @doc """ - Creates a batch_program. - ## Examples - iex> create_batch_program(%{field: value}) - {:ok, %Group{}} - iex> create_batch_program(%{field: bad_value}) - {:error, %Ecto.Changeset{}} - """ - def create_batch_program(attrs \\ %{}) do - %BatchProgram{} - |> BatchProgram.changeset(attrs) - |> Repo.insert() - end - - @doc """ - Updates a batch_program. - ## Examples - iex> update_batch_program(batch_program, %{field: new_value}) - {:ok, %Group{}} - iex> update_batch_program(batch_program, %{field: bad_value}) - {:error, %Ecto.Changeset{}} - """ - def update_batch_program(%BatchProgram{} = batch_program, attrs) do - batch_program - |> BatchProgram.changeset(attrs) - |> Repo.update() - end - - @doc """ - Deletes a group_user. - ## Examples - iex> delete_batch_program(batch_program) - {:ok, %GroupUser{}} - iex> delete_batch_program(batch_program) - {:error, %Ecto.Changeset{}} - """ - def delete_batch_program(%BatchProgram{} = batch_program) do - Repo.delete(batch_program) - end - - @doc """ - Returns an `%Ecto.Changeset{}` for tracking group changes. - ## Examples - iex> change_batch_program(batch_program) - %Ecto.Changeset{data: %Groupuser{}} - """ - def change_batch_program(%BatchProgram{} = batch_program, attrs \\ %{}) do - BatchProgram.changeset(batch_program, attrs) - end -end diff --git a/lib/dbservice/enrollment_record/enrollment_record.ex b/lib/dbservice/enrollment_record/enrollment_record.ex index f7a628fb..825f7381 100644 --- a/lib/dbservice/enrollment_record/enrollment_record.ex +++ b/lib/dbservice/enrollment_record/enrollment_record.ex @@ -38,7 +38,7 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do defp validate_dates_of_enrollment(changeset) do if get_field(changeset, :start_end, :end_date) != nil do - invalidate_future_date(changeset, :start_end, :end_date) + validate_start_end_datetime(changeset, :start_end, :end_date) else changeset end diff --git a/lib/dbservice/programs/program.ex b/lib/dbservice/programs/program.ex index 9e2588e1..8644c778 100644 --- a/lib/dbservice/programs/program.ex +++ b/lib/dbservice/programs/program.ex @@ -20,8 +20,8 @@ defmodule Dbservice.Programs.Program do has_many :group, Group, foreign_key: :child_id, where: [type: "program"] has_many :enrollment_record, EnrollmentRecord, - foreign_key: :grouping_id, - where: [grouping_type: "program"] + foreign_key: :group_id, + where: [group_type: "program"] timestamps() end diff --git a/lib/dbservice/schools/school.ex b/lib/dbservice/schools/school.ex index 507b2367..292663ea 100644 --- a/lib/dbservice/schools/school.ex +++ b/lib/dbservice/schools/school.ex @@ -23,8 +23,8 @@ defmodule Dbservice.Schools.School do field :board_medium, :string has_many :enrollment_record, EnrollmentRecord, - foreign_key: :grouping_id, - where: [grouping_type: "school"] + foreign_key: :group_id, + where: [group_type: "school"] timestamps() end diff --git a/lib/dbservice/sessions/user_session.ex b/lib/dbservice/sessions/user_session.ex index 203bd21c..bf198901 100644 --- a/lib/dbservice/sessions/user_session.ex +++ b/lib/dbservice/sessions/user_session.ex @@ -35,7 +35,7 @@ defmodule Dbservice.Sessions.UserSession do defp validate_start_end_date_time(changeset) do if get_field(changeset, :timestamp) do - validate_start_end_datetime(changeset, :timestamp) + invalidate_future_date(changeset, :timestamp) else changeset end diff --git a/lib/dbservice/users/student.ex b/lib/dbservice/users/student.ex index dfd5c737..caf7b3a1 100644 --- a/lib/dbservice/users/student.ex +++ b/lib/dbservice/users/student.ex @@ -5,7 +5,6 @@ defmodule Dbservice.Users.Student do import Ecto.Changeset alias Dbservice.Users.User - alias Dbservice.EnrollmentRecords.EnrollmentRecord alias Dbservice.Exams.StudentExamRecord schema "student" do @@ -50,7 +49,6 @@ defmodule Dbservice.Users.Student do field(:planned_competitive_exams, {:array, :integer}) belongs_to(:user, User) - has_many(:enrollment_record, EnrollmentRecord) has_many(:student_exam_record, StudentExamRecord) timestamps() diff --git a/lib/dbservice/users/teacher.ex b/lib/dbservice/users/teacher.ex index ee9d37b5..29c89b9e 100644 --- a/lib/dbservice/users/teacher.ex +++ b/lib/dbservice/users/teacher.ex @@ -5,7 +5,6 @@ defmodule Dbservice.Users.Teacher do import Ecto.Changeset alias Dbservice.Users.User - alias Dbservice.EnrollmentRecords.EnrollmentRecord schema "teacher" do field :designation, :string @@ -13,8 +12,6 @@ defmodule Dbservice.Users.Teacher do belongs_to :user, User - has_many(:enrollment_record, EnrollmentRecord) - timestamps() end diff --git a/lib/dbservice/users/user.ex b/lib/dbservice/users/user.ex index 162702e1..e73f6c20 100644 --- a/lib/dbservice/users/user.ex +++ b/lib/dbservice/users/user.ex @@ -9,6 +9,7 @@ defmodule Dbservice.Users.User do alias Dbservice.Users.Teacher alias Dbservice.Users.Student alias Dbservice.Groups.Group + alias Dbservice.EnrollmentRecords.EnrollmentRecord schema "user" do field(:first_name, :string) @@ -31,6 +32,7 @@ defmodule Dbservice.Users.User do many_to_many(:sessions, SessionOccurence, join_through: "user_session", on_replace: :delete) has_one(:teacher, Teacher) has_one(:student, Student) + has_many(:enrollment_record, EnrollmentRecord) many_to_many(:group, Group, join_through: "group_user", on_replace: :delete) end diff --git a/lib/dbservice_web/controllers/batch_program_controller.ex b/lib/dbservice_web/controllers/batch_program_controller.ex deleted file mode 100644 index 6834b253..00000000 --- a/lib/dbservice_web/controllers/batch_program_controller.ex +++ /dev/null @@ -1,130 +0,0 @@ -defmodule DbserviceWeb.BatchProgramController do - use DbserviceWeb, :controller - - import Ecto.Query - alias Dbservice.Repo - alias Dbservice.BatchPrograms - alias Dbservice.Batches.BatchProgram - - action_fallback(DbserviceWeb.FallbackController) - - use PhoenixSwagger - - alias DbserviceWeb.SwaggerSchema.BatchProgram, as: SwaggerSchemaBatchProgram - - def swagger_definitions do - # merge the required definitions in a pair at a time using the Map.merge/2 function - Map.merge( - SwaggerSchemaBatchProgram.batch_program(), - SwaggerSchemaBatchProgram.batch_programs() - ) - end - - swagger_path :index do - get("/api/batch-program") - - parameters do - params(:query, :integer, "The id the batch", required: false, name: "batch_id") - - params(:query, :integer, "The id the program", - required: false, - name: "program" - ) - end - - response(200, "OK", Schema.ref(:BatchPrograms)) - end - - def index(conn, params) do - query = - from(m in BatchProgram, - order_by: [asc: m.id], - offset: ^params["offset"], - limit: ^params["limit"] - ) - - query = - Enum.reduce(params, query, fn {key, value}, acc -> - case String.to_existing_atom(key) do - :offset -> acc - :limit -> acc - atom -> from(u in acc, where: field(u, ^atom) == ^value) - end - end) - - batch_program = Repo.all(query) - render(conn, "index.json", batch_program: batch_program) - end - - swagger_path :create do - post("/api/batch-program") - - parameters do - body(:body, Schema.ref(:BatchProgram), "BatchProgram to create", required: true) - end - - response(201, "Created", Schema.ref(:BatchProgram)) - end - - def create(conn, params) do - with {:ok, %BatchProgram{} = batch_program} <- BatchPrograms.create_batch_program(params) do - conn - |> put_status(:created) - |> put_resp_header("location", Routes.batch_program_path(conn, :show, batch_program)) - |> render("show.json", batch_program: batch_program) - end - end - - swagger_path :show do - get("/api/batch-program/{batchProgramId}") - - parameters do - batchProgramId(:path, :integer, "The id of the batch-program record", required: true) - end - - response(200, "OK", Schema.ref(:BatchProgram)) - end - - def show(conn, %{"id" => id}) do - batch_program = BatchPrograms.get_batch_program!(id) - render(conn, "show.json", batch_program: batch_program) - end - - swagger_path :update do - patch("/api/batch-program/{batchProgramId}") - - parameters do - batchProgramId(:path, :integer, "The id of the batch_program record", required: true) - body(:body, Schema.ref(:BatchProgram), "batch_program to create", required: true) - end - - response(200, "Updated", Schema.ref(:BatchProgram)) - end - - def update(conn, params) do - batch_program = BatchPrograms.get_batch_program!(params["id"]) - - with {:ok, %BatchProgram{} = batch_program} <- - BatchPrograms.update_batch_program(batch_program, params) do - render(conn, "show.json", batch_program: batch_program) - end - end - - swagger_path :delete do - PhoenixSwagger.Path.delete("/api/batch-program/{batchProgramId}") - - parameters do - batchProgramId(:path, :integer, "The id of the batch_program record", required: true) - end - - response(204, "No Content") - end - - def delete(conn, %{"id" => id}) do - batch_program = BatchPrograms.get_batch_program!(id) - - with {:ok, %BatchProgram{}} <- BatchPrograms.delete_batch_program(batch_program) do - send_resp(conn, :no_content, "") - end - end -end diff --git a/lib/dbservice_web/router.ex b/lib/dbservice_web/router.ex index 39c42be2..00db9a8e 100644 --- a/lib/dbservice_web/router.ex +++ b/lib/dbservice_web/router.ex @@ -28,7 +28,6 @@ defmodule DbserviceWeb.Router do resources("/group-session", GroupSessionController, except: [:new, :edit]) resources("/program", ProgramController, except: [:new, :edit]) resources("/batch", BatchController, except: [:new, :edit]) - resources("/batch-program", BatchProgramController, except: [:new, :edit]) resources("/group", GroupController, except: [:new, :edit]) resources("/form-schema", FormSchemaController) resources("/group-user", GroupUserController) diff --git a/lib/dbservice_web/swagger_schemas/auth_group.ex b/lib/dbservice_web/swagger_schemas/auth_group.ex index f3e2f063..f01d9b28 100644 --- a/lib/dbservice_web/swagger_schemas/auth_group.ex +++ b/lib/dbservice_web/swagger_schemas/auth_group.ex @@ -34,52 +34,6 @@ defmodule DbserviceWeb.SwaggerSchema.AuthGroup do } end - def groupsessions do - %{ - GroupSessions: - swagger_schema do - title("Group Session") - description("Relation between group and session") - - properties do - group_id(:integer, "Id of a particular group") - session_id(:integer, "Id of a particular group") - end - - example(%{ - group_id: 1, - session_id: 1 - }) - end - } - end - - def groupusers do - %{ - GroupUsers: - swagger_schema do - title("Group User") - description("Relation between group and user") - - properties do - group_id(:integer, "Id of a particular group") - user_id(:integer, "Id of a particular group") - program_manager_id(:integer, "ID of a program manager") - program_date_of_joining(:utc_datetime, "Date of joining a program") - program_student_language(:string, "Language used in an enrolled program") - end - - example(%{ - group_id: 1, - user_id: 1, - program_manager_id: 1, - program_date_of_joining: "2020/01/06", - program_student_language: "English" - }) - end - } - end - def auth_groups do %{ AuthGroups: diff --git a/lib/dbservice_web/swagger_schemas/batch_program.ex b/lib/dbservice_web/swagger_schemas/batch_program.ex deleted file mode 100644 index 5f7f293a..00000000 --- a/lib/dbservice_web/swagger_schemas/batch_program.ex +++ /dev/null @@ -1,37 +0,0 @@ -defmodule DbserviceWeb.SwaggerSchema.BatchProgram do - @moduledoc false - - use PhoenixSwagger - - def batch_program do - %{ - BatchProgram: - swagger_schema do - title("BatchProgram") - description("A mapping between batch and program") - - properties do - batch_id(:integer, "The id of the batch") - program_id(:integer, "The id of the program") - end - - example(%{ - batch_id: 1, - program_id: 1 - }) - end - } - end - - def batch_programs do - %{ - BatchPrograms: - swagger_schema do - title("BatchPrograms") - description("All batch and program mappings") - type(:array) - items(Schema.ref(:BatchProgram)) - end - } - end -end diff --git a/lib/dbservice_web/swagger_schemas/group.ex b/lib/dbservice_web/swagger_schemas/group.ex index 308efdbd..0cefcfad 100644 --- a/lib/dbservice_web/swagger_schemas/group.ex +++ b/lib/dbservice_web/swagger_schemas/group.ex @@ -48,4 +48,50 @@ defmodule DbserviceWeb.SwaggerSchema.Group do end } end + + def groupsessions do + %{ + GroupSessions: + swagger_schema do + title("Group Session") + description("Relation between group and session") + + properties do + group_id(:integer, "Id of a particular group") + session_id(:integer, "Id of a particular group") + end + + example(%{ + group_id: 1, + session_id: 1 + }) + end + } + end + + def groupusers do + %{ + GroupUsers: + swagger_schema do + title("Group User") + description("Relation between group and user") + + properties do + group_id(:integer, "Id of a particular group") + user_id(:integer, "Id of a particular group") + program_manager_id(:integer, "ID of a program manager") + program_date_of_joining(:utc_datetime, "Date of joining a program") + program_student_language(:string, "Language used in an enrolled program") + end + + example(%{ + group_id: 1, + user_id: 1, + program_manager_id: 1, + program_date_of_joining: "2020/01/06", + program_student_language: "English" + }) + end + } + end end diff --git a/lib/dbservice_web/views/batch_program_view.ex b/lib/dbservice_web/views/batch_program_view.ex deleted file mode 100644 index 135a10b5..00000000 --- a/lib/dbservice_web/views/batch_program_view.ex +++ /dev/null @@ -1,20 +0,0 @@ -defmodule DbserviceWeb.BatchProgramView do - use DbserviceWeb, :view - alias DbserviceWeb.BatchProgramView - - def render("index.json", %{batch_program: batch_program}) do - render_many(batch_program, BatchProgramView, "batch_program.json") - end - - def render("show.json", %{batch_program: batch_program}) do - render_one(batch_program, BatchProgramView, "batch_program.json") - end - - def render("batch_program.json", %{batch_program: batch_program}) do - %{ - id: batch_program.id, - batch_id: batch_program.batch_id, - program_id: batch_program.program_id - } - end -end diff --git a/priv/repo/migrations/20240318162349_update_table_schemas.exs b/priv/repo/migrations/20240318162349_update_table_schemas.exs new file mode 100644 index 00000000..d62a6ef0 --- /dev/null +++ b/priv/repo/migrations/20240318162349_update_table_schemas.exs @@ -0,0 +1,77 @@ +defmodule Dbservice.Repo.Migrations.UpdateTableSchemas do + use Ecto.Migration + + def change do + alter table(:batch) do + add :start_date, :date + add :end_date, :date + add :program_id, references(:programs) + + modify :group_type, :string, null: true + modify :grouping_id, :integer, null: true + end + + drop table("batch_program") + + alter table(:enrollment_record) do + add :start_date, :date + add :end_date, :date + add :group_id, references(:groups) + add :group_type, :string + add :user_id, references(:users) + + modify :is_current, :boolean, default: true + modify :date_of_enrollment, :date, null: true + remove :grade + remove :student_id + remove :board_medium + end + + alter table(:exam) do + add :cutoff, :map + end + + alter table(:student_exam_record) do + add :percentile, :float + add :all_india_rank, :integer + add :category_rank, :integer + end + + alter table(:group_user) do + remove :program_date_of_joining + remove :program_student_language + remove :program_manager + end + + alter table(:school) do + add :gender_type, :string + add :af_school_category, :string + remove :type + remove :category + end + + alter table(:user) do + remove :middle_name + end + + alter table(:user_session) do + add :timestamp, :utc_datetime + add :type, :string + + remove :start_time + remove :end_time + end + + alter table(:user_session) do + add :popup_form, :boolean + add :popup_form_id, :integer + add :signup_form, :integer + add :signup_form_id, :integer + + remove :pop_up_form + remove :activate_signup + remove :number_of_fields_in_pop_form + remove :form_schema_id + end + end +end From 3f858709add7397b88f261647bb83f8ea3b03c86 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Mon, 18 Mar 2024 23:49:53 +0530 Subject: [PATCH 18/54] removed migration --- .../20240318162349_update_table_schemas.exs | 77 ------------------- 1 file changed, 77 deletions(-) delete mode 100644 priv/repo/migrations/20240318162349_update_table_schemas.exs diff --git a/priv/repo/migrations/20240318162349_update_table_schemas.exs b/priv/repo/migrations/20240318162349_update_table_schemas.exs deleted file mode 100644 index d62a6ef0..00000000 --- a/priv/repo/migrations/20240318162349_update_table_schemas.exs +++ /dev/null @@ -1,77 +0,0 @@ -defmodule Dbservice.Repo.Migrations.UpdateTableSchemas do - use Ecto.Migration - - def change do - alter table(:batch) do - add :start_date, :date - add :end_date, :date - add :program_id, references(:programs) - - modify :group_type, :string, null: true - modify :grouping_id, :integer, null: true - end - - drop table("batch_program") - - alter table(:enrollment_record) do - add :start_date, :date - add :end_date, :date - add :group_id, references(:groups) - add :group_type, :string - add :user_id, references(:users) - - modify :is_current, :boolean, default: true - modify :date_of_enrollment, :date, null: true - remove :grade - remove :student_id - remove :board_medium - end - - alter table(:exam) do - add :cutoff, :map - end - - alter table(:student_exam_record) do - add :percentile, :float - add :all_india_rank, :integer - add :category_rank, :integer - end - - alter table(:group_user) do - remove :program_date_of_joining - remove :program_student_language - remove :program_manager - end - - alter table(:school) do - add :gender_type, :string - add :af_school_category, :string - remove :type - remove :category - end - - alter table(:user) do - remove :middle_name - end - - alter table(:user_session) do - add :timestamp, :utc_datetime - add :type, :string - - remove :start_time - remove :end_time - end - - alter table(:user_session) do - add :popup_form, :boolean - add :popup_form_id, :integer - add :signup_form, :integer - add :signup_form_id, :integer - - remove :pop_up_form - remove :activate_signup - remove :number_of_fields_in_pop_form - remove :form_schema_id - end - end -end From b2d4da31b84208ea5c54d8081bc77af67dde7e90 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Mon, 18 Mar 2024 23:54:51 +0530 Subject: [PATCH 19/54] failed check --- lib/dbservice/products/product.ex | 2 ++ lib/dbservice_web/controllers/group_controller.ex | 4 +++- lib/dbservice_web/swagger_schemas/group.ex | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/dbservice/products/product.ex b/lib/dbservice/products/product.ex index 27aba929..d83ee45c 100644 --- a/lib/dbservice/products/product.ex +++ b/lib/dbservice/products/product.ex @@ -4,6 +4,8 @@ defmodule Dbservice.Products.Product do use Ecto.Schema import Ecto.Changeset + alias Dbservice.Groups.Group + schema "product" do field :name, :string field :mode, :string diff --git a/lib/dbservice_web/controllers/group_controller.ex b/lib/dbservice_web/controllers/group_controller.ex index 5c194ede..014b91ca 100644 --- a/lib/dbservice_web/controllers/group_controller.ex +++ b/lib/dbservice_web/controllers/group_controller.ex @@ -140,7 +140,9 @@ defmodule DbserviceWeb.GroupController do parameters do groupId(:path, :integer, "The id of the group record", required: true) - body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", required: true) + body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", + required: true + ) end response(200, "OK", Schema.ref(:GroupUsers)) diff --git a/lib/dbservice_web/swagger_schemas/group.ex b/lib/dbservice_web/swagger_schemas/group.ex index 0cefcfad..a7ad3baa 100644 --- a/lib/dbservice_web/swagger_schemas/group.ex +++ b/lib/dbservice_web/swagger_schemas/group.ex @@ -49,7 +49,7 @@ defmodule DbserviceWeb.SwaggerSchema.Group do } end - def groupsessions do + def groupsessions do %{ GroupSessions: swagger_schema do From 0b7e7180c44d57a4c17c81cae2a649f2767b6d66 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 00:00:45 +0530 Subject: [PATCH 20/54] batch + batch_program --- .../20240318182647_update_batch_table.exs | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 priv/repo/migrations/20240318182647_update_batch_table.exs diff --git a/priv/repo/migrations/20240318182647_update_batch_table.exs b/priv/repo/migrations/20240318182647_update_batch_table.exs new file mode 100644 index 00000000..e48d0a56 --- /dev/null +++ b/priv/repo/migrations/20240318182647_update_batch_table.exs @@ -0,0 +1,13 @@ +defmodule Dbservice.Repo.Migrations.UpdateBatchTable do + use Ecto.Migration + + def change do + alter table(:batch) do + add :start_date, :date + add :end_date, :date + add :program_id, references(:program) + end + + drop table(:batch_program) + end +end From 9a4ff738a5f165b3aefc141cd51642fa0cc226e9 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 00:05:30 +0530 Subject: [PATCH 21/54] enrollment_record --- ...0240318183149_update_enrollment_record.exs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 priv/repo/migrations/20240318183149_update_enrollment_record.exs diff --git a/priv/repo/migrations/20240318183149_update_enrollment_record.exs b/priv/repo/migrations/20240318183149_update_enrollment_record.exs new file mode 100644 index 00000000..5acd5b63 --- /dev/null +++ b/priv/repo/migrations/20240318183149_update_enrollment_record.exs @@ -0,0 +1,20 @@ +defmodule Dbservice.Repo.Migrations.UpdateEnrollmentRecord do + use Ecto.Migration + + def change do + alter table(:enrollment_record) do + add :start_date, :date + add :end_date, :date + add :group_id, :integer + add :group_type, :string + add :user_id, references(:user) + + remove :grade + remove :student_id + remove :board_medium + remove :date_of_enrollment + remove :grouping_id + remove :grouping_type + end + end +end From a78737dfbcbbeed8498818628cd63ac325db9b1c Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 12:10:04 +0530 Subject: [PATCH 22/54] exam + student_exam_record --- .../20240319063129_update_exam_tables.exs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 priv/repo/migrations/20240319063129_update_exam_tables.exs diff --git a/priv/repo/migrations/20240319063129_update_exam_tables.exs b/priv/repo/migrations/20240319063129_update_exam_tables.exs new file mode 100644 index 00000000..6a87e100 --- /dev/null +++ b/priv/repo/migrations/20240319063129_update_exam_tables.exs @@ -0,0 +1,24 @@ +defmodule Dbservice.Repo.Migrations.UpdateExamTables do + use Ecto.Migration + + def change do + alter table(:exam) do + add :cutoff, :map + + modify :name, :string, null: false + end + + alter table(:student_exam_record) do + remove :rank + + add :percentile, :float + add :all_india_rank, :integer + add :category_rank, :integer + + modify :student_id, :integer, null: false + modify :exam_id, :integer, null: false + modify :date, :date, null: false + end + + end +end From d881a974b7af30bd1ed3440a5750e8b5265ede4d Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 12:25:13 +0530 Subject: [PATCH 23/54] groups tables --- .../20240319064218_update_group_tables.exs | 8 ++++++++ ...19065158_update_group_user_session_tables.exs | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 priv/repo/migrations/20240319064218_update_group_tables.exs create mode 100644 priv/repo/migrations/20240319065158_update_group_user_session_tables.exs diff --git a/priv/repo/migrations/20240319064218_update_group_tables.exs b/priv/repo/migrations/20240319064218_update_group_tables.exs new file mode 100644 index 00000000..06616653 --- /dev/null +++ b/priv/repo/migrations/20240319064218_update_group_tables.exs @@ -0,0 +1,8 @@ +defmodule Dbservice.Repo.Migrations.UpdateGroupTables do + use Ecto.Migration + + def change do + rename table("group"), to: table("auth_group") + rename table("group_type"), to: table("group") + end +end diff --git a/priv/repo/migrations/20240319065158_update_group_user_session_tables.exs b/priv/repo/migrations/20240319065158_update_group_user_session_tables.exs new file mode 100644 index 00000000..0c9a58ee --- /dev/null +++ b/priv/repo/migrations/20240319065158_update_group_user_session_tables.exs @@ -0,0 +1,16 @@ +defmodule Dbservice.Repo.Migrations.UpdateGroupUserSessionTables do + use Ecto.Migration + + def change do + rename table("group_session"), :group_type_id, to: :group_id + rename table("group_user"), :group_type_id, to: :group_id + + alter table("group_user") do + remove :program_manager_id + remove :program_date_of_joining + remove :program_student_language + + modify :user_id, :integer, null: false + end + end +end From cc8f6918a163d9c857eeb382c0a77e4d0d482be2 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 12:32:17 +0530 Subject: [PATCH 24/54] product + program --- .../20240319065634_update_program_table.exs | 16 ++++++++++++++ .../20240319070032_create_product_table.exs | 22 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 priv/repo/migrations/20240319065634_update_program_table.exs create mode 100644 priv/repo/migrations/20240319070032_create_product_table.exs diff --git a/priv/repo/migrations/20240319065634_update_program_table.exs b/priv/repo/migrations/20240319065634_update_program_table.exs new file mode 100644 index 00000000..754623b4 --- /dev/null +++ b/priv/repo/migrations/20240319065634_update_program_table.exs @@ -0,0 +1,16 @@ +defmodule Dbservice.Repo.Migrations.UpdateProgramTable do + use Ecto.Migration + + def change do + rename table("program"), :group_id, to: :auth_group_id + + alter table("program") do + remove :type + remove :sub_type + remove :mode + remove :start_date + remove :product_used + remove :model + end + end +end diff --git a/priv/repo/migrations/20240319070032_create_product_table.exs b/priv/repo/migrations/20240319070032_create_product_table.exs new file mode 100644 index 00000000..e0423b3c --- /dev/null +++ b/priv/repo/migrations/20240319070032_create_product_table.exs @@ -0,0 +1,22 @@ +defmodule Dbservice.Repo.Migrations.CreateProductTable do + use Ecto.Migration + + def change do + create table(:product) do + add :name, :string, null: false + add :mode, :string + add :model, :string + add :tech_modules, :string + add :type, :string + add :led_by, :string + add :goal, :string + add :code, :string + + timestamps() + end + + alter table(:program) do + add :product_id, references(:product), null: false + end + end +end From 8554711cddf2f1c78863c4664d9825a98308dc3f Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 12:44:38 +0530 Subject: [PATCH 25/54] school +session --- ...40319071109_alter_session_school_tables.exs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 priv/repo/migrations/20240319071109_alter_session_school_tables.exs diff --git a/priv/repo/migrations/20240319071109_alter_session_school_tables.exs b/priv/repo/migrations/20240319071109_alter_session_school_tables.exs new file mode 100644 index 00000000..22a7683f --- /dev/null +++ b/priv/repo/migrations/20240319071109_alter_session_school_tables.exs @@ -0,0 +1,18 @@ +defmodule Dbservice.Repo.Migrations.AlterSessionSchoolTables do + use Ecto.Migration + + def change do + rename table("school"), :type, to: :gender_type + rename table("school"), :category, to: :af_school_category + + rename table("session"), :pop_up_form, to: :popup_form + rename table("session"), :activate_signup, to: :signup_form + rename table("session"), :form_schema_id, to: :signup_form_id + + alter table("session") do + remove :number_of_fields_in_pop_form + + add :popup_form_id, references("form_schema") + end + end +end From e70e879e063a86527c8f332a24daf56956e9c891 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 12:47:05 +0530 Subject: [PATCH 26/54] teacher + user --- .../20240319071557_alter_user_teacher_tables.exs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs diff --git a/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs b/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs new file mode 100644 index 00000000..619384bd --- /dev/null +++ b/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs @@ -0,0 +1,16 @@ +defmodule Dbservice.Repo.Migrations.AlterUserTeacherTables do + use Ecto.Migration + + def change do + alter table("user") do + remove :middle_name + end + + alter table("teacher") do + remove :subject + remove :grade + remove :school_id + remove :program_manager_id + end + end +end From ff2b658f3224531bb417809722043eb1f581e616 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 12:48:46 +0530 Subject: [PATCH 27/54] user_session --- .../20240319071721_alter_user_session_table.exs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 priv/repo/migrations/20240319071721_alter_user_session_table.exs diff --git a/priv/repo/migrations/20240319071721_alter_user_session_table.exs b/priv/repo/migrations/20240319071721_alter_user_session_table.exs new file mode 100644 index 00000000..8bab828a --- /dev/null +++ b/priv/repo/migrations/20240319071721_alter_user_session_table.exs @@ -0,0 +1,12 @@ +defmodule Dbservice.Repo.Migrations.AlterUserSessionTable do + use Ecto.Migration + + def change do + rename table("user_session"), :start_time, to: :timestamp + + alter table("user_session") do + remove :end_time + remove :is_user_valid + end + end +end From dc414b0dc06a27212c952e484501a688c3ca87e2 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 13:07:24 +0530 Subject: [PATCH 28/54] formatting --- lib/dbservice/products/product.ex | 2 +- .../migrations/20240318183149_update_enrollment_record.exs | 2 +- priv/repo/migrations/20240319063129_update_exam_tables.exs | 3 +-- .../20240319065158_update_group_user_session_tables.exs | 2 +- .../migrations/20240319071109_alter_session_school_tables.exs | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/dbservice/products/product.ex b/lib/dbservice/products/product.ex index d83ee45c..c8c4cef5 100644 --- a/lib/dbservice/products/product.ex +++ b/lib/dbservice/products/product.ex @@ -5,7 +5,7 @@ defmodule Dbservice.Products.Product do import Ecto.Changeset alias Dbservice.Groups.Group - + schema "product" do field :name, :string field :mode, :string diff --git a/priv/repo/migrations/20240318183149_update_enrollment_record.exs b/priv/repo/migrations/20240318183149_update_enrollment_record.exs index 5acd5b63..ee0bff82 100644 --- a/priv/repo/migrations/20240318183149_update_enrollment_record.exs +++ b/priv/repo/migrations/20240318183149_update_enrollment_record.exs @@ -8,7 +8,7 @@ defmodule Dbservice.Repo.Migrations.UpdateEnrollmentRecord do add :group_id, :integer add :group_type, :string add :user_id, references(:user) - + remove :grade remove :student_id remove :board_medium diff --git a/priv/repo/migrations/20240319063129_update_exam_tables.exs b/priv/repo/migrations/20240319063129_update_exam_tables.exs index 6a87e100..36f9b248 100644 --- a/priv/repo/migrations/20240319063129_update_exam_tables.exs +++ b/priv/repo/migrations/20240319063129_update_exam_tables.exs @@ -16,9 +16,8 @@ defmodule Dbservice.Repo.Migrations.UpdateExamTables do add :category_rank, :integer modify :student_id, :integer, null: false - modify :exam_id, :integer, null: false + modify :exam_id, :integer, null: false modify :date, :date, null: false end - end end diff --git a/priv/repo/migrations/20240319065158_update_group_user_session_tables.exs b/priv/repo/migrations/20240319065158_update_group_user_session_tables.exs index 0c9a58ee..aa2e7f26 100644 --- a/priv/repo/migrations/20240319065158_update_group_user_session_tables.exs +++ b/priv/repo/migrations/20240319065158_update_group_user_session_tables.exs @@ -4,7 +4,7 @@ defmodule Dbservice.Repo.Migrations.UpdateGroupUserSessionTables do def change do rename table("group_session"), :group_type_id, to: :group_id rename table("group_user"), :group_type_id, to: :group_id - + alter table("group_user") do remove :program_manager_id remove :program_date_of_joining diff --git a/priv/repo/migrations/20240319071109_alter_session_school_tables.exs b/priv/repo/migrations/20240319071109_alter_session_school_tables.exs index 22a7683f..7f9161bf 100644 --- a/priv/repo/migrations/20240319071109_alter_session_school_tables.exs +++ b/priv/repo/migrations/20240319071109_alter_session_school_tables.exs @@ -8,7 +8,7 @@ defmodule Dbservice.Repo.Migrations.AlterSessionSchoolTables do rename table("session"), :pop_up_form, to: :popup_form rename table("session"), :activate_signup, to: :signup_form rename table("session"), :form_schema_id, to: :signup_form_id - + alter table("session") do remove :number_of_fields_in_pop_form From 649df4c54f075df1a81d7cabbb366b0fbbc78878 Mon Sep 17 00:00:00 2001 From: Bahugunajii Date: Tue, 19 Mar 2024 13:19:11 +0530 Subject: [PATCH 29/54] added editor support in readme --- docs/INSTALLATION.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 50f5a63b..ba743526 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -16,14 +16,18 @@ Install the following packages using your favorite package manager. Links are pr - [Install Postgres](https://www.postgresql.org/download/) - Run the following steps to install Postgres on a Mac device + ``` brew install postgresql brew services start postgresql ``` + - Once installed, verify the installations using `postgres --version`. You should be able to see: + ``` postgres (PostgreSQL) 14.9 (Homebrew) ``` + - For Postgres, this app defaults to `postgres` as both the username and password. This can be edited in `config/dev.exs` file. - Create a new database for the application called `dbservice_dev`. You can do this by running the command: `createdb dbservice_dev` - You can also use interactive postgres terminal `psql`. To open database, use: `psql -d dbservice_dev` @@ -58,6 +62,7 @@ Follow the steps below to set up the repo for development 3. Now you can visit [`localhost:4000`](http://localhost:4000) from your browser. 4. You can see Swagger docs at `http://localhost:4000/docs/swagger/index.html`. 5. Please verify that `localhost` is part of whitelisted domains. If not, you can create a file `db-service/config/.env` and add the following lines to it: + ``` WHITELISTED_DOMAINS="localhost" ``` @@ -65,8 +70,13 @@ Follow the steps below to set up the repo for development ### Adding data to local database You can add data to local database by running `sh ./fetch-data.sh`. This will fetch data from production/staging database and sync with your local database. Please ask repository owners for the following credentials: + ```production_db_host="xxx.rds.amazonaws.com" production_db_name="xxx" production_db_user="postgres" production_db_password="xxx" ``` + +## Editor Support + +For enhanced development experience with Elixir, consider installing [`ElixirLS: Elixir support and debugger`](https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls) from the Visual Studio Marketplace. From 900d872598ee06196c019134afa55fd922561308 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 14:51:42 +0530 Subject: [PATCH 30/54] random line --- lib/dbservice_web/controllers/group_controller.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/dbservice_web/controllers/group_controller.ex b/lib/dbservice_web/controllers/group_controller.ex index 014b91ca..d6848367 100644 --- a/lib/dbservice_web/controllers/group_controller.ex +++ b/lib/dbservice_web/controllers/group_controller.ex @@ -42,7 +42,6 @@ defmodule DbserviceWeb.GroupController do response(200, "OK", Schema.ref(:Groups)) end - @spec index(Plug.Conn.t(), any) :: Plug.Conn.t() def index(conn, params) do query = from m in Group, From 19a6bb71070aa58778707e4267ba4528ded8b9b1 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 14:52:34 +0530 Subject: [PATCH 31/54] typo --- lib/dbservice/enrollment_record/enrollment_record.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/dbservice/enrollment_record/enrollment_record.ex b/lib/dbservice/enrollment_record/enrollment_record.ex index 825f7381..55d1c775 100644 --- a/lib/dbservice/enrollment_record/enrollment_record.ex +++ b/lib/dbservice/enrollment_record/enrollment_record.ex @@ -37,8 +37,8 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do end defp validate_dates_of_enrollment(changeset) do - if get_field(changeset, :start_end, :end_date) != nil do - validate_start_end_datetime(changeset, :start_end, :end_date) + if get_field(changeset, :start_date, :end_date) != nil do + validate_start_end_datetime(changeset, :start_date, :end_date) else changeset end From 8aa24201f40ef55fa35f404b89c264459446b63b Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 22:44:39 +0530 Subject: [PATCH 32/54] all views --- lib/dbservice_web/views/batch_view.ex | 5 ++++- lib/dbservice_web/views/enrollment_record_view.ex | 11 +++++------ lib/dbservice_web/views/exam_view.ex | 3 ++- lib/dbservice_web/views/group_user_view.ex | 3 --- lib/dbservice_web/views/program_view.ex | 8 +------- lib/dbservice_web/views/school_view.ex | 4 ++-- lib/dbservice_web/views/session_view.ex | 8 ++++---- lib/dbservice_web/views/student_exam_record_view.ex | 4 +++- lib/dbservice_web/views/teacher_view.ex | 4 ---- lib/dbservice_web/views/user_session_view.ex | 4 +--- lib/dbservice_web/views/user_view.ex | 1 - 11 files changed, 22 insertions(+), 33 deletions(-) diff --git a/lib/dbservice_web/views/batch_view.ex b/lib/dbservice_web/views/batch_view.ex index 0c172adb..2f6bc775 100644 --- a/lib/dbservice_web/views/batch_view.ex +++ b/lib/dbservice_web/views/batch_view.ex @@ -16,7 +16,10 @@ defmodule DbserviceWeb.BatchView do name: batch.name, contact_hours_per_week: batch.contact_hours_per_week, batch_id: batch.batch_id, - parent_id: batch.parent_id + parent_id: batch.parent_id, + start_date: batch.start_date, + end_date: batch.end_date, + program_id: batch.program_id, } end end diff --git a/lib/dbservice_web/views/enrollment_record_view.ex b/lib/dbservice_web/views/enrollment_record_view.ex index 72ffaa49..6a4f90e5 100644 --- a/lib/dbservice_web/views/enrollment_record_view.ex +++ b/lib/dbservice_web/views/enrollment_record_view.ex @@ -13,14 +13,13 @@ defmodule DbserviceWeb.EnrollmentRecordView do def render("enrollment_record.json", %{enrollment_record: enrollment_record}) do %{ id: enrollment_record.id, - grade: enrollment_record.grade, academic_year: enrollment_record.academic_year, is_current: enrollment_record.is_current, - board_medium: enrollment_record.board_medium, - student_id: enrollment_record.student_id, - date_of_enrollment: enrollment_record.date_of_enrollment, - grouping_id: enrollment_record.grouping_id, - grouping_type: enrollment_record.grouping_type + start_date: enrollment_record.start_date, + end_date: enrollment_record.end_date, + group_id: enrollment_record.group_id, + group_type: enrollment_record.group_type, + user_id: enrollment_record.user_id } end end diff --git a/lib/dbservice_web/views/exam_view.ex b/lib/dbservice_web/views/exam_view.ex index 55cea0a7..b19107d7 100644 --- a/lib/dbservice_web/views/exam_view.ex +++ b/lib/dbservice_web/views/exam_view.ex @@ -15,7 +15,8 @@ defmodule DbserviceWeb.ExamView do id: exam.id, name: exam.name, registration_deadline: exam.registration_deadline, - date: exam.date + date: exam.date, + cutoff: exam.cutoff } end end diff --git a/lib/dbservice_web/views/group_user_view.ex b/lib/dbservice_web/views/group_user_view.ex index 884b3eb7..21f54200 100644 --- a/lib/dbservice_web/views/group_user_view.ex +++ b/lib/dbservice_web/views/group_user_view.ex @@ -13,11 +13,8 @@ defmodule DbserviceWeb.GroupUserView do def render("group_user.json", %{group_user: group_user}) do %{ id: group_user.id, - program_date_of_joining: group_user.program_date_of_joining, - program_student_language: group_user.program_student_language, group_id: group_user.group_id, user_id: group_user.user_id, - program_manager_id: group_user.program_manager_id } end end diff --git a/lib/dbservice_web/views/program_view.ex b/lib/dbservice_web/views/program_view.ex index 1267402f..4658886c 100644 --- a/lib/dbservice_web/views/program_view.ex +++ b/lib/dbservice_web/views/program_view.ex @@ -14,16 +14,10 @@ defmodule DbserviceWeb.ProgramView do %{ id: program.id, name: program.name, - type: program.type, - sub_type: program.sub_type, - mode: program.mode, - start_date: program.start_date, target_outreach: program.target_outreach, - product_used: program.product_used, donor: program.donor, state: program.state, - model: program.model, - group_id: program.group_id + product_id: program.product_id } end end diff --git a/lib/dbservice_web/views/school_view.ex b/lib/dbservice_web/views/school_view.ex index 663302f3..9e9e9255 100644 --- a/lib/dbservice_web/views/school_view.ex +++ b/lib/dbservice_web/views/school_view.ex @@ -16,8 +16,8 @@ defmodule DbserviceWeb.SchoolView do code: school.code, name: school.name, udise_code: school.udise_code, - type: school.type, - category: school.category, + gender_type: school.gender_type, + af_school_category: school.af_school_category, region: school.region, state_code: school.state_code, state: school.state, diff --git a/lib/dbservice_web/views/session_view.ex b/lib/dbservice_web/views/session_view.ex index 2ac81f59..b41d0cf8 100644 --- a/lib/dbservice_web/views/session_view.ex +++ b/lib/dbservice_web/views/session_view.ex @@ -27,14 +27,14 @@ defmodule DbserviceWeb.SessionView do purpose: session.purpose, repeat_schedule: session.repeat_schedule, platform_id: session.platform_id, - form_schema_id: session.form_schema_id, type: session.type, auth_type: session.auth_type, - activate_signup: session.activate_signup, + signup_form: session.signup_form, id_generation: session.id_generation, redirection: session.redirection, - pop_up_form: session.pop_up_form, - number_of_fields_in_pop_form: session.number_of_fields_in_pop_form + popup_form: session.popup_form, + signup_form_id: session.signup_form_id, + popup_form_id: session.popup_form_id, } end end diff --git a/lib/dbservice_web/views/student_exam_record_view.ex b/lib/dbservice_web/views/student_exam_record_view.ex index d8b3d970..f9d472cd 100644 --- a/lib/dbservice_web/views/student_exam_record_view.ex +++ b/lib/dbservice_web/views/student_exam_record_view.ex @@ -19,7 +19,9 @@ defmodule DbserviceWeb.StudentExamRecordView do application_password: student_exam_record.application_password, date: student_exam_record.date, score: student_exam_record.score, - rank: student_exam_record.rank + percentile: student_exam_record.percentile, + all_india_rank: student_exam_record.all_india_rank, + category_rank: student_exam_record.category_rank } end end diff --git a/lib/dbservice_web/views/teacher_view.ex b/lib/dbservice_web/views/teacher_view.ex index 1c075c5d..84729c6c 100644 --- a/lib/dbservice_web/views/teacher_view.ex +++ b/lib/dbservice_web/views/teacher_view.ex @@ -35,11 +35,7 @@ defmodule DbserviceWeb.TeacherView do %{ id: teacher.id, designation: teacher.designation, - grade: teacher.grade, - subject: teacher.subject, teacher_id: teacher.teacher_id, - school_id: teacher.school_id, - program_manager_id: teacher.program_manager_id, user: render_one(teacher.user, UserView, "user.json") } end diff --git a/lib/dbservice_web/views/user_session_view.ex b/lib/dbservice_web/views/user_session_view.ex index 74e658ef..14218d14 100644 --- a/lib/dbservice_web/views/user_session_view.ex +++ b/lib/dbservice_web/views/user_session_view.ex @@ -13,11 +13,9 @@ defmodule DbserviceWeb.UserSessionView do def render("user_session.json", %{user_session: user_session}) do %{ id: user_session.id, - start_time: user_session.start_time, - end_time: user_session.end_time, + timestamp: user_session.timestamp, session_occurrence_id: user_session.session_occurrence_id, data: user_session.data, - is_user_valid: user_session.is_user_valid, user_id: user_session.user_id } end diff --git a/lib/dbservice_web/views/user_view.ex b/lib/dbservice_web/views/user_view.ex index c4b5811a..511a8328 100644 --- a/lib/dbservice_web/views/user_view.ex +++ b/lib/dbservice_web/views/user_view.ex @@ -18,7 +18,6 @@ defmodule DbserviceWeb.UserView do %{ id: user.id, first_name: user.first_name, - middle_name: user.middle_name, last_name: user.last_name, email: user.email, phone: user.phone, From 71e82ffb8acbf7b31b2fb784dfc0b8aa030d6b87 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 22:53:48 +0530 Subject: [PATCH 33/54] enrollment record renaming group_id --- lib/dbservice/enrollment_records.ex | 8 ++++---- .../controllers/enrollment_record_controller.ex | 4 ++-- lib/dbservice_web/swagger_schemas/enrollment_record.ex | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/dbservice/enrollment_records.ex b/lib/dbservice/enrollment_records.ex index 85e82486..0d9673a3 100644 --- a/lib/dbservice/enrollment_records.ex +++ b/lib/dbservice/enrollment_records.ex @@ -53,15 +53,15 @@ defmodule Dbservice.EnrollmentRecords do """ def get_enrollment_record_by_params( student_id, - grouping_id, - grouping_type, + group_id, + group_type, grade, academic_year ) do Repo.get_by(EnrollmentRecord, student_id: student_id, - grouping_id: grouping_id, - grouping_type: grouping_type, + group_id: group_id, + group_type: group_type, grade: grade, academic_year: academic_year ) diff --git a/lib/dbservice_web/controllers/enrollment_record_controller.ex b/lib/dbservice_web/controllers/enrollment_record_controller.ex index 6dcae49b..c6cb43f0 100644 --- a/lib/dbservice_web/controllers/enrollment_record_controller.ex +++ b/lib/dbservice_web/controllers/enrollment_record_controller.ex @@ -76,8 +76,8 @@ defmodule DbserviceWeb.EnrollmentRecordController do def create(conn, params) do case EnrollmentRecords.get_enrollment_record_by_params( params["student_id"], - params["grouping_id"], - params["grouping_type"], + params["group_id"], + params["group_type"], params["grade"], params["academic_year"] ) do diff --git a/lib/dbservice_web/swagger_schemas/enrollment_record.ex b/lib/dbservice_web/swagger_schemas/enrollment_record.ex index ce73bedc..34909f98 100644 --- a/lib/dbservice_web/swagger_schemas/enrollment_record.ex +++ b/lib/dbservice_web/swagger_schemas/enrollment_record.ex @@ -17,8 +17,8 @@ defmodule DbserviceWeb.SwaggerSchema.EnrollmentRecord do student_id(:integer, "Student ID that the program enrollment belongs to") board_medium(:string, "Medium of the board") date_of_enrollment(:date, "Date of Enrollment") - grouping_id(:integer, "ID of what grouping the student belongs to") - grouping_type(:string, "What kind of grouping the grouping ID belongs to") + group_id(:integer, "ID of what group the student belongs to") + group_type(:string, "What kind of group the grouping ID belongs to") end example(%{ @@ -28,8 +28,8 @@ defmodule DbserviceWeb.SwaggerSchema.EnrollmentRecord do student_id: 1, board_medium: "English", date_of_enrollment: "02/03/2020", - grouping_id: 1, - grouping_type: "batch" + group_id: 1, + group_type: "batch" }) end } From 5e5ce912343f0ba68e5a5954a18196fa65f914c5 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 23:01:38 +0530 Subject: [PATCH 34/54] added grade and subject --- lib/dbservice/enrollment_record/enrollment_record.ex | 11 +++++++++-- lib/dbservice_web/views/enrollment_record_view.ex | 4 +++- .../20240318183149_update_enrollment_record.exs | 2 ++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/dbservice/enrollment_record/enrollment_record.ex b/lib/dbservice/enrollment_record/enrollment_record.ex index 55d1c775..207b0418 100644 --- a/lib/dbservice/enrollment_record/enrollment_record.ex +++ b/lib/dbservice/enrollment_record/enrollment_record.ex @@ -6,6 +6,8 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do import Dbservice.Utils.Util alias Dbservice.Users.User + alias Dbservice.Grades.Grade + alias Dbservice.Subjects.Subject schema "enrollment_record" do field :start_date, :date @@ -15,6 +17,9 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do field :group_id, :integer field :group_type, :string + belongs_to(:grade, Grade) + belongs_to(:subject, Subject) + belongs_to(:user, User) timestamps() @@ -30,9 +35,11 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do :is_current, :academic_year, :group_id, - :group_type + :group_type, + :grade_id, + :subject_id ]) - |> validate_required([:user_id, :group_id, :group_type, :start_date, :academic_year]) + |> validate_required([:user_id, :group_id, :group_type, :start_date, :academic_year, :grade_id]) |> validate_dates_of_enrollment end diff --git a/lib/dbservice_web/views/enrollment_record_view.ex b/lib/dbservice_web/views/enrollment_record_view.ex index 6a4f90e5..1aef09b2 100644 --- a/lib/dbservice_web/views/enrollment_record_view.ex +++ b/lib/dbservice_web/views/enrollment_record_view.ex @@ -19,7 +19,9 @@ defmodule DbserviceWeb.EnrollmentRecordView do end_date: enrollment_record.end_date, group_id: enrollment_record.group_id, group_type: enrollment_record.group_type, - user_id: enrollment_record.user_id + user_id: enrollment_record.user_id, + grade: enrollment_record.grade, + subject: enrollment_record.subject } end end diff --git a/priv/repo/migrations/20240318183149_update_enrollment_record.exs b/priv/repo/migrations/20240318183149_update_enrollment_record.exs index ee0bff82..80c7997e 100644 --- a/priv/repo/migrations/20240318183149_update_enrollment_record.exs +++ b/priv/repo/migrations/20240318183149_update_enrollment_record.exs @@ -8,6 +8,8 @@ defmodule Dbservice.Repo.Migrations.UpdateEnrollmentRecord do add :group_id, :integer add :group_type, :string add :user_id, references(:user) + add :subject_id, references(:subject) + add :grade_id, references(:grade) remove :grade remove :student_id From 777baa33a0e391fcb1ab2ba7be59535392ed4b79 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Tue, 19 Mar 2024 23:14:45 +0530 Subject: [PATCH 35/54] bug in enrollment record logic --- lib/dbservice/enrollment_records.ex | 8 ++++---- .../controllers/enrollment_record_controller.ex | 4 ++-- lib/dbservice_web/views/enrollment_record_view.ex | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/dbservice/enrollment_records.ex b/lib/dbservice/enrollment_records.ex index 0d9673a3..d869eec7 100644 --- a/lib/dbservice/enrollment_records.ex +++ b/lib/dbservice/enrollment_records.ex @@ -52,17 +52,17 @@ defmodule Dbservice.EnrollmentRecords do """ def get_enrollment_record_by_params( - student_id, + user_id, group_id, group_type, - grade, + grade_id, academic_year ) do Repo.get_by(EnrollmentRecord, - student_id: student_id, + user_id: user_id, group_id: group_id, group_type: group_type, - grade: grade, + grade_id: grade_id, academic_year: academic_year ) end diff --git a/lib/dbservice_web/controllers/enrollment_record_controller.ex b/lib/dbservice_web/controllers/enrollment_record_controller.ex index c6cb43f0..b181e9ca 100644 --- a/lib/dbservice_web/controllers/enrollment_record_controller.ex +++ b/lib/dbservice_web/controllers/enrollment_record_controller.ex @@ -75,10 +75,10 @@ defmodule DbserviceWeb.EnrollmentRecordController do def create(conn, params) do case EnrollmentRecords.get_enrollment_record_by_params( - params["student_id"], + params["user_id"], params["group_id"], params["group_type"], - params["grade"], + params["grade_id"], params["academic_year"] ) do nil -> diff --git a/lib/dbservice_web/views/enrollment_record_view.ex b/lib/dbservice_web/views/enrollment_record_view.ex index 1aef09b2..0a45c620 100644 --- a/lib/dbservice_web/views/enrollment_record_view.ex +++ b/lib/dbservice_web/views/enrollment_record_view.ex @@ -20,8 +20,8 @@ defmodule DbserviceWeb.EnrollmentRecordView do group_id: enrollment_record.group_id, group_type: enrollment_record.group_type, user_id: enrollment_record.user_id, - grade: enrollment_record.grade, - subject: enrollment_record.subject + grade_id: enrollment_record.grade_id, + subject_id: enrollment_record.subject_id } end end From 5f21e6898a3d8c599486d6c026d08908e1915982 Mon Sep 17 00:00:00 2001 From: Krrupa <25496389+sudheshna-donthineni@users.noreply.github.com> Date: Wed, 20 Mar 2024 12:16:50 +0530 Subject: [PATCH 36/54] Update lib/dbservice/schools/school.ex Co-authored-by: Aman Bahuguna --- lib/dbservice/schools/school.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dbservice/schools/school.ex b/lib/dbservice/schools/school.ex index 292663ea..f5fb17e7 100644 --- a/lib/dbservice/schools/school.ex +++ b/lib/dbservice/schools/school.ex @@ -37,7 +37,7 @@ defmodule Dbservice.Schools.School do :name, :udise_code, :gender_type, - :af_school_categorycategory, + :af_school_category, :region, :state_code, :state, From 6dec99517ff00411660dd8a3f947b5aeaf7e9170 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Wed, 20 Mar 2024 12:29:27 +0530 Subject: [PATCH 37/54] formatting error --- lib/dbservice/enrollment_record/enrollment_record.ex | 9 ++++++++- lib/dbservice_web/views/batch_view.ex | 2 +- lib/dbservice_web/views/group_user_view.ex | 2 +- lib/dbservice_web/views/session_view.ex | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/dbservice/enrollment_record/enrollment_record.ex b/lib/dbservice/enrollment_record/enrollment_record.ex index 207b0418..35158040 100644 --- a/lib/dbservice/enrollment_record/enrollment_record.ex +++ b/lib/dbservice/enrollment_record/enrollment_record.ex @@ -39,7 +39,14 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do :grade_id, :subject_id ]) - |> validate_required([:user_id, :group_id, :group_type, :start_date, :academic_year, :grade_id]) + |> validate_required([ + :user_id, + :group_id, + :group_type, + :start_date, + :academic_year, + :grade_id + ]) |> validate_dates_of_enrollment end diff --git a/lib/dbservice_web/views/batch_view.ex b/lib/dbservice_web/views/batch_view.ex index 2f6bc775..5322b95a 100644 --- a/lib/dbservice_web/views/batch_view.ex +++ b/lib/dbservice_web/views/batch_view.ex @@ -19,7 +19,7 @@ defmodule DbserviceWeb.BatchView do parent_id: batch.parent_id, start_date: batch.start_date, end_date: batch.end_date, - program_id: batch.program_id, + program_id: batch.program_id } end end diff --git a/lib/dbservice_web/views/group_user_view.ex b/lib/dbservice_web/views/group_user_view.ex index 21f54200..97da54f7 100644 --- a/lib/dbservice_web/views/group_user_view.ex +++ b/lib/dbservice_web/views/group_user_view.ex @@ -14,7 +14,7 @@ defmodule DbserviceWeb.GroupUserView do %{ id: group_user.id, group_id: group_user.group_id, - user_id: group_user.user_id, + user_id: group_user.user_id } end end diff --git a/lib/dbservice_web/views/session_view.ex b/lib/dbservice_web/views/session_view.ex index b41d0cf8..b6a01fc2 100644 --- a/lib/dbservice_web/views/session_view.ex +++ b/lib/dbservice_web/views/session_view.ex @@ -34,7 +34,7 @@ defmodule DbserviceWeb.SessionView do redirection: session.redirection, popup_form: session.popup_form, signup_form_id: session.signup_form_id, - popup_form_id: session.popup_form_id, + popup_form_id: session.popup_form_id } end end From 7f3c8aad96c27cff03fdcbba5cf70cf16926b220 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Wed, 20 Mar 2024 13:29:16 +0530 Subject: [PATCH 38/54] formatting --- lib/dbservice_web/controllers/group_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dbservice_web/controllers/group_controller.ex b/lib/dbservice_web/controllers/group_controller.ex index d6848367..aecf2b8d 100644 --- a/lib/dbservice_web/controllers/group_controller.ex +++ b/lib/dbservice_web/controllers/group_controller.ex @@ -31,7 +31,7 @@ defmodule DbserviceWeb.GroupController do get("/api/group") parameters do - params(:query, :string, "The type of the group", required: false, name: "type") + params(:query, :string, "The type of group", required: false, name: "type") params(:query, :integer, "The child id of the group", required: false, From 0845e22167da5d45101a7a1abf8ff13ab4ec826a Mon Sep 17 00:00:00 2001 From: Bahugunajii Date: Wed, 20 Mar 2024 14:48:16 +0530 Subject: [PATCH 39/54] fixed formatting --- lib/dbservice_web/controllers/group_controller.ex | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/dbservice_web/controllers/group_controller.ex b/lib/dbservice_web/controllers/group_controller.ex index aecf2b8d..e6bbe65f 100644 --- a/lib/dbservice_web/controllers/group_controller.ex +++ b/lib/dbservice_web/controllers/group_controller.ex @@ -139,9 +139,7 @@ defmodule DbserviceWeb.GroupController do parameters do groupId(:path, :integer, "The id of the group record", required: true) - body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", - required: true - ) + body(:body, Schema.ref(:UserIds), "List of user ids to update for the group", required: true) end response(200, "OK", Schema.ref(:GroupUsers)) From 38cd518346fafb0748de002fc2a04c4c501c97da Mon Sep 17 00:00:00 2001 From: Krrupa <25496389+sudheshna-donthineni@users.noreply.github.com> Date: Wed, 20 Mar 2024 14:53:53 +0530 Subject: [PATCH 40/54] Update session.ex --- lib/dbservice/sessions/session.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/dbservice/sessions/session.ex b/lib/dbservice/sessions/session.ex index 3406b2ab..60d22166 100644 --- a/lib/dbservice/sessions/session.ex +++ b/lib/dbservice/sessions/session.ex @@ -70,7 +70,6 @@ defmodule Dbservice.Sessions.Session do ]) |> validate_required([ :name, - :session_id, :start_time, :platform ]) From f0b8ccf6985682d42d7099e590057b4e042da398 Mon Sep 17 00:00:00 2001 From: Bahugunajii Date: Thu, 21 Mar 2024 11:23:03 +0530 Subject: [PATCH 41/54] updated readme --- docs/INSTALLATION.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index ba743526..b7b98bb1 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -80,3 +80,17 @@ production_db_password="xxx" ## Editor Support For enhanced development experience with Elixir, consider installing [`ElixirLS: Elixir support and debugger`](https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls) from the Visual Studio Marketplace. + +### ElixirLS support matrix + +| OTP Versions | Elixir Versions | Supports ElixirLS | +| :-------------: | :-------------: | :---------------: | +| any | <= 1.12 | No | +| 22 | 1.12 | Yes | +| 23 | 1.12 - 1.14 | Yes | +| 24 | 1.12 - 1.16 | Yes | +| 25 | 1.13.4 - 1.16 | Yes | +| 26.0.0 - 26.0.1 | any | No | +| 26.0.2 - 26.1.2 | 1.14.5 - 1.16 | *nix only | +| >= 26.2.0 | 1.14.5 - 1.16 | Yes | +| any | 1.15.5 | Yes | From 18e606aaedac286fc2a2a3de90d3e158d44e0f2b Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 11:35:41 +0530 Subject: [PATCH 42/54] bug in session --- lib/dbservice/sessions/session.ex | 4 +--- lib/dbservice_web/controllers/session_controller.ex | 2 ++ lib/dbservice_web/swagger_schemas/session.ex | 4 +--- lib/dbservice_web/views/session_view.ex | 1 + 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/dbservice/sessions/session.ex b/lib/dbservice/sessions/session.ex index 3406b2ab..a4eb507f 100644 --- a/lib/dbservice/sessions/session.ex +++ b/lib/dbservice/sessions/session.ex @@ -6,7 +6,6 @@ defmodule Dbservice.Sessions.Session do alias Dbservice.Users.User alias Dbservice.Groups.Group - alias Dbservice.FormSchemas.FormSchema alias Dbservice.Sessions.SessionSchedule schema "session" do @@ -37,7 +36,6 @@ defmodule Dbservice.Sessions.Session do many_to_many(:users, User, join_through: "user_session", on_replace: :delete) many_to_many(:group, Group, join_through: "group_session", on_replace: :delete) - belongs_to(:form_schema, FormSchema) has_many(:session_schedule, SessionSchedule) end @@ -64,7 +62,7 @@ defmodule Dbservice.Sessions.Session do :signup_form, :id_generation, :redirection, - :pop_up_form, + :popup_form, :popup_form_id, :signup_form_id ]) diff --git a/lib/dbservice_web/controllers/session_controller.ex b/lib/dbservice_web/controllers/session_controller.ex index 6521784c..0bb75b4b 100644 --- a/lib/dbservice_web/controllers/session_controller.ex +++ b/lib/dbservice_web/controllers/session_controller.ex @@ -70,7 +70,9 @@ defmodule DbserviceWeb.SessionController do end end) + IO.inspect(query) session = Repo.all(query) + IO.inspect(session) render(conn, "index.json", session: session) end diff --git a/lib/dbservice_web/swagger_schemas/session.ex b/lib/dbservice_web/swagger_schemas/session.ex index 668749ca..a1d10267 100644 --- a/lib/dbservice_web/swagger_schemas/session.ex +++ b/lib/dbservice_web/swagger_schemas/session.ex @@ -23,7 +23,6 @@ defmodule DbserviceWeb.SwaggerSchema.Session do created_by_id(:integer, "User ID for the session creator") is_active(:boolean, "Tells whether session is active or not") session_id(:string, "Id for the session") - form_schema_id(:string, "Id for the form schema") type(:string, "Type of session") auth_type(:string, "Authentication methods used for session") activate_signup(:boolean, "Is sign up allowed for this session") @@ -50,8 +49,7 @@ defmodule DbserviceWeb.SwaggerSchema.Session do owner_id: 2, created_by_id: 1, is_active: true, - session_id: "c714-e1d4-5a42-0f9f-36b3", - form_schema_id: 1 + session_id: "c714-e1d4-5a42-0f9f-36b3" }) end } diff --git a/lib/dbservice_web/views/session_view.ex b/lib/dbservice_web/views/session_view.ex index b6a01fc2..aab6f0f5 100644 --- a/lib/dbservice_web/views/session_view.ex +++ b/lib/dbservice_web/views/session_view.ex @@ -3,6 +3,7 @@ defmodule DbserviceWeb.SessionView do alias DbserviceWeb.SessionView def render("index.json", %{session: session}) do + IO.inspect(session) render_many(session, SessionView, "session.json") end From b98e21f0924cc8c7acf608535a1f08349cba895e Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 11:43:17 +0530 Subject: [PATCH 43/54] removed logs --- lib/dbservice_web/controllers/session_controller.ex | 2 -- lib/dbservice_web/views/session_view.ex | 1 - 2 files changed, 3 deletions(-) diff --git a/lib/dbservice_web/controllers/session_controller.ex b/lib/dbservice_web/controllers/session_controller.ex index 0bb75b4b..6521784c 100644 --- a/lib/dbservice_web/controllers/session_controller.ex +++ b/lib/dbservice_web/controllers/session_controller.ex @@ -70,9 +70,7 @@ defmodule DbserviceWeb.SessionController do end end) - IO.inspect(query) session = Repo.all(query) - IO.inspect(session) render(conn, "index.json", session: session) end diff --git a/lib/dbservice_web/views/session_view.ex b/lib/dbservice_web/views/session_view.ex index aab6f0f5..b6a01fc2 100644 --- a/lib/dbservice_web/views/session_view.ex +++ b/lib/dbservice_web/views/session_view.ex @@ -3,7 +3,6 @@ defmodule DbserviceWeb.SessionView do alias DbserviceWeb.SessionView def render("index.json", %{session: session}) do - IO.inspect(session) render_many(session, SessionView, "session.json") end From ef4e6037a1487a9b04265d695174d01b0890bb04 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 12:19:28 +0530 Subject: [PATCH 44/54] product controller --- lib/dbservice/form_schemas/form_schema.ex | 2 - .../controllers/product_controller.ex | 120 ++++++++++++++++++ lib/dbservice_web/router.ex | 1 + lib/dbservice_web/swagger_schemas/product.ex | 49 +++++++ lib/dbservice_web/views/product_view.ex | 26 ++++ 5 files changed, 196 insertions(+), 2 deletions(-) create mode 100644 lib/dbservice_web/controllers/product_controller.ex create mode 100644 lib/dbservice_web/swagger_schemas/product.ex create mode 100644 lib/dbservice_web/views/product_view.ex diff --git a/lib/dbservice/form_schemas/form_schema.ex b/lib/dbservice/form_schemas/form_schema.ex index 5ce9608b..b5d807ba 100644 --- a/lib/dbservice/form_schemas/form_schema.ex +++ b/lib/dbservice/form_schemas/form_schema.ex @@ -12,8 +12,6 @@ defmodule Dbservice.FormSchemas.FormSchema do field(:attributes, :map) timestamps() - - has_many(:session, Session) end @doc false diff --git a/lib/dbservice_web/controllers/product_controller.ex b/lib/dbservice_web/controllers/product_controller.ex new file mode 100644 index 00000000..c3488a7d --- /dev/null +++ b/lib/dbservice_web/controllers/product_controller.ex @@ -0,0 +1,120 @@ +defmodule DbserviceWeb.ProductController do + use DbserviceWeb, :controller + + import Ecto.Query + alias Dbservice.Repo + alias Dbservice.Products + alias Dbservice.Products.Product + + action_fallback DbserviceWeb.FallbackController + + use PhoenixSwagger + + alias DbserviceWeb.SwaggerSchema.Product, as: SwaggerSchemaProduct + + def swagger_definitions do + # merge the required definitions in a pair at a time using the Map.merge/2 function + Map.merge(SwaggerSchemaProduct.product(), SwaggerSchemaProduct.products()) + end + + swagger_path :index do + get("/api/product") + + parameters do + params(:query, :string, "The name the product", required: false, name: "name") + end + + response(200, "OK", Schema.ref(:Products)) + end + + def index(conn, params) do + query = + from m in Product, + order_by: [asc: m.id], + offset: ^params["offset"], + limit: ^params["limit"] + + query = + Enum.reduce(params, query, fn {key, value}, acc -> + case String.to_existing_atom(key) do + :offset -> acc + :limit -> acc + atom -> from u in acc, where: field(u, ^atom) == ^value + end + end) + + product = Repo.all(query) + render(conn, "index.json", product: product) + end + + swagger_path :create do + post("/api/product") + + parameters do + body(:body, Schema.ref(:Product), "Product to create", required: true) + end + + response(201, "Created", Schema.ref(:Product)) + end + + def create(conn, params) do + with {:ok, %Product{} = product} <- Products.create_product(params) do + conn + |> put_status(:created) + |> put_resp_header("location", Routes.product_path(conn, :show, product)) + |> render("show.json", product: product) + end + end + + swagger_path :show do + get("/api/product/{productId}") + + parameters do + productId(:path, :integer, "The id of the product record", required: true) + end + + response(200, "OK", Schema.ref(:Product)) + end + + def show(conn, %{"id" => id}) do + product = Products.get_product!(id) + render(conn, "show.json", product: product) + end + + swagger_path :update do + patch("/api/product/{productId}") + + parameters do + productId(:path, :integer, "The id of the product record", required: true) + body(:body, Schema.ref(:Product), "Product to create", required: true) + end + + response(200, "Updated", Schema.ref(:Product)) + end + + def update(conn, params) do + product = Products.get_product!(params["id"]) + + with {:ok, %Product{} = product} <- Products.update_product(product, params) do + render(conn, "show.json", product: product) + end + end + + swagger_path :delete do + PhoenixSwagger.Path.delete("/api/product/{productId}") + + parameters do + productId(:path, :integer, "The id of the product record", required: true) + end + + response(204, "No Content") + end + + def delete(conn, %{"id" => id}) do + product = Products.get_product!(id) + + with {:ok, %Product{}} <- Products.delete_product(product) do + send_resp(conn, :no_content, "") + end + end +end diff --git a/lib/dbservice_web/router.ex b/lib/dbservice_web/router.ex index 00db9a8e..4fd6fa1e 100644 --- a/lib/dbservice_web/router.ex +++ b/lib/dbservice_web/router.ex @@ -26,6 +26,7 @@ defmodule DbserviceWeb.Router do resources("/session-occurrence", SessionOccurenceController, except: [:new, :edit]) resources("/user-session", UserSessionController, except: [:new, :edit]) resources("/group-session", GroupSessionController, except: [:new, :edit]) + resources("/product", ProductController) resources("/program", ProgramController, except: [:new, :edit]) resources("/batch", BatchController, except: [:new, :edit]) resources("/group", GroupController, except: [:new, :edit]) diff --git a/lib/dbservice_web/swagger_schemas/product.ex b/lib/dbservice_web/swagger_schemas/product.ex new file mode 100644 index 00000000..290569c9 --- /dev/null +++ b/lib/dbservice_web/swagger_schemas/product.ex @@ -0,0 +1,49 @@ +defmodule DbserviceWeb.SwaggerSchema.Product do + @moduledoc false + + use PhoenixSwagger + + def product do + %{ + Product: + swagger_schema do + title("Product") + description("A product in application") + + properties do + name(:name, "The name of a product") + mode(:string, "Mode of a product") + model(:string, "Product Model") + tech_modules(:string, "Tech Modules being used in the product") + type(:string, "Product type") + led_by(:string, "Who is leading the product") + goal(:string, "Goal of the product") + code(:string, "Product code") + end + + example(%{ + name: "TP-Sync", + mode: "Offline", + model: "Live Classes", + tech_modules: "Live Classes, Quizzes", + type: "Test Prep", + led_by: "AF", + goal: "", + code: "TP-Sync" + }) + end + } + end + + def products do + %{ + Products: + swagger_schema do + title("Products") + description("All the products") + type(:array) + items(Schema.ref(:Product)) + end + } + end +end diff --git a/lib/dbservice_web/views/product_view.ex b/lib/dbservice_web/views/product_view.ex new file mode 100644 index 00000000..5d47767a --- /dev/null +++ b/lib/dbservice_web/views/product_view.ex @@ -0,0 +1,26 @@ +defmodule DbserviceWeb.ProductView do + use DbserviceWeb, :view + alias DbserviceWeb.ProductView + + def render("index.json", %{product: product}) do + render_many(product, ProductView, "product.json") + end + + def render("show.json", %{product: product}) do + render_one(product, ProductView, "product.json") + end + + def render("product.json", %{product: product}) do + %{ + id: product.id, + name: product.name, + mode: product.mode, + model: product.model, + tech_modules: product.tech_modules, + type: product.type, + led_by: product.led_by, + goal: product.goal, + code: product.code + } + end +end From bc93f69b7f2aa3a699f84eb220ea40a99c293fb2 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 12:21:23 +0530 Subject: [PATCH 45/54] product controller --- lib/dbservice/form_schemas/form_schema.ex | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/dbservice/form_schemas/form_schema.ex b/lib/dbservice/form_schemas/form_schema.ex index b5d807ba..409997ea 100644 --- a/lib/dbservice/form_schemas/form_schema.ex +++ b/lib/dbservice/form_schemas/form_schema.ex @@ -4,8 +4,6 @@ defmodule Dbservice.FormSchemas.FormSchema do use Ecto.Schema import Ecto.Changeset - alias Dbservice.Sessions.Session - schema "form_schema" do field(:name, :string) field(:meta_data, :map) From 0b6d5e0edf0c7e529ae106ca2f82c227e290f53c Mon Sep 17 00:00:00 2001 From: Bahugunajii Date: Thu, 21 Mar 2024 17:42:30 +0530 Subject: [PATCH 46/54] added recommended version section --- docs/INSTALLATION.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index b7b98bb1..3777c069 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -44,6 +44,13 @@ Install the following packages using your favorite package manager. Links are pr CREATE EXTENSION "uuid-ossp"; ``` +### Recommended Versions + +For development, we recommend using the following versions: + +- Elixir: 1.14.2 +- Erlang/OTP: 25 + ## Installation steps Follow the steps below to set up the repo for development From ed1db82a569ac87c5068376a5b8830ae5f72b2df Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 19:42:01 +0530 Subject: [PATCH 47/54] student + teacher --- lib/dbservice/users/student.ex | 3 +++ lib/dbservice/users/teacher.ex | 4 +++- lib/dbservice_web/views/program_view.ex | 3 ++- lib/dbservice_web/views/student_view.ex | 1 + lib/dbservice_web/views/teacher_view.ex | 4 ---- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/dbservice/users/student.ex b/lib/dbservice/users/student.ex index caf7b3a1..444d4544 100644 --- a/lib/dbservice/users/student.ex +++ b/lib/dbservice/users/student.ex @@ -49,6 +49,8 @@ defmodule Dbservice.Users.Student do field(:planned_competitive_exams, {:array, :integer}) belongs_to(:user, User) + belongs_to(:grade, Grade) + has_many(:student_exam_record, StudentExamRecord) timestamps() @@ -59,6 +61,7 @@ defmodule Dbservice.Users.Student do |> cast(attrs, [ :student_id, :user_id, + :grade_id, :father_name, :father_phone, :father_education_level, diff --git a/lib/dbservice/users/teacher.ex b/lib/dbservice/users/teacher.ex index 29c89b9e..2563c6c8 100644 --- a/lib/dbservice/users/teacher.ex +++ b/lib/dbservice/users/teacher.ex @@ -11,6 +11,7 @@ defmodule Dbservice.Users.Teacher do field :teacher_id, :string belongs_to :user, User + belongs_to :subject, Subject timestamps() end @@ -21,7 +22,8 @@ defmodule Dbservice.Users.Teacher do |> cast(attrs, [ :user_id, :designation, - :teacher_id + :teacher_id, + :subject_id ]) |> validate_required([:user_id, :teacher_id]) end diff --git a/lib/dbservice_web/views/program_view.ex b/lib/dbservice_web/views/program_view.ex index 4658886c..cd274dff 100644 --- a/lib/dbservice_web/views/program_view.ex +++ b/lib/dbservice_web/views/program_view.ex @@ -17,7 +17,8 @@ defmodule DbserviceWeb.ProgramView do target_outreach: program.target_outreach, donor: program.donor, state: program.state, - product_id: program.product_id + product_id: program.product_id, + auth_group_id: program.auth_group_id } end end diff --git a/lib/dbservice_web/views/student_view.ex b/lib/dbservice_web/views/student_view.ex index a6d65edf..4cd10780 100644 --- a/lib/dbservice_web/views/student_view.ex +++ b/lib/dbservice_web/views/student_view.ex @@ -26,6 +26,7 @@ defmodule DbserviceWeb.StudentView do %{ id: student.id, student_id: student.student_id, + grade_id: student.grade_id, father_name: student.father_name, father_phone: student.father_phone, father_education_level: student.father_education_level, diff --git a/lib/dbservice_web/views/teacher_view.ex b/lib/dbservice_web/views/teacher_view.ex index 84729c6c..1a5a1757 100644 --- a/lib/dbservice_web/views/teacher_view.ex +++ b/lib/dbservice_web/views/teacher_view.ex @@ -23,10 +23,6 @@ defmodule DbserviceWeb.TeacherView do id: teacher.id, designation: teacher.designation, subject: teacher.subject, - grade: teacher.grade, - user_id: teacher.user_id, - school_id: teacher.school_id, - program_manager_id: teacher.program_manager_id, user: render_one(teacher.user, UserView, "user.json") } end From 686b7e77efab385a6e8207bf537cfe542da4cc88 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 19:44:43 +0530 Subject: [PATCH 48/54] student + teacher --- .../migrations/20240319071557_alter_user_teacher_tables.exs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs b/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs index 619384bd..52a322d7 100644 --- a/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs +++ b/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs @@ -4,10 +4,14 @@ defmodule Dbservice.Repo.Migrations.AlterUserTeacherTables do def change do alter table("user") do remove :middle_name + modify :subject_id, references("subject") + end + + alter table("student") do + add :grade_id, references("grade") end alter table("teacher") do - remove :subject remove :grade remove :school_id remove :program_manager_id From aa66b13bd026c2270001468066c21a4f23cd1920 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 19:50:19 +0530 Subject: [PATCH 49/54] auth group in batch not program --- lib/dbservice/batches/batch.ex | 6 ++++-- lib/dbservice/programs/program.ex | 5 +---- lib/dbservice_web/views/program_view.ex | 3 +-- priv/repo/migrations/20240318182647_update_batch_table.exs | 1 + .../repo/migrations/20240319065634_update_program_table.exs | 3 +-- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/dbservice/batches/batch.ex b/lib/dbservice/batches/batch.ex index ecb4dfc2..1ec29654 100644 --- a/lib/dbservice/batches/batch.ex +++ b/lib/dbservice/batches/batch.ex @@ -8,6 +8,7 @@ defmodule Dbservice.Batches.Batch do alias Dbservice.Groups.Group alias Dbservice.EnrollmentRecords.EnrollmentRecord alias Dbservice.Sessions.SessionSchedule + alias Dbservice.Groups.AuthGroup schema "batch" do field :name, :string @@ -18,7 +19,7 @@ defmodule Dbservice.Batches.Batch do field :end_date, :date belongs_to :program, Program - + belongs_to :auth_group, AuthGroup has_many :group, Group, foreign_key: :child_id, where: [type: "batch"] has_many :enrollment_record, EnrollmentRecord, @@ -40,7 +41,8 @@ defmodule Dbservice.Batches.Batch do :parent_id, :start_date, :end_date, - :program_id + :program_id, + :auth_group_id ]) |> validate_required([:name]) end diff --git a/lib/dbservice/programs/program.ex b/lib/dbservice/programs/program.ex index 8644c778..158fd6b3 100644 --- a/lib/dbservice/programs/program.ex +++ b/lib/dbservice/programs/program.ex @@ -4,7 +4,6 @@ defmodule Dbservice.Programs.Program do use Ecto.Schema import Ecto.Changeset - alias Dbservice.Groups.AuthGroup alias Dbservice.Products.Product alias Dbservice.Groups.Group alias Dbservice.EnrollmentRecords.EnrollmentRecord @@ -15,7 +14,6 @@ defmodule Dbservice.Programs.Program do field :donor, :string field :state, :string - belongs_to :auth_group, AuthGroup belongs_to :product, Product has_many :group, Group, foreign_key: :child_id, where: [type: "program"] @@ -34,8 +32,7 @@ defmodule Dbservice.Programs.Program do :target_outreach, :donor, :state, - :product_id, - :auth_group_id + :product_id ]) |> validate_required([:name]) end diff --git a/lib/dbservice_web/views/program_view.ex b/lib/dbservice_web/views/program_view.ex index cd274dff..4658886c 100644 --- a/lib/dbservice_web/views/program_view.ex +++ b/lib/dbservice_web/views/program_view.ex @@ -17,8 +17,7 @@ defmodule DbserviceWeb.ProgramView do target_outreach: program.target_outreach, donor: program.donor, state: program.state, - product_id: program.product_id, - auth_group_id: program.auth_group_id + product_id: program.product_id } end end diff --git a/priv/repo/migrations/20240318182647_update_batch_table.exs b/priv/repo/migrations/20240318182647_update_batch_table.exs index e48d0a56..2ee9df11 100644 --- a/priv/repo/migrations/20240318182647_update_batch_table.exs +++ b/priv/repo/migrations/20240318182647_update_batch_table.exs @@ -6,6 +6,7 @@ defmodule Dbservice.Repo.Migrations.UpdateBatchTable do add :start_date, :date add :end_date, :date add :program_id, references(:program) + add :auth_group_id, references(:auth_group) end drop table(:batch_program) diff --git a/priv/repo/migrations/20240319065634_update_program_table.exs b/priv/repo/migrations/20240319065634_update_program_table.exs index 754623b4..b3853f69 100644 --- a/priv/repo/migrations/20240319065634_update_program_table.exs +++ b/priv/repo/migrations/20240319065634_update_program_table.exs @@ -2,8 +2,6 @@ defmodule Dbservice.Repo.Migrations.UpdateProgramTable do use Ecto.Migration def change do - rename table("program"), :group_id, to: :auth_group_id - alter table("program") do remove :type remove :sub_type @@ -11,6 +9,7 @@ defmodule Dbservice.Repo.Migrations.UpdateProgramTable do remove :start_date remove :product_used remove :model + remove :group_id end end end From a9f5b2b6825c3ae9f1976f8d07780109aef3222d Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 19:52:29 +0530 Subject: [PATCH 50/54] auth group in batch not program --- lib/dbservice_web/views/batch_view.ex | 3 ++- .../20240318182647_update_batch_table.exs | 14 -------------- .../20240319064218_update_group_tables.exs | 9 +++++++++ .../20240319071557_alter_user_teacher_tables.exs | 4 +++- 4 files changed, 14 insertions(+), 16 deletions(-) delete mode 100644 priv/repo/migrations/20240318182647_update_batch_table.exs diff --git a/lib/dbservice_web/views/batch_view.ex b/lib/dbservice_web/views/batch_view.ex index 5322b95a..d24879b8 100644 --- a/lib/dbservice_web/views/batch_view.ex +++ b/lib/dbservice_web/views/batch_view.ex @@ -19,7 +19,8 @@ defmodule DbserviceWeb.BatchView do parent_id: batch.parent_id, start_date: batch.start_date, end_date: batch.end_date, - program_id: batch.program_id + program_id: batch.program_id, + auth_group_id: batch.auth_group_id } end end diff --git a/priv/repo/migrations/20240318182647_update_batch_table.exs b/priv/repo/migrations/20240318182647_update_batch_table.exs deleted file mode 100644 index 2ee9df11..00000000 --- a/priv/repo/migrations/20240318182647_update_batch_table.exs +++ /dev/null @@ -1,14 +0,0 @@ -defmodule Dbservice.Repo.Migrations.UpdateBatchTable do - use Ecto.Migration - - def change do - alter table(:batch) do - add :start_date, :date - add :end_date, :date - add :program_id, references(:program) - add :auth_group_id, references(:auth_group) - end - - drop table(:batch_program) - end -end diff --git a/priv/repo/migrations/20240319064218_update_group_tables.exs b/priv/repo/migrations/20240319064218_update_group_tables.exs index 06616653..54bec38e 100644 --- a/priv/repo/migrations/20240319064218_update_group_tables.exs +++ b/priv/repo/migrations/20240319064218_update_group_tables.exs @@ -4,5 +4,14 @@ defmodule Dbservice.Repo.Migrations.UpdateGroupTables do def change do rename table("group"), to: table("auth_group") rename table("group_type"), to: table("group") + + alter table(:batch) do + add :start_date, :date + add :end_date, :date + add :program_id, references(:program) + add :auth_group_id, references(:auth_group) + end + + drop table(:batch_program) end end diff --git a/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs b/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs index 52a322d7..42297166 100644 --- a/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs +++ b/priv/repo/migrations/20240319071557_alter_user_teacher_tables.exs @@ -4,7 +4,6 @@ defmodule Dbservice.Repo.Migrations.AlterUserTeacherTables do def change do alter table("user") do remove :middle_name - modify :subject_id, references("subject") end alter table("student") do @@ -12,8 +11,11 @@ defmodule Dbservice.Repo.Migrations.AlterUserTeacherTables do end alter table("teacher") do + add :subject_id, references("subject") + remove :grade remove :school_id + remove :subject remove :program_manager_id end end From 06e839bfb90641bb0a84a437933b361c96e85ea1 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 19:58:15 +0530 Subject: [PATCH 51/54] auth group in batch not program --- lib/dbservice/groups/auth_group.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/dbservice/groups/auth_group.ex b/lib/dbservice/groups/auth_group.ex index 8e315185..2d44221d 100644 --- a/lib/dbservice/groups/auth_group.ex +++ b/lib/dbservice/groups/auth_group.ex @@ -4,7 +4,7 @@ defmodule Dbservice.Groups.AuthGroup do use Ecto.Schema import Ecto.Changeset - alias Dbservice.Programs.Program + alias Dbservice.Batches.Batch alias Dbservice.Groups.Group alias Dbservice.EnrollmentRecords.EnrollmentRecord @@ -14,7 +14,7 @@ defmodule Dbservice.Groups.AuthGroup do field :locale, :string field :locale_data, :map - has_many :program, Program + has_many :batch, Batch has_many :group, Group, foreign_key: :child_id, where: [type: "auth-group"] has_many :enrollment_record, EnrollmentRecord, From ba1fdc546089406bd0e7ea47315a617250f723c0 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 22:48:45 +0530 Subject: [PATCH 52/54] teacher --- lib/dbservice_web/views/teacher_view.ex | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/dbservice_web/views/teacher_view.ex b/lib/dbservice_web/views/teacher_view.ex index 1a5a1757..31c0ff46 100644 --- a/lib/dbservice_web/views/teacher_view.ex +++ b/lib/dbservice_web/views/teacher_view.ex @@ -2,6 +2,7 @@ defmodule DbserviceWeb.TeacherView do use DbserviceWeb, :view alias DbserviceWeb.TeacherView alias DbserviceWeb.UserView + alias DbserviceWeb.SubjectView alias Dbservice.Repo def render("index.json", %{teacher: teacher}) do @@ -22,7 +23,8 @@ defmodule DbserviceWeb.TeacherView do %{ id: teacher.id, designation: teacher.designation, - subject: teacher.subject, + teacher_id: teacher.teacher_id, + subject: render_one(teacher.subject, SubjectView, "subject.json"), user: render_one(teacher.user, UserView, "user.json") } end @@ -32,6 +34,7 @@ defmodule DbserviceWeb.TeacherView do id: teacher.id, designation: teacher.designation, teacher_id: teacher.teacher_id, + subject: render_one(teacher.subject, SubjectView, "subject.json"), user: render_one(teacher.user, UserView, "user.json") } end From b86827d817a029e30a6d4eb3168249f95103fea1 Mon Sep 17 00:00:00 2001 From: Krrupa <“sudonthineni@gmail.com@users.noreply.github.com”> Date: Thu, 21 Mar 2024 22:53:28 +0530 Subject: [PATCH 53/54] teacher view --- lib/dbservice/users/teacher.ex | 1 + lib/dbservice_web/controllers/teacher_controller.ex | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/dbservice/users/teacher.ex b/lib/dbservice/users/teacher.ex index 2563c6c8..f48f737d 100644 --- a/lib/dbservice/users/teacher.ex +++ b/lib/dbservice/users/teacher.ex @@ -5,6 +5,7 @@ defmodule Dbservice.Users.Teacher do import Ecto.Changeset alias Dbservice.Users.User + alias Dbservice.Subjects.Subject schema "teacher" do field :designation, :string diff --git a/lib/dbservice_web/controllers/teacher_controller.ex b/lib/dbservice_web/controllers/teacher_controller.ex index 8aed932b..9ed0413a 100644 --- a/lib/dbservice_web/controllers/teacher_controller.ex +++ b/lib/dbservice_web/controllers/teacher_controller.ex @@ -56,7 +56,7 @@ defmodule DbserviceWeb.TeacherController do end end) - teacher = Repo.all(query) |> Repo.preload([:user]) + teacher = Repo.all(query) |> Repo.preload([:user]) |> Repo.preload([:subject]) render(conn, "index.json", teacher: teacher) end From 5bb168005f8846e6a5ad6694692a109a7a64ff3c Mon Sep 17 00:00:00 2001 From: Bahugunajii Date: Fri, 22 Mar 2024 11:14:44 +0530 Subject: [PATCH 54/54] removed branch name from CD --- .github/workflows/staging_deploy.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/staging_deploy.yml b/.github/workflows/staging_deploy.yml index a7b1d09c..083e7bfd 100644 --- a/.github/workflows/staging_deploy.yml +++ b/.github/workflows/staging_deploy.yml @@ -24,7 +24,6 @@ jobs: USER_NAME: ${{ secrets.USER_NAME }} run: | - branch_name="${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" echo "$PRIVATE_KEY" > private_key && chmod 600 private_key ssh -o StrictHostKeyChecking=no -i private_key ${USER_NAME}@${HOSTNAME} " cd /var/www/html/db-service/config @@ -42,7 +41,7 @@ jobs: if [ -f /var/www/html/db-service/priv/static/swagger.json ]; then sudo rm /var/www/html/db-service/priv/static/swagger.json fi - sudo git pull origin \"$branch_name\" && + sudo git pull origin main && sudo MIX_ENV=prod mix deps.get && sudo MIX_ENV=prod mix deps.compile && sudo MIX_ENV=prod mix ecto.migrate &&