Diffo.Provider.Party (Diffo v0.2.1)

Copy Markdown View Source

Ash Resource for a TMF Party

The out-of-the-box TMF Party resource. Uses BaseParty as a fragment and adds JSON serialisation with TMF @type / @referredType key mapping and outstanding validation covering the core TMF Party fields.

Use Diffo.Provider.Party directly via the Diffo.Provider domain when working with generic TMF parties (e.g. party refs on instances). For domain-specific parties with richer identity — such as an RSP or a Customer — extend BaseParty directly in your own domain and define a build action that sets type or referred_type appropriately.

See Diffo.Provider.BaseParty for full usage documentation.

An Ash Resource for a TMF Party

Summary

Functions

Validates that the keys in the provided input are valid for at least one action on the resource.

Same as input/1, except restricts the keys to values accepted by the action provided.

Types

t()

@type t() :: %Diffo.Provider.Party{
  __lateral_join_source__: term(),
  __meta__: term(),
  __metadata__: term(),
  __order__: term(),
  aggregates: term(),
  calculations: term(),
  created_at: term(),
  external_identifiers: term(),
  href: term(),
  id: term(),
  name: term(),
  notes: term(),
  party_refs: term(),
  referred_type: term(),
  type: term(),
  updated_at: term()
}

Functions

default_short_name()

input(opts)

@spec input(values :: map() | Keyword.t()) :: map() | no_return()

Validates that the keys in the provided input are valid for at least one action on the resource.

Raises a KeyError error at compile time if not. This exists because generally a struct should only ever be created by Ash as a result of a successful action. You should not be creating records manually in code, e.g %MyResource{value: 1, value: 2}. Generally that is fine, but often with embedded resources it is nice to be able to validate the keys that are being provided, e.g

Resource
|> Ash.Changeset.for_create(:create, %{embedded: EmbeddedResource.input(foo: 1, bar: 2)})
|> Ash.create()

input(opts, action)

@spec input(values :: map() | Keyword.t(), action :: atom()) :: map() | no_return()

Same as input/1, except restricts the keys to values accepted by the action provided.

primary_key_matches?(left, right)