Rivet.Loader behaviour (rivet v2.5.2)
View SourceSummary
Functions
If limits are given, it's a key:value dict. Rules
Callbacks
@callback load_data(meta :: Rivet.Loader.State.t(), data :: map()) :: {:ok | :error, meta :: Rivet.Loader.State.t()}
@callback load_deferred(meta :: Rivet.Loader.State.t(), data :: map()) :: {:ok | :error, meta :: Rivet.Loader.State.t()}
Functions
@spec load_data( {:ok, docs :: list()} | {:error, msg :: binary()}, state :: Rivet.Loader.State.t() ) :: {:ok | :error, state :: Rivet.Loader.State.t()}
If limits are given, it's a key:value dict. Rules:
- If key does NOT exist in the doc, then it's evaluated true
- If the key DOES exist, then the value must match to be true
- If no limits, everything is true
iex> alias Rivet.Loader.State iex> match_limits?(%State{limits: nil}, nil) true iex> match_limits?(%State{limits: %{env: "red"}}, %{env: "red"}) true iex> match_limits?(%State{limits: %{env: "red"}}, %{env: "not red"}) false iex> match_limits?(%State{limits: %{env: "red"}}, %{narf: "narf"}) true iex> match_limits?(%State{limits: %{env: "red"}}, %{env: ["narf"]}) false iex> match_limits?(%State{limits: %{env: "red"}}, %{env: ["narf", "red"]}) true iex> match_limits?(%State{limits: %{env: ["red", "white", "blue"]}}, %{env: "red"}) true iex> match_limits?(%State{limits: %{env: ["red", "white", "blue"]}}, %{env: ["red", "blue"]}) true iex> match_limits?(%State{limits: %{env: ["red", "white", "blue"]}}, %{}) true iex> match_limits?(%State{limits: %{env: ["red", "white", "blue"]}}, %{env: "purple"}) false iex> match_limits?(%State{limits: %{env: ["red", "white", "blue"]}}, %{env: ["green"]}) false