Skip to content

Commit

Permalink
add delete user endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
nmenag committed Dec 19, 2023
1 parent 1a8cb10 commit 093d859
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 3 deletions.
6 changes: 5 additions & 1 deletion apps/core/lib/core/schema/user.ex
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ defmodule GoEscuelaLms.Core.Schema.User do
field(:birth_date, :date)
field(:role, Ecto.Enum, values: [:organizer, :instructor, :student])
field(:password_hash, :string)
has_many(:enrollments, Enrollment, foreign_key: :user_id)
has_many(:enrollments, Enrollment, foreign_key: :user_id, on_delete: :delete_all)

timestamps()
end
Expand All @@ -39,6 +39,10 @@ defmodule GoEscuelaLms.Core.Schema.User do
|> Repo.update()
end

def delete(%User{} = user) do
user |> Repo.delete()
end

def find(uuid) when uuid in ["", nil], do: nil

def find(uuid) do
Expand Down
11 changes: 10 additions & 1 deletion apps/web/lib/web/controllers/users/users_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ defmodule Web.Users.UsersController do
alias GoEscuelaLms.Core.Schema.User

plug :is_organizer_authorized when action in [:create]
plug :load_user when action in [:update]
plug :load_user when action in [:update, :delete]

@create_params %{
full_name: [type: :string, required: true],
Expand Down Expand Up @@ -44,6 +44,15 @@ defmodule Web.Users.UsersController do
end
end

def delete(conn, _params) do
user = conn.assigns.user

case user |> User.delete() do
{:ok, user} ->
render(conn, :delete, %{user: user})
end
end

defp update_user(user, params) do
user
|> User.update(%{
Expand Down
4 changes: 4 additions & 0 deletions apps/web/lib/web/controllers/users/users_json.ex
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ defmodule Web.Users.UsersJSON do
%{data: data(user)}
end

def delete(%{user: user}) do
%{message: "user deleted", data: data(user)}
end

defp data(%User{} = user) do
%{
email: user.email,
Expand Down
2 changes: 1 addition & 1 deletion apps/web/lib/web/router.ex
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ defmodule Web.Router do
post "/onboarding/organizer", Onboarding.OrganizerController, :create
get "/onboarding/institution_info", Onboarding.InstitutionInfoController, :show

resources "/users", Users.UsersController, only: [:create, :update, :index] do
resources "/users", Users.UsersController, only: [:create, :update, :index, :delete] do
resources "/courses", Courses.CoursesController, only: [:index] do
resources "/enrollments", Enrollments.EnrollmentsController, only: [:create]
end
Expand Down

0 comments on commit 093d859

Please sign in to comment.