tags: api/syscall references:

  • plug-api/syscalls/datastore.ts
  • client/plugos/syscalls/datastore.ts
  • client/data/datastore.ts

The Datastore API provides functions for interacting with a key-value store that has query capabilities.

  • Keys are represented as a list (Lua table) of strings.
  • Values can be any persistable value.

datastore.batchDelete

datastore.batchDelete(keys)

Deletes multiple values from the key-value store.

Parameters:

  • keys (table) — List of keys to delete.

Example:

datastore.batchDelete({{"user", "1"}, {"user", "2"}})

datastore.batchGet

datastore.batchGet(keys)

Gets multiple values from the key-value store.

Parameters:

  • keys (table) — List of keys to read.

Returns:

  • table — Values in key order, with nil for missing keys.

Example:

local values = datastore.batchGet({{"user", "1"}, {"user", "2"}})

datastore.batchSet

datastore.batchSet(entries)

Sets multiple key-value entries in one operation.

Parameters:

  • entries (table) — Entries with key and value fields.

Example:

datastore.batchSet({
  {key = {"user", "1"}, value = {name = "Alice"}},
  {key = {"user", "2"}, value = {name = "Bob"}},
})

datastore.delete

datastore.delete(key)

Deletes a value from the key-value store.

Parameters:

  • key (table) — Key segments.

Example:

datastore.delete({"user", "123"})

datastore.get

datastore.get(key)

Gets a value from the key-value store.

Parameters:

  • key (table) — Key segments.

Returns:

  • Value — Stored value, or nil when absent.

Example:

local user = datastore.get({"user", "123"})

datastore.query

datastore.query(options)

Queries key-value entries, optionally restricted to a key prefix.

Parameters:

  • options (table) — Query options, including an optional prefix.

Returns:

  • table — Matching key-value entries.

datastore.queryLua

datastore.queryLua(prefix, query, scopeVariables?)

Runs a Space Lua collection query over a key prefix.

Parameters:

  • prefix (table) — Key prefix to query.
  • query (table) — Parsed collection query.
  • scopeVariables? (table) — Additional variables available to the query.

Returns:

  • table — Query results converted to Lua values.

datastore.set

datastore.set(key, value)

Sets a value in the key-value store.

Parameters:

  • key (table) — Key segments.
  • value — Value to store.

Example:

datastore.set({"user", "123"}, {name = "John"})