Packages

Declarative Ecto embedded schemas for data validation, coercion, and manipulation.

Current section

12 Versions

Jump to

Compare versions

3 files changed
+9 additions
-11 deletions
  @@ -1,6 +1,6 @@
1 1 {<<"links">>,[{<<"GitHub">>,<<"https://github.com/acalejos/flint">>}]}.
2 2 {<<"name">>,<<"flint">>}.
3 - {<<"version">>,<<"0.4.1">>}.
3 + {<<"version">>,<<"0.4.2">>}.
4 4 {<<"description">>,
5 5 <<"Declarative Ecto embedded schemas for data validation, coercion, and manipulation.">>}.
6 6 {<<"elixir">>,<<"~> 1.14">>}.
  @@ -3,7 +3,6 @@ defmodule Flint.Changeset do
3 3 The base `changeset` function defined by `Flint`. `Flint.Changeset` uses the module attributes
4 4 that are collected when using the `Flint.Schema` macros to perform transformations and validations.
5 5 """
6 - import Ecto.Changeset
7 6
8 7 @doc """
9 8 Uses the quoted expressions from the `Flint.Schema.field` and `Flint.Schema.field!`
  @@ -18,10 +17,9 @@ defmodule Flint.Changeset do
18 17 all_validations =
19 18 module.__schema__(:blocks)
20 19
21 - for {field, validations} <- all_validations, reduce: changeset do
20 + for {field, block} <- all_validations, reduce: changeset do
22 21 changeset ->
23 22 bindings = bindings ++ Enum.into(changeset.changes, [])
24 - block = Keyword.get(validations, :block, [])
25 23
26 24 block
27 25 |> Enum.with_index()
  @@ -37,7 +35,7 @@ defmodule Flint.Changeset do
37 35 apply(invalid?, [])
38 36
39 37 {:arity, 1} when not is_nil(field) ->
40 - apply(invalid?, [fetch_change!(changeset, field)])
38 + apply(invalid?, [Ecto.Changeset.fetch_change!(changeset, field)])
41 39
42 40 _ ->
43 41 raise ArgumentError,
  @@ -50,7 +48,7 @@ defmodule Flint.Changeset do
50 48 {err_msg, _bindings} = Code.eval_quoted(quoted_err, bindings, env)
51 49
52 50 if invalid? do
53 - add_error(chngset, field, err_msg,
51 + Ecto.Changeset.add_error(chngset, field, err_msg,
54 52 validation: :block,
55 53 clause: index + 1
56 54 )
  @@ -59,7 +57,7 @@ defmodule Flint.Changeset do
59 57 end
60 58 rescue
61 59 _ ->
62 - add_error(
60 + Ecto.Changeset.add_error(
63 61 chngset,
64 62 field,
65 63 "Error evaluating expression in Clause ##{index + 1} of `do:` block"
  @@ -96,20 +94,20 @@ defmodule Flint.Changeset do
96 94
97 95 changeset =
98 96 schema
99 - |> cast(params, fields |> MapSet.to_list())
97 + |> Ecto.Changeset.cast(params, fields |> MapSet.to_list())
100 98
101 99 changeset =
102 100 for field <- embedded_fields, reduce: changeset do
103 101 changeset ->
104 102 changeset
105 - |> cast_embed(field,
103 + |> Ecto.Changeset.cast_embed(field,
106 104 required: field in required_embeds,
107 105 with: &changeset(&1, &2, bindings)
108 106 )
109 107 end
110 108
111 109 changeset
112 - |> validate_required(required_fields)
110 + |> Ecto.Changeset.validate_required(required_fields)
113 111 |> validate_do_blocks(bindings)
114 112 end
115 113 end
  @@ -5,7 +5,7 @@ defmodule Flint.MixProject do
5 5 [
6 6 app: :flint,
7 7 name: "Flint",
8 - version: "0.4.1",
8 + version: "0.4.2",
9 9 elixir: "~> 1.14",
10 10 start_permanent: Mix.env() == :prod,
11 11 deps: deps(),