webql/memory

Copy Markdown

Types

Get

pub type Get(store) =
  fn(Memory(store), List(String)) -> Result(
    dynamic.Dynamic,
    dynamic.Dynamic,
  )

Memory

pub type Memory(store) {
  Memory(
    new: fn() -> Memory(store),
    store: store,
    get: fn(Memory(store), List(String)) -> Result(
      dynamic.Dynamic,
      dynamic.Dynamic,
    ),
    set: fn(Memory(store), List(String), dynamic.Dynamic) -> Memory(
      store,
    ),
    merge: fn(Memory(store), Memory(store)) -> Memory(store),
  )
}
Memory(
  new: fn() -> Memory(store),
  store: store,
  get: fn(Memory(store), List(String)) -> Result(
    dynamic.Dynamic,
    dynamic.Dynamic,
  ),
  set: fn(Memory(store), List(String), dynamic.Dynamic) -> Memory(
    store,
  ),
  merge: fn(Memory(store), Memory(store)) -> Memory(store),
)

Merge

pub type Merge(store) =
  fn(Memory(store), Memory(store)) -> Memory(store)

New

pub type New(store) =
  fn() -> Memory(store)

Set

pub type Set(store) =
  fn(Memory(store), List(String), dynamic.Dynamic) -> Memory(
    store,
  )

Store

pub opaque type Store

Values

decode

pub fn decode(
  memory: Memory(Store),
  unknown: dynamic.Dynamic,
) -> Result(Memory(Store), List(decode.DecodeError))

Decodes a dynamic (ie. a Erlang map or JS object) by coverting it into a KV value.

encode

pub fn encode(memory: Memory(Store)) -> dynamic.Dynamic

Encodes a KV store into a dynamic to be used by an external runtime.

get

pub fn get(
  memory: Memory(Store),
  path: List(String),
) -> Result(dynamic.Dynamic, dynamic.Dynamic)

Gets a path from KV.

merge

pub fn merge(
  left: Memory(Store),
  right: Memory(Store),
) -> Memory(Store)

Merges two KV stores, using right-hand values when paths conflict.

new

pub fn new() -> Memory(Store)

Creates a new memory instance constaining KV.

set

pub fn set(
  memory: Memory(Store),
  path: List(String),
  value: dynamic.Dynamic,
) -> Memory(Store)

Inserts a value via a path into KV.