diplomat v0.7.1 Diplomat.Entity

Summary

Functions

Create a Diplomat.Entity from a Diplomat.Proto.Entity

Creates a new Diplomat.Entity with the given properties

Creates a new Diplomat.Entity with the given properties and Diplomat.Key or kind

Creates a new Diplomat.Entity with the given properties and creates a Diplomat.Key with kind and id

Extract a Diplomat.Entity’s properties as a map

Generate a Diplomat.Proto.Entity from a given Diplomat.Entity. This can then be used to generate the binary protocol buffer representation of the Diplomat.Entity

Types

mutation()
operation()
operation :: :insert | :upsert | :update | :delete
t()
t :: %Diplomat.Entity{key: Diplomat.Key.t | nil, kind: String.t | nil, properties: %{optional(String.t) => Diplomat.Value.t}}

Functions

extract_mutations(list, acc)
extract_mutations([mutation], [Diplomat.Proto.Mutation.t]) :: [Diplomat.Proto.Mutation.t]
from_proto(entity)
from_proto(Diplomat.Proto.Entity.t) :: t

Create a Diplomat.Entity from a Diplomat.Proto.Entity

insert(entity)
insert([t] | t) ::
  {:ok, Diplomat.Key.t} |
  Diplomat.Client.error
new(props)
new(struct | map) :: t

Creates a new Diplomat.Entity with the given properties.

Instead of building a Diplomat.Enity struct manually, new is the way you should create your entities. new wraps and nests properties correctly, and ensures that your entities have a valid Key (among other things).

new(props, kind)
new(struct | map, Diplomat.Key.t | String.t) :: t

Creates a new Diplomat.Entity with the given properties and Diplomat.Key or kind

new(props, kind, id)
new(struct | map, String.t, String.t | integer) :: t

Creates a new Diplomat.Entity with the given properties and creates a Diplomat.Key with kind and id.

properties(entity)
properties(t) :: map

Extract a Diplomat.Entity’s properties as a map.

The properties are stored on the struct as a map string keys and Diplomat.Value values. This function will allow you to extract the properties as a map with string keys and Elixir built-in values.

For example, creating an Entity looks like the following:

iex> entity = Entity.new(%{"hello" => "world"})
# =>   %Diplomat.Entity{key: nil, kind: nil,
#         properties: %{"hello" => %Diplomat.Value{value: "world"}}}

Diplomat.Entity.properties/1 allows you to extract those properties to get the following: %{"hello" => "world"}

proto(properties)
proto(map | t) :: Diplomat.Proto.Entity.t

Generate a Diplomat.Proto.Entity from a given Diplomat.Entity. This can then be used to generate the binary protocol buffer representation of the Diplomat.Entity

upsert(entity)
upsert([t] | t) ::
  {:ok, Diplomat.Proto.CommitResponse.t} |
  Diplomat.Client.error