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:
@@ -6,9 +6,9 @@ import type {
|
||||
import sqlGenGenSearchStr from "./sql-generator-gen-search-str";
|
||||
import sqlGenGenQueryStr from "./sql-generator-gen-query-str";
|
||||
import {
|
||||
sqlField,
|
||||
sqlIdent,
|
||||
sqlColumn,
|
||||
sqlInt,
|
||||
sqlName,
|
||||
sqlOperator,
|
||||
sqlOrderStrategy,
|
||||
} from "./sql-safe";
|
||||
@@ -51,7 +51,7 @@ export default function sqlGenerator<
|
||||
count,
|
||||
targetId,
|
||||
}: Param<T>): Return {
|
||||
const tableName = sqlIdent(passedTableName, "table name");
|
||||
const tableName = sqlName(passedTableName, "table name");
|
||||
const finalQuery = genObject?.query ? genObject.query : undefined;
|
||||
|
||||
const queryKeys = finalQuery ? Object.keys(finalQuery) : undefined;
|
||||
@@ -160,11 +160,11 @@ export default function sqlGenerator<
|
||||
) => {
|
||||
if (typeof group == "object") {
|
||||
return group.table
|
||||
? `${sqlIdent(group.table, "table name")}.${sqlIdent(group.field, "field name")}`
|
||||
: sqlField(group.field);
|
||||
? `${sqlName(group.table, "table name")}.${sqlName(group.field, "field name")}`
|
||||
: sqlColumn(group.field);
|
||||
}
|
||||
|
||||
return sqlField(group);
|
||||
return sqlColumn(group);
|
||||
};
|
||||
|
||||
const group_by_txt = Array.isArray(genObject.group)
|
||||
@@ -177,8 +177,8 @@ export default function sqlGenerator<
|
||||
function grabOrderString(order: ServerQueryParamOrder<T>) {
|
||||
const field =
|
||||
genObject?.join && !String(order.field).includes(".")
|
||||
? `${tableName}.${sqlIdent(order.field, "order field")}`
|
||||
: sqlField(order.field, "order field");
|
||||
? `${tableName}.${sqlName(order.field, "order field")}`
|
||||
: sqlColumn(order.field, "order field");
|
||||
|
||||
return ` ${field} ${sqlOrderStrategy(order.strategy)}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user