Add queue tables, quote SQL identifiers (v1.3.0)
- isQueue table option adds queue columns and a (status, available_at) index; BunSQLite.queue exposes add, claim, complete, fail and release_stale with atomic claims - Set busy_timeout on connections so workers in separate processes wait instead of failing with SQLITE_BUSY - Quote table and column names with backticks in generated SQL, so reserved words (to, order, group) work and unknown columns error instead of matching as string literals - Tests for queue ops, multi-process claims and reserved-word names Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Vendored
+34
@@ -89,6 +89,35 @@ export interface BUN_SQLITE_TableSchemaType {
|
||||
* Type of vector. Defaults to `vec0`
|
||||
*/
|
||||
vectorType?: string;
|
||||
/**
|
||||
* Make this a queue table. Adds the `QueueFields` columns and an index
|
||||
* on `(status, available_at)`. Use `BunSQLite.queue` to work the queue.
|
||||
*/
|
||||
isQueue?: boolean | BUN_SQLITE_QueueOptions;
|
||||
}
|
||||
/**
|
||||
* Options for a queue table (`isQueue`).
|
||||
*/
|
||||
export interface BUN_SQLITE_QueueOptions {
|
||||
/**
|
||||
* Claims allowed before a failing job is marked `failed`. Defaults to `3`
|
||||
*/
|
||||
maxAttempts?: number;
|
||||
/**
|
||||
* Milliseconds a claimed job can stay `processing` before it is
|
||||
* released back to the queue. Defaults to `300000` (5 minutes)
|
||||
*/
|
||||
lockTimeout?: number;
|
||||
/**
|
||||
* Base retry delay in milliseconds, doubled on every attempt. Defaults
|
||||
* to `1000`
|
||||
*/
|
||||
backoff?: number;
|
||||
/**
|
||||
* Delete jobs on completion instead of marking them `completed`.
|
||||
* Defaults to `false`
|
||||
*/
|
||||
deleteOnComplete?: boolean;
|
||||
}
|
||||
/**
|
||||
* Reference object used to link a table to one of its child tables.
|
||||
@@ -1420,6 +1449,11 @@ export type SchemaChange = {
|
||||
* Default fields automatically suggested for new tables.
|
||||
*/
|
||||
export declare const DefaultFields: BUN_SQLITE_FieldSchemaType[];
|
||||
export declare const QueueStatuses: readonly ["pending", "processing", "completed", "failed"];
|
||||
/**
|
||||
* Fields added to queue tables (`isQueue`)
|
||||
*/
|
||||
export declare const QueueFields: BUN_SQLITE_FieldSchemaType[];
|
||||
export type BunSQLiteQueryFieldValues<F extends string = string, T extends string = string> = {
|
||||
field: F;
|
||||
table?: T;
|
||||
|
||||
Reference in New Issue
Block a user