Tyyppi.Example.Value (tyyppi v0.7.2) View Source

Example of the structure defined with Tyyppi.Struct.defstruct/1, all values be Tyyppi.Value

The original code of this module follows:

use Tyyppi

@defaults foo: Value.atom(:ok), bar: Value.integer(42)
defstruct foo: Value.t(), bar: Value.t()

def validate_bar(%Value{value: value}) when value < 100, do: {:ok, value}
def validate_bar(%Value{}), do: {:error, "Expected a value to be less than 100"}

This module defines a struct having two fields, foo of a type Value.t(atom()), and bar of a type Value.t(integer()).

Link to this section Summary

Types

t()

The type describing this struct. This type will be used to validate upserts when called via Access and/or Tyyppi.Example.Value.put/3, Tyyppi.Example.Value.update/4.

Functions

Returns the field types of this struct as keyword of {field :: atom, type :: Tyyppi.T.t(term())} pairs.

Updates the struct

This function is supposed to be overwritten in the implementation in cases when custom validation is required.

Link to this section Types

Specs

t() :: %Tyyppi.Example.Value{
  foo: Tyyppi.Value.t(atom()),
  bar: Tyyppi.Value.t(integer()),
  baz: Tyyppi.Value.t(DateTime.t())
}

The type describing this struct. This type will be used to validate upserts when called via Access and/or Tyyppi.Example.Value.put/3, Tyyppi.Example.Value.update/4.

Link to this section Functions

Specs

as_value(keyword()) :: Tyyppi.Value.t()

Factory for Elixir.Tyyppi.Example.Value wrapped by Tyyppi.Value

Specs

types() :: [{atom(), Tyyppi.T.t(wrapped)}] when wrapped: term()

Returns the field types of this struct as keyword of {field :: atom, type :: Tyyppi.T.t(term())} pairs.

Specs

update(target :: t(), values :: keyword()) :: {:ok, t()} | {:error, keyword()}

Updates the struct

Specs

validate(t()) :: {:ok, t()} | {:error, term()}

This function is supposed to be overwritten in the implementation in cases when custom validation is required.

It would be called after all casts and type validations, if the succeeded