Magasin clé/valeur

Un magasin clé/valeur par application, basé sur SQLite, exposé via le SDK loopback à /__bext/sdk/kv/*. Définir, récupérer, lister par préfixe et supprimer — avec un ttl optionnel (en secondes) pour les lignes auto-expirantes. Toutes les clés ici vivent sous l'espace de noms de l'application demo-kv.

Astuce
Chaque store est cloisonné par l'en-tête X-Bext-App-Id : deux apps peuvent utiliser la clé session:42 sans jamais se croiser. Donnez un ttl pour qu'une ligne disparaisse toute seule — idéal pour des caches ou des jetons à durée de vie courte.

Définir une clé

Clés (3)

clévaleur
check-1781135966ok123
counter2
greetinghello world
src/lib/kv-store.tsTypeScript
// KV is a per-app key/value store (SQLite-backed) with optional TTL.
// PRISM pages reach it over the loopback SDK; no admin token needed.
const SDK = "http://127.0.0.1/__bext/sdk";
const APP = "demo-kv";

const h = { "X-Bext-App-Id": APP, "Content-Type": "application/json" };

// set with a 60s TTL — the row self-expires
await fetch(SDK + "/kv/set", { method: "POST", headers: h,
  body: JSON.stringify({ key: "session:42", value: { user: "ada" }, ttl: 60 }) });

// get — value comes back as the JSON text you stored
const { value } = await (await fetch(SDK + "/kv/get", { method: "POST", headers: h,
  body: JSON.stringify({ key: "session:42" }) })).json();

// list keys by prefix, then delete
await fetch(SDK + "/kv/list", { method: "POST", headers: h,
  body: JSON.stringify({ prefix: "session:", limit: 100 }) });
await fetch(SDK + "/kv/delete", { method: "POST", headers: h,
  body: JSON.stringify({ key: "session:42" }) });