Skip to content

Commit 301e292

Browse files
committed
define changeset/2 function in models
1 parent 3bfd5cf commit 301e292

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+176
-216
lines changed

modules/openapi-generator/src/main/resources/elixir/model.mustache

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,14 @@
2323
{{/vars}}
2424
end
2525

26-
@spec new(map()) :: t()
27-
def new(params) do
28-
%__MODULE__{}
26+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
27+
def changeset(%__MODULE__{} = struct, params) do
28+
struct
2929
|> Ecto.Changeset.cast(params, [{{#primitiveVars}}{{#atom}}{{&baseName}}{{/atom}}{{^-last}}, {{/-last}}{{/primitiveVars}}])
3030
|> Ecto.Changeset.validate_required([{{#requiredPrimitiveVars}}{{#atom}}{{&baseName}}{{/atom}}{{^-last}}, {{/-last}}{{/requiredPrimitiveVars}}])
3131
{{#complexVars}}
3232
|> Ecto.Changeset.cast_embed({{#atom}}{{&baseName}}{{/atom}}{{#required}}, required: true{{/required}})
3333
{{/complexVars}}
34-
|> Ecto.Changeset.apply_action!(:insert)
3534
end
3635
end
3736
{{/model}}{{/models}}

modules/openapi-generator/src/main/resources/elixir/request_builder.ex.mustache

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,12 +187,18 @@ defmodule {{moduleName}}.RequestBuilder do
187187
defp decode(%Tesla.Env{} = env, false), do: {:ok, env}
188188

189189
defp decode(%Tesla.Env{body: body}, %{}) do
190-
JSON.decode!(body)
190+
JSON.decode(body)
191191
end
192192

193193
defp decode(%Tesla.Env{body: body}, module) do
194-
body
195-
|> JSON.decode!
196-
|> module.new
194+
case JSON.decode(body) do
195+
{:ok, params} ->
196+
module
197+
|> struct
198+
|> module.changeset(params)
199+
|> Ecto.Changeset.apply_action(:insert)
200+
{:error, error} ->
201+
{:error, error}
202+
end
197203
end
198204
end

samples/client/petstore/elixir/lib/openapi_petstore/model/_foo_get_default_response.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,12 @@ defmodule OpenapiPetstore.Model.FooGetDefaultResponse do
1717
embeds_one :string, OpenapiPetstore.Model.Foo
1818
end
1919

20-
@spec new(map()) :: t()
21-
def new(params) do
22-
%__MODULE__{}
20+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
21+
def changeset(%__MODULE__{} = struct, params) do
22+
struct
2323
|> Ecto.Changeset.cast(params, [])
2424
|> Ecto.Changeset.validate_required([])
2525
|> Ecto.Changeset.cast_embed(:string)
26-
|> Ecto.Changeset.apply_action!(:insert)
2726
end
2827
end
2928

samples/client/petstore/elixir/lib/openapi_petstore/model/_special_model_name_.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ defmodule OpenapiPetstore.Model.SpecialModelName do
1717
field :"$special[property.name]", :integer
1818
end
1919

20-
@spec new(map()) :: t()
21-
def new(params) do
22-
%__MODULE__{}
20+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
21+
def changeset(%__MODULE__{} = struct, params) do
22+
struct
2323
|> Ecto.Changeset.cast(params, [:"$special[property.name]"])
2424
|> Ecto.Changeset.validate_required([])
25-
|> Ecto.Changeset.apply_action!(:insert)
2625
end
2726
end
2827

samples/client/petstore/elixir/lib/openapi_petstore/model/additional_properties_class.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ defmodule OpenapiPetstore.Model.AdditionalPropertiesClass do
1919
field :map_of_map_property, :map
2020
end
2121

22-
@spec new(map()) :: t()
23-
def new(params) do
24-
%__MODULE__{}
22+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
23+
def changeset(%__MODULE__{} = struct, params) do
24+
struct
2525
|> Ecto.Changeset.cast(params, [:map_property, :map_of_map_property])
2626
|> Ecto.Changeset.validate_required([])
27-
|> Ecto.Changeset.apply_action!(:insert)
2827
end
2928
end
3029

samples/client/petstore/elixir/lib/openapi_petstore/model/all_of_with_single_ref.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,12 @@ defmodule OpenapiPetstore.Model.AllOfWithSingleRef do
1919
embeds_one :SingleRefType, OpenapiPetstore.Model.SingleRefType
2020
end
2121

22-
@spec new(map()) :: t()
23-
def new(params) do
24-
%__MODULE__{}
22+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
23+
def changeset(%__MODULE__{} = struct, params) do
24+
struct
2525
|> Ecto.Changeset.cast(params, [:username])
2626
|> Ecto.Changeset.validate_required([])
2727
|> Ecto.Changeset.cast_embed(:SingleRefType)
28-
|> Ecto.Changeset.apply_action!(:insert)
2928
end
3029
end
3130

samples/client/petstore/elixir/lib/openapi_petstore/model/animal.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ defmodule OpenapiPetstore.Model.Animal do
1919
field :color, :string
2020
end
2121

22-
@spec new(map()) :: t()
23-
def new(params) do
24-
%__MODULE__{}
22+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
23+
def changeset(%__MODULE__{} = struct, params) do
24+
struct
2525
|> Ecto.Changeset.cast(params, [:className, :color])
2626
|> Ecto.Changeset.validate_required([:className])
27-
|> Ecto.Changeset.apply_action!(:insert)
2827
end
2928
end
3029

samples/client/petstore/elixir/lib/openapi_petstore/model/any.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ defmodule OpenapiPetstore.Model.Any do
1717
field :"@type", :string
1818
end
1919

20-
@spec new(map()) :: t()
21-
def new(params) do
22-
%__MODULE__{}
20+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
21+
def changeset(%__MODULE__{} = struct, params) do
22+
struct
2323
|> Ecto.Changeset.cast(params, [:"@type"])
2424
|> Ecto.Changeset.validate_required([])
25-
|> Ecto.Changeset.apply_action!(:insert)
2625
end
2726
end
2827

samples/client/petstore/elixir/lib/openapi_petstore/model/api_response.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ defmodule OpenapiPetstore.Model.ApiResponse do
2121
field :message, :string
2222
end
2323

24-
@spec new(map()) :: t()
25-
def new(params) do
26-
%__MODULE__{}
24+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
25+
def changeset(%__MODULE__{} = struct, params) do
26+
struct
2727
|> Ecto.Changeset.cast(params, [:code, :type, :message])
2828
|> Ecto.Changeset.validate_required([])
29-
|> Ecto.Changeset.apply_action!(:insert)
3029
end
3130
end
3231

samples/client/petstore/elixir/lib/openapi_petstore/model/array_of_array_of_number_only.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ defmodule OpenapiPetstore.Model.ArrayOfArrayOfNumberOnly do
1717
field :ArrayArrayNumber, {:array, {:array, :float}}
1818
end
1919

20-
@spec new(map()) :: t()
21-
def new(params) do
22-
%__MODULE__{}
20+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
21+
def changeset(%__MODULE__{} = struct, params) do
22+
struct
2323
|> Ecto.Changeset.cast(params, [:ArrayArrayNumber])
2424
|> Ecto.Changeset.validate_required([])
25-
|> Ecto.Changeset.apply_action!(:insert)
2625
end
2726
end
2827

samples/client/petstore/elixir/lib/openapi_petstore/model/array_of_number_only.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ defmodule OpenapiPetstore.Model.ArrayOfNumberOnly do
1717
field :ArrayNumber, {:array, :float}
1818
end
1919

20-
@spec new(map()) :: t()
21-
def new(params) do
22-
%__MODULE__{}
20+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
21+
def changeset(%__MODULE__{} = struct, params) do
22+
struct
2323
|> Ecto.Changeset.cast(params, [:ArrayNumber])
2424
|> Ecto.Changeset.validate_required([])
25-
|> Ecto.Changeset.apply_action!(:insert)
2625
end
2726
end
2827

samples/client/petstore/elixir/lib/openapi_petstore/model/array_test.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ defmodule OpenapiPetstore.Model.ArrayTest do
2121
field :array_array_of_model, {:array, {:array, :any}}
2222
end
2323

24-
@spec new(map()) :: t()
25-
def new(params) do
26-
%__MODULE__{}
24+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
25+
def changeset(%__MODULE__{} = struct, params) do
26+
struct
2727
|> Ecto.Changeset.cast(params, [:array_of_string, :array_array_of_integer, :array_array_of_model])
2828
|> Ecto.Changeset.validate_required([])
29-
|> Ecto.Changeset.apply_action!(:insert)
3029
end
3130
end
3231

samples/client/petstore/elixir/lib/openapi_petstore/model/capitalization.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,11 @@ defmodule OpenapiPetstore.Model.Capitalization do
2727
field :ATT_NAME, :string
2828
end
2929

30-
@spec new(map()) :: t()
31-
def new(params) do
32-
%__MODULE__{}
30+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
31+
def changeset(%__MODULE__{} = struct, params) do
32+
struct
3333
|> Ecto.Changeset.cast(params, [:smallCamel, :CapitalCamel, :small_Snake, :Capital_Snake, :SCA_ETH_Flow_Points, :ATT_NAME])
3434
|> Ecto.Changeset.validate_required([])
35-
|> Ecto.Changeset.apply_action!(:insert)
3635
end
3736
end
3837

samples/client/petstore/elixir/lib/openapi_petstore/model/cat.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ defmodule OpenapiPetstore.Model.Cat do
2121
field :declawed, :boolean
2222
end
2323

24-
@spec new(map()) :: t()
25-
def new(params) do
26-
%__MODULE__{}
24+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
25+
def changeset(%__MODULE__{} = struct, params) do
26+
struct
2727
|> Ecto.Changeset.cast(params, [:className, :color, :declawed])
2828
|> Ecto.Changeset.validate_required([:className])
29-
|> Ecto.Changeset.apply_action!(:insert)
3029
end
3130
end
3231

samples/client/petstore/elixir/lib/openapi_petstore/model/category.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ defmodule OpenapiPetstore.Model.Category do
1919
field :name, :string
2020
end
2121

22-
@spec new(map()) :: t()
23-
def new(params) do
24-
%__MODULE__{}
22+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
23+
def changeset(%__MODULE__{} = struct, params) do
24+
struct
2525
|> Ecto.Changeset.cast(params, [:id, :name])
2626
|> Ecto.Changeset.validate_required([:name])
27-
|> Ecto.Changeset.apply_action!(:insert)
2827
end
2928
end
3029

samples/client/petstore/elixir/lib/openapi_petstore/model/child_with_nullable.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ defmodule OpenapiPetstore.Model.ChildWithNullable do
2121
field :otherProperty, :string
2222
end
2323

24-
@spec new(map()) :: t()
25-
def new(params) do
26-
%__MODULE__{}
24+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
25+
def changeset(%__MODULE__{} = struct, params) do
26+
struct
2727
|> Ecto.Changeset.cast(params, [:type, :nullableProperty, :otherProperty])
2828
|> Ecto.Changeset.validate_required([])
29-
|> Ecto.Changeset.apply_action!(:insert)
3029
end
3130
end
3231

samples/client/petstore/elixir/lib/openapi_petstore/model/class_model.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ defmodule OpenapiPetstore.Model.ClassModel do
1717
field :_class, :string
1818
end
1919

20-
@spec new(map()) :: t()
21-
def new(params) do
22-
%__MODULE__{}
20+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
21+
def changeset(%__MODULE__{} = struct, params) do
22+
struct
2323
|> Ecto.Changeset.cast(params, [:_class])
2424
|> Ecto.Changeset.validate_required([])
25-
|> Ecto.Changeset.apply_action!(:insert)
2625
end
2726
end
2827

samples/client/petstore/elixir/lib/openapi_petstore/model/client.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ defmodule OpenapiPetstore.Model.Client do
1717
field :client, :string
1818
end
1919

20-
@spec new(map()) :: t()
21-
def new(params) do
22-
%__MODULE__{}
20+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
21+
def changeset(%__MODULE__{} = struct, params) do
22+
struct
2323
|> Ecto.Changeset.cast(params, [:client])
2424
|> Ecto.Changeset.validate_required([])
25-
|> Ecto.Changeset.apply_action!(:insert)
2625
end
2726
end
2827

samples/client/petstore/elixir/lib/openapi_petstore/model/deprecated_model.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ defmodule OpenapiPetstore.Model.DeprecatedModel do
1717
field :name, :string
1818
end
1919

20-
@spec new(map()) :: t()
21-
def new(params) do
22-
%__MODULE__{}
20+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
21+
def changeset(%__MODULE__{} = struct, params) do
22+
struct
2323
|> Ecto.Changeset.cast(params, [:name])
2424
|> Ecto.Changeset.validate_required([])
25-
|> Ecto.Changeset.apply_action!(:insert)
2625
end
2726
end
2827

samples/client/petstore/elixir/lib/openapi_petstore/model/dog.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ defmodule OpenapiPetstore.Model.Dog do
2121
field :breed, :string
2222
end
2323

24-
@spec new(map()) :: t()
25-
def new(params) do
26-
%__MODULE__{}
24+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
25+
def changeset(%__MODULE__{} = struct, params) do
26+
struct
2727
|> Ecto.Changeset.cast(params, [:className, :color, :breed])
2828
|> Ecto.Changeset.validate_required([:className])
29-
|> Ecto.Changeset.apply_action!(:insert)
3029
end
3130
end
3231

samples/client/petstore/elixir/lib/openapi_petstore/model/enum_arrays.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ defmodule OpenapiPetstore.Model.EnumArrays do
1919
field :array_enum, {:array, :string}
2020
end
2121

22-
@spec new(map()) :: t()
23-
def new(params) do
24-
%__MODULE__{}
22+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
23+
def changeset(%__MODULE__{} = struct, params) do
24+
struct
2525
|> Ecto.Changeset.cast(params, [:just_symbol, :array_enum])
2626
|> Ecto.Changeset.validate_required([])
27-
|> Ecto.Changeset.apply_action!(:insert)
2827
end
2928
end
3029

samples/client/petstore/elixir/lib/openapi_petstore/model/enum_class.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ defmodule OpenapiPetstore.Model.EnumClass do
1616
embedded_schema do
1717
end
1818

19-
@spec new(map()) :: t()
20-
def new(params) do
21-
%__MODULE__{}
19+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
20+
def changeset(%__MODULE__{} = struct, params) do
21+
struct
2222
|> Ecto.Changeset.cast(params, [])
2323
|> Ecto.Changeset.validate_required([])
24-
|> Ecto.Changeset.apply_action!(:insert)
2524
end
2625
end
2726

samples/client/petstore/elixir/lib/openapi_petstore/model/enum_test.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,15 @@ defmodule OpenapiPetstore.Model.EnumTest do
3131
embeds_one :outerEnumIntegerDefaultValue, OpenapiPetstore.Model.OuterEnumIntegerDefaultValue
3232
end
3333

34-
@spec new(map()) :: t()
35-
def new(params) do
36-
%__MODULE__{}
34+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
35+
def changeset(%__MODULE__{} = struct, params) do
36+
struct
3737
|> Ecto.Changeset.cast(params, [:enum_string, :enum_string_required, :enum_integer, :enum_number])
3838
|> Ecto.Changeset.validate_required([:enum_string_required])
3939
|> Ecto.Changeset.cast_embed(:outerEnum)
4040
|> Ecto.Changeset.cast_embed(:outerEnumInteger)
4141
|> Ecto.Changeset.cast_embed(:outerEnumDefaultValue)
4242
|> Ecto.Changeset.cast_embed(:outerEnumIntegerDefaultValue)
43-
|> Ecto.Changeset.apply_action!(:insert)
4443
end
4544
end
4645

samples/client/petstore/elixir/lib/openapi_petstore/model/fake_big_decimal_map_200_response.ex

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@ defmodule OpenapiPetstore.Model.FakeBigDecimalMap200Response do
1919
field :someMap, :map
2020
end
2121

22-
@spec new(map()) :: t()
23-
def new(params) do
24-
%__MODULE__{}
22+
@spec changeset(t(), map()) :: Ecto.Changeset.t()
23+
def changeset(%__MODULE__{} = struct, params) do
24+
struct
2525
|> Ecto.Changeset.cast(params, [:someId, :someMap])
2626
|> Ecto.Changeset.validate_required([])
27-
|> Ecto.Changeset.apply_action!(:insert)
2827
end
2928
end
3029

0 commit comments

Comments
 (0)