Skip to content
eloyPublic

About

Build elixir structs from untrusted sources

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Extruder

Extruder let you build and validate structs from any source.

Installation

Add extruder to your list of dependencies in mix.exs:

def deps do
  [{:extruder, "~> 0.0.1"}]
end

Usage

Describe your model

defmodule TestModel do
  use Extruder

  defmodel do
    field :foo, :int
    field :bar, :int, default: 1
    field :bool_def, :boolean
    field :def_str, :string
    field :text, :string, default: "foo bar wadus"
    field :list_def, :list
    field :map_def, :map, default: %{foo: []}
    field :some_atom, :atom
    field :neested_struct, :struct, module: MyApp.NeestedStruct
    field :neested_struct_list, :structs_list, module: MyApp.NeestedStruct
    field :date, :datetime

    validates_presence_of :foo
  end
end

Create structs from any source

iex> TestModel.extrude %{"foo" => 1}
{:ok,
 %TestModel{bar: 1, bool_def: false, def_str: nil, foo: 1, list_def: [],
  map_def: %{foo: []}, neested_struct: nil, neested_struct_list: nil,
  some_atom: nil, text: "foo bar wadus"}}

iex> TestModel.extrude %{"bar" => 2}
{:error,
 %TestModel{bar: 2, bool_def: false, def_str: nil, foo: nil, list_def: [],
  map_def: %{foo: []}, neested_struct: nil, neested_struct_list: nil,
  some_atom: nil, text: "foo bar wadus"}, [foo: [:can_not_be_nil]]}

About

Build elixir structs from untrusted sources

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages