From d133c79de0af6675d3e056314451471a882910ac Mon Sep 17 00:00:00 2001 From: Zef Hemel Date: Thu, 26 Jan 2023 15:26:56 +0100 Subject: [PATCH] Support for store.has syscall --- plug-api/plugos-syscall/store.ts | 4 ++++ plugos/syscalls/store.sqlite.ts | 7 +++++++ web/syscalls/store.ts | 1 + 3 files changed, 12 insertions(+) diff --git a/plug-api/plugos-syscall/store.ts b/plug-api/plugos-syscall/store.ts index 631dd48..628f533 100644 --- a/plug-api/plugos-syscall/store.ts +++ b/plug-api/plugos-syscall/store.ts @@ -31,6 +31,10 @@ export function get(key: string): Promise { return syscall("store.get", key); } +export function has(key: string): Promise { + return syscall("store.has", key); +} + export function del(key: string): Promise { return syscall("store.delete", key); } diff --git a/plugos/syscalls/store.sqlite.ts b/plugos/syscalls/store.sqlite.ts index 3ec8ae4..eebe667 100644 --- a/plugos/syscalls/store.sqlite.ts +++ b/plugos/syscalls/store.sqlite.ts @@ -135,6 +135,13 @@ export function storeSyscalls( return null; } }, + "store.has": async (_ctx, key: string): Promise => { + const result = await db.query( + `SELECT count(value) as cnt FROM ${tableName} WHERE key = ?`, + key, + ); + return result[0].cnt === 1; + }, "store.queryPrefix": async (_ctx, prefix: string) => { return ( await db.query( diff --git a/web/syscalls/store.ts b/web/syscalls/store.ts index 2aea60d..97eaf89 100644 --- a/web/syscalls/store.ts +++ b/web/syscalls/store.ts @@ -7,6 +7,7 @@ export function storeSyscalls(space: Space): SysCallMapping { [ "store.queryPrefix", "store.get", + "store.has", "store.set", "store.batchSet", "store.delete",