Skip to content

Commit

Permalink
Merge 7e142b8 into 6caa102
Browse files Browse the repository at this point in the history
  • Loading branch information
KrainNeun committed Nov 22, 2019
2 parents 6caa102 + 7e142b8 commit 2617627
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 1 deletion.
9 changes: 9 additions & 0 deletions RequestSample_accounts.http
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,13 @@ GET {{url}}/api/ops/users/1 HTTP/1.1
Content-Type: application/json
Authorization: {{token}}

### 論理削除
PUT {{url}}/api/delete-users/1 HTTP/1.1
Content-Type: application/json
Authorization: {{token}}

{
"lock_version": 2
}

###
9 changes: 9 additions & 0 deletions RequestSample_organizations.http
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,16 @@ Authorization: {{token}}
"lock_version": 5
}

###
PUT {{url}}/api/delete-organizations/1 HTTP/1.1
Content-Type: application/json
Authorization: {{token}}

{
"lock_version": 1
}

###



Expand Down
15 changes: 15 additions & 0 deletions lib/materia/accounts/accounts.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1372,4 +1372,19 @@ defmodule Materia.Accounts do
def delete_account(%Account{} = account) do
@repo.delete(account)
end

@doc """
Logical Delete a User.
iex(1)> user = Materia.Accounts.get_user!(1)
iex(2)> {:ok, result} = Materia.Accounts.logical_delete(nil, user, 2)
iex(3)> view = MateriaWeb.UserView.render("show.json", %{user: result})
iex(4)> %{status: view.status, lock_version: view.lock_version}
%{status: 9, lock_version: 3}
"""
def logical_delete(_result, user, lock_version) do
user
|> update_user(%{"status" => User.status().expired, "lock_version" => lock_version})
end
end
14 changes: 14 additions & 0 deletions lib/materia/organizations/organizations.ex
Original file line number Diff line number Diff line change
Expand Up @@ -395,4 +395,18 @@ defmodule Materia.Organizations do
repo = Application.get_env(:materia, :repo)
repo.delete(organization)
end

@doc """
Logical Delete a Organization.
iex(1)> organization = Materia.Organizations.get_organization!(1)
iex(2)> {:ok, result} = Materia.Organizations.logical_delete(nil, organization, 1)
iex(3)> view = MateriaWeb.OrganizationView.render("show.json", %{organization: result})
iex(4)> %{status: view.status, lock_version: view.lock_version}
%{status: 9, lock_version: 2}
"""
def logical_delete(_result, organization, lock_version) do
organization
|> update_organization(%{"status" => Organization.status().unactive, "lock_version" => lock_version})
end
end
14 changes: 14 additions & 0 deletions lib/materia_web/controllers/organization_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,18 @@ defmodule MateriaWeb.OrganizationController do
send_resp(conn, :no_content, "")
end
end

def logical_delete(conn, %{"id" => id, "lock_version" => lock_version}) do
organization = Organizations.get_organization!(id)

MateriaWeb.ControllerBase.transaction_flow(conn, :organization, Organizations, :logical_delete, [
organization,
lock_version
])
end

def list_organizations_by_params(conn, params) do
organizations = Organizations.list_organizations_by_params(params)
render(conn, "index.json", organizations: organizations)
end
end
5 changes: 5 additions & 0 deletions lib/materia_web/controllers/user_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,9 @@ defmodule MateriaWeb.UserController do
Materia.UserAuthenticator.revoke(token)
conn
end

def logical_delete(conn, %{"id" => id, "lock_version" => lock_version}) do
user = Accounts.get_user!(id)
MateriaWeb.ControllerBase.transaction_flow(conn, :user, Accounts, :logical_delete, [user, lock_version])
end
end
3 changes: 3 additions & 0 deletions lib/materia_web/router.ex
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ defmodule MateriaWeb.Router do
post("/search-accounts", AccountController, :list_accounts_by_params)
resources("/value-definitions", ValueDefinitionController, except: [:new, :edit])
post("/search-definitions", ValueDefinitionController, :list_definitions_by_params)
put("/delete-users/:id", UserController, :logical_delete)
post("/search-organizations", OrganizationController, :list_organizations_by_params)
put("/delete-organizations/:id", OrganizationController, :logical_delete)
end

scope "/api", MateriaWeb do
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ defmodule Materia.Mixfile do
#
# Type `mix help deps` for examples and options.
defp deps do
deps_list = [
[
{:phoenix, "~> 1.3.2"},
{:phoenix_pubsub, "~> 1.0"},
{:plug, "~> 1.5"},
Expand Down

0 comments on commit 2617627

Please sign in to comment.