Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
667 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
############################################ | ||
# APIリクエストサンプル集 | ||
############################################ | ||
### 認証 / authenticator_path | ||
POST {{url}}/api/sign-in HTTP/1.1 | ||
Content-Type: application/json | ||
|
||
{ | ||
"email": "fugafuga@example.com", | ||
"password": "fugafuga" | ||
} | ||
|
||
> {% | ||
client.global.set("access_token", response.body.access_token); | ||
client.global.set("user_id", response.body.id); | ||
%} | ||
|
||
### 値定義情報取得 | ||
POST {{url}}/api/search-definitions HTTP/1.1 | ||
Content-Type: application/json | ||
Authorization: Bearer {{access_token}} | ||
|
||
{} | ||
|
||
### 値定義情報取得 | ||
POST {{url}}/api/search-definitions HTTP/1.1 | ||
Content-Type: application/json | ||
Authorization: Bearer {{access_token}} | ||
|
||
{ | ||
"and": [{"definition_category": "Test1"}, {"language_code": "JP"}] | ||
} | ||
|
||
### | ||
### 値定義情報取得 | ||
POST {{url}}/api/search-definitions HTTP/1.1 | ||
Content-Type: application/json | ||
Authorization: Bearer {{access_token}} | ||
|
||
{ | ||
"and": [{"language_code": "JP"}], | ||
"or": [{"definition_code": "Test_1_01"}, {"definition_code": "Test_2_02"}] | ||
} | ||
|
||
### |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
defmodule Materia.Definitions do | ||
@moduledoc """ | ||
The Definitions context. | ||
""" | ||
|
||
import Ecto.Query, warn: false | ||
|
||
alias MateriaUtils.Ecto.EctoUtil | ||
alias Materia.Definitions.ValueDefinition | ||
|
||
@repo Application.get_env(:materia, :repo) | ||
|
||
@doc """ | ||
Returns the list of value_definitions. | ||
iex(1)> results = Materia.Definitions.list_value_definitions() | ||
iex(2)> view = MateriaWeb.ValueDefinitionView.render("index.json", %{value_definitions: results}) | ||
iex(3)> view = view |> Enum.map(fn x -> x = Map.delete(x, :id) end) | ||
iex(4)> Enum.count(view) | ||
8 | ||
""" | ||
def list_value_definitions do | ||
@repo.all(ValueDefinition) | ||
|> Enum.sort( | ||
fn x, y -> | ||
x.definition_category < y.definition_category or ( | ||
x.definition_category == y.definition_category and | ||
x.display_sort_no < y.display_sort_no) | ||
end | ||
) | ||
end | ||
|
||
@doc """ | ||
Gets a single value_definition. | ||
iex(1)> results = Materia.Definitions.get_value_definition!(1) | ||
iex(2)> view = MateriaWeb.ValueDefinitionView.render("show.json", %{value_definition: results}) | ||
iex(3)> view = [view] |> Enum.map(fn x -> x = Map.delete(x, :id) end) |> List.first | ||
%{ | ||
definition_abbreviated: "1_1", | ||
definition_category: "Test1", | ||
definition_code: "Test_1_01", | ||
definition_name: "定義1", | ||
definition_value: "定義値1_1", | ||
display_discernment_code: nil, | ||
display_sort_no: 1, | ||
language_code: "JP", | ||
lock_version: 0, | ||
status: 1 | ||
} | ||
""" | ||
def get_value_definition!(id), do: @repo.get!(ValueDefinition, id) | ||
|
||
@doc """ | ||
Creates a value_definition. | ||
iex(1)> attrs = %{"definition_category" => "Test1", "definition_name" => "定義1", "definition_code" => "Test_1_03", "definition_value" => "定義値", "display_sort_no" => 3} | ||
iex(2)> {:ok, results} = Materia.Definitions.create_value_definition(attrs) | ||
iex(3)> view = MateriaWeb.ValueDefinitionView.render("show.json", %{value_definition: results}) | ||
iex(4)> view = [view] |> Enum.map(fn x -> x = Map.delete(x, :id) end) |> List.first | ||
%{ | ||
definition_abbreviated: nil, | ||
definition_category: "Test1", | ||
definition_code: "Test_1_03", | ||
definition_name: "定義1", | ||
definition_value: "定義値", | ||
display_discernment_code: nil, | ||
display_sort_no: 3, | ||
language_code: nil, | ||
lock_version: 0, | ||
status: 1 | ||
} | ||
""" | ||
def create_value_definition(attrs \\ %{}) do | ||
%ValueDefinition{} | ||
|> ValueDefinition.changeset(attrs) | ||
|> @repo.insert() | ||
end | ||
|
||
@doc """ | ||
Updates a value_definition. | ||
iex(1)> attrs = %{"definition_category" => "Test1", "definition_name" => "定義1", "definition_code" => "Test_1_03", "definition_value" => "定義値", "display_sort_no" => 3} | ||
iex(2)> value_definition = Materia.Definitions.get_value_definition!(1) | ||
iex(3)> {:ok, results} = Materia.Definitions.update_value_definition(value_definition, attrs) | ||
iex(4)> view = MateriaWeb.ValueDefinitionView.render("show.json", %{value_definition: results}) | ||
iex(5)> view = [view] |> Enum.map(fn x -> x = Map.delete(x, :id) end) |> List.first | ||
%{ | ||
definition_abbreviated: "1_1", | ||
definition_category: "Test1", | ||
definition_code: "Test_1_03", | ||
definition_name: "定義1", | ||
definition_value: "定義値", | ||
display_discernment_code: nil, | ||
display_sort_no: 3, | ||
language_code: "JP", | ||
lock_version: 1, | ||
status: 1 | ||
} | ||
""" | ||
def update_value_definition(%ValueDefinition{} = value_definition, attrs) do | ||
value_definition | ||
|> ValueDefinition.changeset(attrs) | ||
|> @repo.update() | ||
end | ||
|
||
@doc """ | ||
Deletes a ValueDefinition. | ||
iex(1)> value_definition = Materia.Definitions.get_value_definition!(1) | ||
iex(2)> {:ok, results} = Materia.Definitions.delete_value_definition(value_definition) | ||
iex(3)> Materia.Definitions.list_value_definitions() |> Enum.filter(fn x -> x.id == 1 end) | ||
[] | ||
""" | ||
def delete_value_definition(%ValueDefinition{} = value_definition) do | ||
@repo.delete(value_definition) | ||
end | ||
|
||
@doc """ | ||
Returns an `%Ecto.Changeset{}` for tracking value_definition changes. | ||
""" | ||
def change_value_definition(%ValueDefinition{} = value_definition) do | ||
ValueDefinition.changeset(value_definition, %{}) | ||
end | ||
|
||
@doc """ | ||
汎用検索用エンドポイント | ||
iex(1)> params = %{"and" => [%{"language_code" => "JP"}], "or" => [%{"definition_code" => "Test_1_01"}, %{"definition_code" => "Test_2_02"}]} | ||
iex(1)> results = Materia.Definitions.list_value_definitions_by_params(params) | ||
iex(2)> view = MateriaWeb.ValueDefinitionView.render("index.json", %{value_definitions: results}) | ||
iex(3)> view = view |> Enum.map(fn x -> x = Map.delete(x, :id) end) | ||
%{ | ||
definition_abbreviated: "1_1", | ||
definition_category: "Test1", | ||
definition_code: "Test_1_01", | ||
definition_name: "定義1", | ||
definition_value: "定義値1_1", | ||
display_discernment_code: nil, | ||
display_sort_no: 1, | ||
language_code: "JP", | ||
lock_version: 0, | ||
status: 1 | ||
}, | ||
%{ | ||
definition_abbreviated: "2_2", | ||
definition_category: "Test2", | ||
definition_code: "Test_2_02", | ||
definition_name: "定義2", | ||
definition_value: "定義値2_2", | ||
display_discernment_code: nil, | ||
display_sort_no: 2, | ||
language_code: "JP", | ||
lock_version: 0, | ||
status: 1 | ||
} | ||
] | ||
""" | ||
def list_value_definitions_by_params(params) do | ||
EctoUtil.select_by_param(@repo, ValueDefinition, params) | ||
|> Enum.sort( | ||
fn x, y -> | ||
x.definition_category < y.definition_category or ( | ||
x.definition_category == y.definition_category and | ||
x.display_sort_no < y.display_sort_no) | ||
end | ||
) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
defmodule Materia.Definitions.ValueDefinition do | ||
use Ecto.Schema | ||
import Ecto.Changeset | ||
|
||
|
||
schema "value_definitions" do | ||
field :definition_abbreviated, :string | ||
field :definition_category, :string | ||
field :definition_code, :string | ||
field :definition_name, :string | ||
field :definition_value, :string | ||
field :display_discernment_code, :string | ||
field :display_sort_no, :integer | ||
field :language_code, :string | ||
field :lock_version, :integer, default: 0 | ||
field :status, :integer, default: 1 | ||
|
||
timestamps() | ||
end | ||
|
||
def changeset(value_definition, attrs) do | ||
value_definition | ||
|> cast(attrs, [:definition_category, :definition_name, :definition_code, :definition_value, :definition_abbreviated, :display_sort_no, :display_discernment_code, :language_code, :status, :lock_version]) | ||
|> validate_required([:definition_category, :definition_name, :definition_code, :definition_value, :display_sort_no]) | ||
end | ||
|
||
def update_changeset(value_definition, attrs) do | ||
value_definition | ||
|> cast(attrs, [:definition_category, :definition_name, :definition_code, :definition_value, :definition_abbreviated, :display_sort_no, :display_discernment_code, :language_code, :status, :lock_version]) | ||
|> validate_required([:definition_category, :definition_name, :definition_code, :definition_value, :display_sort_no, :lock_version]) | ||
|> optimistic_lock(:lock_version) | ||
end | ||
end |
47 changes: 47 additions & 0 deletions
47
lib/materia_web/controllers/value_definition_controller.ex
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
defmodule MateriaWeb.ValueDefinitionController do | ||
use MateriaWeb, :controller | ||
|
||
alias Materia.Definitions | ||
alias Materia.Definitions.ValueDefinition | ||
|
||
action_fallback MateriaWeb.FallbackController | ||
|
||
def index(conn, _params) do | ||
value_definitions = Definitions.list_value_definitions() | ||
render(conn, "index.json", value_definitions: value_definitions) | ||
end | ||
|
||
def create(conn, %{"value_definition" => value_definition_params}) do | ||
with {:ok, %ValueDefinition{} = value_definition} <- Definitions.create_value_definition(value_definition_params) do | ||
conn | ||
|> put_status(:created) | ||
|> put_resp_header("location", value_definition_path(conn, :show, value_definition)) | ||
|> render("show.json", value_definition: value_definition) | ||
end | ||
end | ||
|
||
def show(conn, %{"id" => id}) do | ||
value_definition = Definitions.get_value_definition!(id) | ||
render(conn, "show.json", value_definition: value_definition) | ||
end | ||
|
||
def update(conn, %{"id" => id, "value_definition" => value_definition_params}) do | ||
value_definition = Definitions.get_value_definition!(id) | ||
|
||
with {:ok, %ValueDefinition{} = value_definition} <- Definitions.update_value_definition(value_definition, value_definition_params) do | ||
render(conn, "show.json", value_definition: value_definition) | ||
end | ||
end | ||
|
||
def delete(conn, %{"id" => id}) do | ||
value_definition = Definitions.get_value_definition!(id) | ||
with {:ok, %ValueDefinition{}} <- Definitions.delete_value_definition(value_definition) do | ||
send_resp(conn, :no_content, "") | ||
end | ||
end | ||
|
||
def list_definitions_by_params(conn, value_definition_params) do | ||
value_definitions = Definitions.list_value_definitions_by_params(value_definition_params) | ||
render(conn, "index.json", value_definitions: value_definitions) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
defmodule MateriaWeb.ValueDefinitionView do | ||
use MateriaWeb, :view | ||
alias MateriaWeb.ValueDefinitionView | ||
|
||
def render("index.json", %{value_definitions: value_definitions}) do | ||
render_many(value_definitions, ValueDefinitionView, "value_definition.json") | ||
end | ||
|
||
def render("show.json", %{value_definition: value_definition}) do | ||
render_one(value_definition, ValueDefinitionView, "value_definition.json") | ||
end | ||
|
||
def render("value_definition.json", %{value_definition: value_definition}) do | ||
%{ | ||
id: value_definition.id, | ||
definition_category: value_definition.definition_category, | ||
definition_name: value_definition.definition_name, | ||
definition_code: value_definition.definition_code, | ||
definition_value: value_definition.definition_value, | ||
definition_abbreviated: value_definition.definition_abbreviated, | ||
display_sort_no: value_definition.display_sort_no, | ||
display_discernment_code: value_definition.display_discernment_code, | ||
language_code: value_definition.language_code, | ||
status: value_definition.status, | ||
lock_version: value_definition.lock_version | ||
} | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
defmodule Materia.Repo.Migrations.CreateValueDefinitions do | ||
use Ecto.Migration | ||
|
||
def change do | ||
create table(:value_definitions) do | ||
add :definition_category, :string | ||
add :definition_name, :string | ||
add :definition_code, :string | ||
add :definition_value, :string | ||
add :definition_abbreviated, :string | ||
add :display_sort_no, :integer | ||
add :display_discernment_code, :string | ||
add :language_code, :string | ||
add :status, :integer | ||
add :lock_version, :bigint | ||
|
||
timestamps() | ||
end | ||
|
||
create index(:value_definitions, [:definition_category]) | ||
create unique_index(:value_definitions, [:definition_category, :definition_code, :language_code]) | ||
end | ||
end |
23 changes: 23 additions & 0 deletions
23
priv/repo/migrations/20190306050919_create_value_definitions.exs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
defmodule Materia.Repo.Migrations.CreateValueDefinitions do | ||
use Ecto.Migration | ||
|
||
def change do | ||
create table(:value_definitions) do | ||
add :definition_category, :string | ||
add :definition_name, :string | ||
add :definition_code, :string | ||
add :definition_value, :string | ||
add :definition_abbreviated, :string | ||
add :display_sort_no, :integer | ||
add :display_discernment_code, :string | ||
add :language_code, :string | ||
add :status, :integer | ||
add :lock_version, :bigint | ||
|
||
timestamps() | ||
end | ||
|
||
create index(:value_definitions, [:definition_category]) | ||
create unique_index(:value_definitions, [:definition_category, :definition_code, :language_code]) | ||
end | ||
end |
Oops, something went wrong.