TypedStructEctoChangeset
A plugin to enable basic "embeds" Ecto.cast support to the module created by the containing TypedStruct macro.
example
Example
If this module is defined:
defmodule TypedStructModule do
use TypedStruct
typedstruct do
plugin TypedStructEctoChangeset
field :age, integer()
field :name, String.t()
end
endThen we can:
iex> Ecto.Changeset.cast(%TypedStructModule{}, %{"age" => 23, "name" => "John Doe"}, [:age, :name])
%Ecto.Changeset{}
limitations
Limitations
More database-centric fields such as assoc are not yet supported
example-use-cases-of-this-plugin
Example use cases of this plugin
typed_struct_ctor– Adds validating (newandfrom) constructor functions.Try the macro out in real time without having to install or write any of your own code.
All you need is a running instance of Livebook
installation
Installation
Because this plugin supports the interface defined by the TypedStruct macro, installation assumes you've already
added that dependency.
While you can use the original typed_struct library, it seems to no longer be maintained. However, there is a fork here that is quite active.
If available in Hex, the package can be installed
by adding typed_struct_ecto_changeset to your list of dependencies in mix.exs:
def deps do
[
# Choose either of the following `TypedStruct` libraries
# The original TypedStruct library
{:typed_struct, "~> 0.3.0"},
# Or the newer forked TypedStruct library
{:typedstruct, "~> 0.5.2"},
# And add this library
{:typed_struct_ecto_changeset, "~> 1.0.0"}
]
endDocumentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/typed_struct_ecto_changeset.