diff options
author | Igor Zinkovsky <igor@deno.com> | 2023-06-13 17:49:57 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-13 17:49:57 -0700 |
commit | fd9d6baea311d9b227b130749647a86838ba2ccc (patch) | |
tree | f0207f62199d5db463fd7f208d45c9bf09c8db14 /cli/tsc/dts/lib.deno.unstable.d.ts | |
parent | d451abfc9154e02f39c08d10c185d1618b2ef6d3 (diff) |
feat(kv) queue implementation (#19459)
Extend the unstable `Deno.Kv` API to support queues.
Diffstat (limited to 'cli/tsc/dts/lib.deno.unstable.d.ts')
-rw-r--r-- | cli/tsc/dts/lib.deno.unstable.d.ts | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/cli/tsc/dts/lib.deno.unstable.d.ts b/cli/tsc/dts/lib.deno.unstable.d.ts index 27d3af4cd..8f11adfff 100644 --- a/cli/tsc/dts/lib.deno.unstable.d.ts +++ b/cli/tsc/dts/lib.deno.unstable.d.ts @@ -1915,6 +1915,14 @@ declare namespace Deno { */ delete(key: KvKey): this; /** + * Add to the operation a mutation that enqueues a value into the queue + * if all checks pass during the commit. + */ + enqueue( + value: unknown, + options?: { delay?: number; keysIfUndelivered?: Deno.KvKey[] }, + ): this; + /** * Commit the operation to the KV store. Returns a value indicating whether * checks passed and mutations were performed. If the operation failed * because of a failed check, the return value will be a {@linkcode @@ -2088,6 +2096,57 @@ declare namespace Deno { ): KvListIterator<T>; /** + * Add a value into the database queue to be delivered to the queue + * listener via {@linkcode Deno.Kv.listenQueue}. + * + * ```ts + * const db = await Deno.openKv(); + * await db.enqueue("bar"); + * ``` + * + * The `delay` option can be used to specify the delay (in milliseconds) + * of the value delivery. The default delay is 0, which means immediate + * delivery. + * + * ```ts + * const db = await Deno.openKv(); + * await db.enqueue("bar", { delay: 60000 }); + * ``` + * + * The `keysIfUndelivered` option can be used to specify the keys to + * be set if the value is not successfully delivered to the queue + * listener after several attempts. The values are set to the value of + * the queued message. + * + * ```ts + * const db = await Deno.openKv(); + * await db.enqueue("bar", { keysIfUndelivered: [["foo", "bar"]] }); + * ``` + */ + enqueue( + value: unknown, + options?: { delay?: number; keysIfUndelivered?: Deno.KvKey[] }, + ): Promise<KvCommitResult>; + + /** + * Listen for queue values to be delivered from the database queue, which + * were enqueued with {@linkcode Deno.Kv.enqueue}. The provided handler + * callback is invoked on every dequeued value. A failed callback + * invocation is automatically retried multiple times until it succeeds + * or until the maximum number of retries is reached. + * + * ```ts + * const db = await Deno.openKv(); + * db.listenQueue(async (msg: unknown) => { + * await db.set(["foo"], msg); + * }); + * ``` + */ + listenQueue( + handler: (value: unknown) => Promise<void> | void, + ): Promise<void>; + + /** * Create a new {@linkcode Deno.AtomicOperation} object which can be used to * perform an atomic transaction on the database. This does not perform any * operations on the database - the atomic transaction must be committed |