hazo_connect 2.7.3 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -3
- package/dist/adapters/base-adapter.d.ts +2 -51
- package/dist/adapters/base-adapter.d.ts.map +1 -1
- package/dist/adapters/base-adapter.js +23 -77
- package/dist/adapters/base-adapter.js.map +1 -1
- package/dist/adapters/better-sqlite3-adapter.d.ts +61 -0
- package/dist/adapters/better-sqlite3-adapter.d.ts.map +1 -0
- package/dist/adapters/better-sqlite3-adapter.js +364 -0
- package/dist/adapters/better-sqlite3-adapter.js.map +1 -0
- package/dist/adapters/clause-builder.d.ts.map +1 -1
- package/dist/adapters/clause-builder.js +14 -13
- package/dist/adapters/clause-builder.js.map +1 -1
- package/dist/adapters/postgrest-adapter.d.ts.map +1 -1
- package/dist/adapters/postgrest-adapter.js +6 -5
- package/dist/adapters/postgrest-adapter.js.map +1 -1
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-adapter.js +3 -24
- package/dist/adapters/sqlite-adapter.js.map +1 -1
- package/dist/adapters/supabase-adapter.d.ts.map +1 -1
- package/dist/adapters/supabase-adapter.js +3 -2
- package/dist/adapters/supabase-adapter.js.map +1 -1
- package/dist/connect-config.d.ts +83 -0
- package/dist/connect-config.d.ts.map +1 -0
- package/dist/connect-config.js +55 -0
- package/dist/connect-config.js.map +1 -0
- package/dist/default-logger.js +3 -3
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +32 -12
- package/dist/factory.js.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +5 -4
- package/dist/helpers.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/log-level-wrapper.d.ts.map +1 -1
- package/dist/log-level-wrapper.js +0 -2
- package/dist/log-level-wrapper.js.map +1 -1
- package/dist/migrations/runner.d.ts.map +1 -1
- package/dist/migrations/runner.js +8 -4
- package/dist/migrations/runner.js.map +1 -1
- package/dist/nextjs/api-route-helpers.d.ts.map +1 -1
- package/dist/nextjs/api-route-helpers.js +3 -4
- package/dist/nextjs/api-route-helpers.js.map +1 -1
- package/dist/nextjs/route-setup.d.ts.map +1 -1
- package/dist/nextjs/route-setup.js +3 -5
- package/dist/nextjs/route-setup.js.map +1 -1
- package/dist/nextjs/server-only.d.ts.map +1 -1
- package/dist/nextjs/server-only.js +2 -5
- package/dist/nextjs/server-only.js.map +1 -1
- package/dist/nextjs/setup-helpers.d.ts +4 -0
- package/dist/nextjs/setup-helpers.d.ts.map +1 -1
- package/dist/nextjs/setup-helpers.js +9 -7
- package/dist/nextjs/setup-helpers.js.map +1 -1
- package/dist/query-builder.d.ts.map +1 -1
- package/dist/query-builder.js +4 -3
- package/dist/query-builder.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +6 -6
- package/dist/server/index.js.map +1 -1
- package/dist/sqlite/admin-service.d.ts.map +1 -1
- package/dist/sqlite/admin-service.js +27 -15
- package/dist/sqlite/admin-service.js.map +1 -1
- package/dist/sqlite/placeholder-rewrite.d.ts +18 -0
- package/dist/sqlite/placeholder-rewrite.d.ts.map +1 -0
- package/dist/sqlite/placeholder-rewrite.js +38 -0
- package/dist/sqlite/placeholder-rewrite.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/sqlite-utils.d.ts.map +1 -1
- package/dist/utils/sqlite-utils.js +4 -3
- package/dist/utils/sqlite-utils.js.map +1 -1
- package/dist/utils/where-builder.d.ts.map +1 -1
- package/dist/utils/where-builder.js +3 -2
- package/dist/utils/where-builder.js.map +1 -1
- package/package.json +23 -7
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.BetterSqlite3Adapter = void 0;
|
|
40
|
+
/**
|
|
41
|
+
* Purpose: SQLite adapter powered by the native better-sqlite3 driver.
|
|
42
|
+
*
|
|
43
|
+
* Shares the QueryBuilder→SQL translation layer with the sql.js adapter and
|
|
44
|
+
* differs only in execution: prepared statements run synchronously (wrapped in
|
|
45
|
+
* async to satisfy HazoConnectAdapter) and writes go straight to the database
|
|
46
|
+
* file — there is no export()/writeFile persistence step. WAL and sensible
|
|
47
|
+
* pragmas are applied on open so the file can be safely shared with another
|
|
48
|
+
* in-process better-sqlite3 connection.
|
|
49
|
+
*/
|
|
50
|
+
const path_1 = __importDefault(require("path"));
|
|
51
|
+
const base_adapter_js_1 = require("./base-adapter.js");
|
|
52
|
+
const types_js_1 = require("../types.js");
|
|
53
|
+
const query_translator_js_1 = require("../sqlite/query-translator.js");
|
|
54
|
+
const sqlite_utils_js_1 = require("../utils/sqlite-utils.js");
|
|
55
|
+
const clause_builder_js_1 = require("./clause-builder.js");
|
|
56
|
+
const placeholder_rewrite_js_1 = require("../sqlite/placeholder-rewrite.js");
|
|
57
|
+
const DEFAULT_PRAGMAS = {
|
|
58
|
+
foreign_keys: 'ON',
|
|
59
|
+
busy_timeout: 5000,
|
|
60
|
+
};
|
|
61
|
+
class BetterSqlite3Adapter extends base_adapter_js_1.BaseAdapter {
|
|
62
|
+
constructor(config, logger) {
|
|
63
|
+
super(config, logger);
|
|
64
|
+
this.inTransaction = false;
|
|
65
|
+
this._claimQueue = Promise.resolve();
|
|
66
|
+
this.sqliteConfig = this.normalizeConfig(config);
|
|
67
|
+
this.isReadOnlyMode = Boolean(this.sqliteConfig.read_only);
|
|
68
|
+
this.databasePath = this.sqliteConfig.database_path ?? ':memory:';
|
|
69
|
+
this.pragmas = { ...DEFAULT_PRAGMAS, ...(this.sqliteConfig.pragmas ?? {}) };
|
|
70
|
+
this.databasePromise = this.initializeDatabase();
|
|
71
|
+
}
|
|
72
|
+
async getConfig() {
|
|
73
|
+
return { ...this.sqliteConfig };
|
|
74
|
+
}
|
|
75
|
+
async query(builder, method = 'GET', body) {
|
|
76
|
+
const normalizedMethod = method.toUpperCase();
|
|
77
|
+
try {
|
|
78
|
+
switch (normalizedMethod) {
|
|
79
|
+
case 'GET':
|
|
80
|
+
return await this.executeSelect(builder);
|
|
81
|
+
case 'POST':
|
|
82
|
+
this.ensureWritable();
|
|
83
|
+
return await this.executeInsert(builder, body);
|
|
84
|
+
case 'PUT':
|
|
85
|
+
case 'PATCH':
|
|
86
|
+
this.ensureWritable();
|
|
87
|
+
return await this.executeUpdate(builder, body);
|
|
88
|
+
case 'DELETE':
|
|
89
|
+
this.ensureWritable();
|
|
90
|
+
return await this.executeDelete(builder);
|
|
91
|
+
default:
|
|
92
|
+
this.throwError(types_js_1.ErrorCode.VALIDATION_ERROR, `Unsupported method '${method}' for better-sqlite3 adapter`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
return this.handleSqliteError(error);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async rawQuery(sql, options = {}) {
|
|
100
|
+
try {
|
|
101
|
+
const params = this.normalizeRawParams(options?.params);
|
|
102
|
+
if (this.isMutatingSql(sql))
|
|
103
|
+
this.ensureWritable();
|
|
104
|
+
const db = await this.getDatabase();
|
|
105
|
+
const rows = this.executeStatement(db, sql, params);
|
|
106
|
+
this.logQuery('better-sqlite3 raw query', { sql, row_count: rows.length });
|
|
107
|
+
return rows;
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
return this.handleSqliteError(error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// --- query execution ---
|
|
114
|
+
async executeSelect(builder) {
|
|
115
|
+
const translation = this.translateWithHandling(() => (0, query_translator_js_1.translateSelect)(builder));
|
|
116
|
+
const db = await this.getDatabase();
|
|
117
|
+
const rows = this.executeStatement(db, translation.sql, translation.params);
|
|
118
|
+
this.logQuery('better-sqlite3 select', { sql: translation.sql, row_count: rows.length });
|
|
119
|
+
return rows;
|
|
120
|
+
}
|
|
121
|
+
async executeInsert(builder, body) {
|
|
122
|
+
const payload = this.normalizeInsertBody(body);
|
|
123
|
+
const translation = this.translateWithHandling(() => (0, query_translator_js_1.translateInsert)(builder, payload));
|
|
124
|
+
const db = await this.getDatabase();
|
|
125
|
+
const rows = this.runStatements(db, translation.statements);
|
|
126
|
+
this.logQuery('better-sqlite3 insert', {
|
|
127
|
+
statements_executed: translation.statements.length,
|
|
128
|
+
row_count: rows.length,
|
|
129
|
+
});
|
|
130
|
+
return rows;
|
|
131
|
+
}
|
|
132
|
+
async executeUpdate(builder, body) {
|
|
133
|
+
const updates = this.normalizeUpdateBody(body);
|
|
134
|
+
const translation = this.translateWithHandling(() => (0, query_translator_js_1.translateUpdate)(builder, updates));
|
|
135
|
+
const db = await this.getDatabase();
|
|
136
|
+
const rows = this.executeStatement(db, translation.sql, translation.params);
|
|
137
|
+
this.logQuery('better-sqlite3 update', { sql: translation.sql, row_count: rows.length });
|
|
138
|
+
return rows;
|
|
139
|
+
}
|
|
140
|
+
async executeDelete(builder) {
|
|
141
|
+
const translation = this.translateWithHandling(() => (0, query_translator_js_1.translateDelete)(builder));
|
|
142
|
+
const db = await this.getDatabase();
|
|
143
|
+
const rows = this.executeStatement(db, translation.sql, translation.params);
|
|
144
|
+
this.logQuery('better-sqlite3 delete', { sql: translation.sql, row_count: rows.length });
|
|
145
|
+
return rows;
|
|
146
|
+
}
|
|
147
|
+
// --- statement execution ---
|
|
148
|
+
runStatements(db, statements) {
|
|
149
|
+
const results = [];
|
|
150
|
+
for (const statement of statements) {
|
|
151
|
+
results.push(...this.executeStatement(db, statement.sql, statement.params));
|
|
152
|
+
}
|
|
153
|
+
return results;
|
|
154
|
+
}
|
|
155
|
+
executeStatement(db, sql, params) {
|
|
156
|
+
const stmt = db.prepare(sql);
|
|
157
|
+
const bound = this.toBindable(params);
|
|
158
|
+
if (stmt.reader) {
|
|
159
|
+
return stmt.all(...bound);
|
|
160
|
+
}
|
|
161
|
+
stmt.run(...bound);
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
/** better-sqlite3 rejects booleans and undefined; coerce to its accepted set. */
|
|
165
|
+
toBindable(params) {
|
|
166
|
+
return (params ?? []).map((p) => {
|
|
167
|
+
if (typeof p === 'boolean')
|
|
168
|
+
return p ? 1 : 0;
|
|
169
|
+
if (p === undefined)
|
|
170
|
+
return null;
|
|
171
|
+
return p;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
// --- lifecycle ---
|
|
175
|
+
normalizeConfig(config) {
|
|
176
|
+
const raw = config?.sqlite ? config.sqlite : config;
|
|
177
|
+
const rawPath = raw?.database_path != null ? String(raw.database_path) : undefined;
|
|
178
|
+
const isMemory = rawPath === ':memory:' || rawPath === undefined;
|
|
179
|
+
const databasePath = isMemory ? ':memory:' : path_1.default.resolve(rawPath);
|
|
180
|
+
return {
|
|
181
|
+
database_path: databasePath,
|
|
182
|
+
read_only: raw?.read_only === true,
|
|
183
|
+
pragmas: (0, sqlite_utils_js_1.isPlainObject)(raw?.pragmas) ? raw.pragmas : undefined,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
async initializeDatabase() {
|
|
187
|
+
let Database;
|
|
188
|
+
try {
|
|
189
|
+
const mod = await Promise.resolve().then(() => __importStar(require('better-sqlite3')));
|
|
190
|
+
Database = (mod.default ?? mod);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, "The better-sqlite3 driver requires the 'better-sqlite3' package. Install it with: npm install better-sqlite3", undefined, error);
|
|
194
|
+
}
|
|
195
|
+
const db = new Database(this.databasePath, { readonly: this.isReadOnlyMode });
|
|
196
|
+
const isMemory = this.databasePath === ':memory:';
|
|
197
|
+
// journal_mode=WAL needs a writable, file-backed connection.
|
|
198
|
+
if (!this.isReadOnlyMode && !isMemory && this.pragmas.journal_mode === undefined) {
|
|
199
|
+
db.pragma('journal_mode = WAL');
|
|
200
|
+
}
|
|
201
|
+
for (const [key, value] of Object.entries(this.pragmas)) {
|
|
202
|
+
if (key === 'journal_mode' && (this.isReadOnlyMode || isMemory))
|
|
203
|
+
continue;
|
|
204
|
+
db.pragma(`${key} = ${value}`);
|
|
205
|
+
}
|
|
206
|
+
this.dbInstance = db;
|
|
207
|
+
return db;
|
|
208
|
+
}
|
|
209
|
+
async getDatabase() {
|
|
210
|
+
if (this.dbInstance)
|
|
211
|
+
return this.dbInstance;
|
|
212
|
+
this.dbInstance = await this.databasePromise;
|
|
213
|
+
return this.dbInstance;
|
|
214
|
+
}
|
|
215
|
+
ensureWritable() {
|
|
216
|
+
if (this.isReadOnlyMode) {
|
|
217
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'better-sqlite3 database is configured as read-only and cannot accept write operations');
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// --- payload helpers (mirror the sql.js adapter) ---
|
|
221
|
+
normalizeInsertBody(body) {
|
|
222
|
+
if (Array.isArray(body)) {
|
|
223
|
+
if (!body.length)
|
|
224
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Insert payload array cannot be empty');
|
|
225
|
+
return body.map((row) => {
|
|
226
|
+
if (!(0, sqlite_utils_js_1.isPlainObject)(row)) {
|
|
227
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Insert payload array items must be plain objects');
|
|
228
|
+
}
|
|
229
|
+
return row;
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
if ((0, sqlite_utils_js_1.isPlainObject)(body))
|
|
233
|
+
return body;
|
|
234
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Insert payload must be an object or array of objects');
|
|
235
|
+
}
|
|
236
|
+
normalizeUpdateBody(body) {
|
|
237
|
+
if (!(0, sqlite_utils_js_1.isPlainObject)(body))
|
|
238
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Update payload must be an object');
|
|
239
|
+
const updates = body;
|
|
240
|
+
if (Object.keys(updates).length === 0) {
|
|
241
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'Update payload must include at least one column');
|
|
242
|
+
}
|
|
243
|
+
return updates;
|
|
244
|
+
}
|
|
245
|
+
normalizeRawParams(params) {
|
|
246
|
+
if (params === undefined || params === null)
|
|
247
|
+
return [];
|
|
248
|
+
if (!Array.isArray(params))
|
|
249
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, 'rawQuery params must be an array');
|
|
250
|
+
return params;
|
|
251
|
+
}
|
|
252
|
+
isMutatingSql(sql) {
|
|
253
|
+
const keyword = sql.trim().split(/\s+/)[0]?.toUpperCase() ?? '';
|
|
254
|
+
return ['INSERT', 'UPDATE', 'DELETE', 'REPLACE', 'CREATE', 'DROP', 'ALTER'].includes(keyword);
|
|
255
|
+
}
|
|
256
|
+
translateWithHandling(translate) {
|
|
257
|
+
try {
|
|
258
|
+
return translate();
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
if (error instanceof query_translator_js_1.SqliteTranslationError) {
|
|
262
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, error.message);
|
|
263
|
+
}
|
|
264
|
+
throw error;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
handleSqliteError(error) {
|
|
268
|
+
if (error instanceof query_translator_js_1.SqliteTranslationError) {
|
|
269
|
+
this.throwError(types_js_1.ErrorCode.CONFIG_ERROR, error.message);
|
|
270
|
+
}
|
|
271
|
+
if (error?.code)
|
|
272
|
+
throw error;
|
|
273
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
274
|
+
this.throwError(types_js_1.ErrorCode.QUERY_ERROR, `better-sqlite3 request failed: ${message}`, undefined, error);
|
|
275
|
+
}
|
|
276
|
+
// --- transactions & claimRows (added in Task 5) ---
|
|
277
|
+
/**
|
|
278
|
+
* Execute one or more SQL statements separated by semicolons (DDL/migrations).
|
|
279
|
+
*/
|
|
280
|
+
async execScript(sql) {
|
|
281
|
+
this.ensureWritable();
|
|
282
|
+
try {
|
|
283
|
+
const db = await this.getDatabase();
|
|
284
|
+
db.exec(sql);
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
return this.handleSqliteError(error);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Run a sequence of writes atomically via BEGIN/COMMIT/ROLLBACK. The callback
|
|
292
|
+
* receives a tx facade with the same query/rawQuery/execScript shape. Nested
|
|
293
|
+
* transactions throw.
|
|
294
|
+
*/
|
|
295
|
+
async transaction(fn) {
|
|
296
|
+
this.ensureWritable();
|
|
297
|
+
if (this.inTransaction) {
|
|
298
|
+
this.throwError(types_js_1.ErrorCode.VALIDATION_ERROR, 'Nested transactions are not supported');
|
|
299
|
+
}
|
|
300
|
+
const db = await this.getDatabase();
|
|
301
|
+
db.exec('BEGIN');
|
|
302
|
+
this.inTransaction = true;
|
|
303
|
+
const tx = {
|
|
304
|
+
query: (builder, method, body) => this.query(builder, method, body),
|
|
305
|
+
rawQuery: (sql, options) => this.rawQuery(sql, options),
|
|
306
|
+
execScript: (sql) => this.execScript(sql),
|
|
307
|
+
};
|
|
308
|
+
try {
|
|
309
|
+
const result = await fn(tx);
|
|
310
|
+
db.exec('COMMIT');
|
|
311
|
+
this.inTransaction = false;
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
try {
|
|
316
|
+
db.exec('ROLLBACK');
|
|
317
|
+
}
|
|
318
|
+
catch (rollbackError) {
|
|
319
|
+
this.logger?.warn?.('better-sqlite3 ROLLBACK failed; transaction state may be inconsistent', {
|
|
320
|
+
error: rollbackError instanceof Error ? rollbackError.message : String(rollbackError),
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
this.inTransaction = false;
|
|
324
|
+
throw error;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Atomically claim up to `limit` rows matching `where`, apply `set`, return the
|
|
329
|
+
* updated rows. Concurrent calls are serialized through a promise chain so a
|
|
330
|
+
* second call waits for the first transaction to commit (avoids nested BEGIN).
|
|
331
|
+
*/
|
|
332
|
+
async claimRows(opts) {
|
|
333
|
+
(0, clause_builder_js_1.validateClaimRowsOptions)(opts);
|
|
334
|
+
(0, clause_builder_js_1.validateColumnName)(opts.table);
|
|
335
|
+
const returning = (opts.returning ?? ['*']).map((c) => {
|
|
336
|
+
if (c !== '*')
|
|
337
|
+
(0, clause_builder_js_1.validateColumnName)(c);
|
|
338
|
+
return c;
|
|
339
|
+
});
|
|
340
|
+
if (opts.orderBy)
|
|
341
|
+
(0, clause_builder_js_1.validateColumnName)(opts.orderBy.column);
|
|
342
|
+
const limit = opts.limit ?? 1;
|
|
343
|
+
const result = this._claimQueue.then(() => this.transaction(async (tx) => {
|
|
344
|
+
const whereClause = (0, placeholder_rewrite_js_1.sqliteSerializeWhere)(opts.where, 1);
|
|
345
|
+
const orderByClause = opts.orderBy
|
|
346
|
+
? ` ORDER BY ${opts.orderBy.column} ${opts.orderBy.direction.toUpperCase()}`
|
|
347
|
+
: '';
|
|
348
|
+
const selectSql = `SELECT id FROM ${opts.table} WHERE ${whereClause.fragment}${orderByClause} LIMIT ${limit}`;
|
|
349
|
+
const candidates = (await tx.rawQuery(selectSql, { params: whereClause.params }));
|
|
350
|
+
if (candidates.length === 0)
|
|
351
|
+
return [];
|
|
352
|
+
const setClause = (0, placeholder_rewrite_js_1.sqliteSerializeSet)(opts.set, whereClause.nextParamIndex);
|
|
353
|
+
const idPlaceholders = candidates.map(() => '?').join(', ');
|
|
354
|
+
const idParams = candidates.map((c) => c.id);
|
|
355
|
+
const updateSql = `UPDATE ${opts.table} SET ${setClause.fragment} WHERE id IN (${idPlaceholders}) RETURNING ${returning.join(', ')}`;
|
|
356
|
+
const updated = await tx.rawQuery(updateSql, { params: [...setClause.params, ...idParams] });
|
|
357
|
+
return updated;
|
|
358
|
+
}));
|
|
359
|
+
this._claimQueue = result.catch(() => undefined);
|
|
360
|
+
return result;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
exports.BetterSqlite3Adapter = BetterSqlite3Adapter;
|
|
364
|
+
//# sourceMappingURL=better-sqlite3-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"better-sqlite3-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/better-sqlite3-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clause-builder.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/clause-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"clause-builder.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/clause-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AACzC,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAE1D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIjD;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAC/F,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,CAK5E;AA0BD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmChG;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAyCvG;AAID,KAAK,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAqBpG;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBrI;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,EAAE,CAI1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,IAAI,CAUP"}
|
|
@@ -14,6 +14,7 @@ exports.serializeSetToPgSql = serializeSetToPgSql;
|
|
|
14
14
|
exports.serializeSetToPostgrestBody = serializeSetToPostgrestBody;
|
|
15
15
|
exports.incrementedColumns = incrementedColumns;
|
|
16
16
|
exports.validateClaimRowsOptions = validateClaimRowsOptions;
|
|
17
|
+
const hazo_core_1 = require("hazo_core");
|
|
17
18
|
const COLUMN_NAME_RE = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
18
19
|
const ALLOWED_OPS = new Set(["eq", "lte", "gte", "lt", "gt", "in", "increment", "$now"]);
|
|
19
20
|
function isNowSentinel(v) {
|
|
@@ -21,12 +22,12 @@ function isNowSentinel(v) {
|
|
|
21
22
|
}
|
|
22
23
|
function validateColumnName(name) {
|
|
23
24
|
if (!COLUMN_NAME_RE.test(name)) {
|
|
24
|
-
throw new
|
|
25
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: `invalid column name: ${JSON.stringify(name)}` });
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
function validateOperator(op) {
|
|
28
29
|
if (!ALLOWED_OPS.has(op)) {
|
|
29
|
-
throw new
|
|
30
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: `unknown operator: ${JSON.stringify(op)}` });
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
function resolveNowSentinel(v, dialect) {
|
|
@@ -45,7 +46,7 @@ function asOperator(v) {
|
|
|
45
46
|
if (keys.length === 0)
|
|
46
47
|
return null;
|
|
47
48
|
if (keys.length > 1) {
|
|
48
|
-
throw new
|
|
49
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: `multiple operators in single clause not supported: ${keys.join(", ")}` });
|
|
49
50
|
}
|
|
50
51
|
const op = keys[0];
|
|
51
52
|
return { op, value: v[op] };
|
|
@@ -73,11 +74,11 @@ function serializeWhereToPostgrest(where) {
|
|
|
73
74
|
if (opObj) {
|
|
74
75
|
if (opObj.op === "in") {
|
|
75
76
|
if (!Array.isArray(opObj.value))
|
|
76
|
-
throw new
|
|
77
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: `in clause requires array for column ${col}` });
|
|
77
78
|
for (const v of opObj.value) {
|
|
78
79
|
const s = String(v);
|
|
79
80
|
if (s.includes(",") || s.includes("(") || s.includes(")")) {
|
|
80
|
-
throw new
|
|
81
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: `in clause value contains reserved PostgREST chars (, ( )) — column ${col}` });
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
out[col] = `in.(${opObj.value.map(String).join(",")})`;
|
|
@@ -85,7 +86,7 @@ function serializeWhereToPostgrest(where) {
|
|
|
85
86
|
else {
|
|
86
87
|
const resolved = resolveNowSentinel(opObj.value, "postgrest");
|
|
87
88
|
if (resolved.kind === "sql")
|
|
88
|
-
throw new
|
|
89
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: "postgrest path cannot use sql sentinel" });
|
|
89
90
|
out[col] = `${opObj.op}.${String(resolved.value)}`;
|
|
90
91
|
}
|
|
91
92
|
}
|
|
@@ -118,7 +119,7 @@ function serializeWhereToPgSql(where, startIndex) {
|
|
|
118
119
|
if (opObj) {
|
|
119
120
|
if (opObj.op === "in") {
|
|
120
121
|
if (!Array.isArray(opObj.value))
|
|
121
|
-
throw new
|
|
122
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: `in clause requires array for column ${col}` });
|
|
122
123
|
const slots = opObj.value.map(() => `$${idx++}`);
|
|
123
124
|
params.push(...opObj.value);
|
|
124
125
|
parts.push(`${col} IN (${slots.join(", ")})`);
|
|
@@ -156,7 +157,7 @@ function serializeSetToPgSql(set, startIndex) {
|
|
|
156
157
|
if (typeof raw === "object" && raw !== null && "increment" in raw) {
|
|
157
158
|
const n = raw.increment;
|
|
158
159
|
if (typeof n !== "number" || !Number.isFinite(n))
|
|
159
|
-
throw new
|
|
160
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: `increment must be a finite number for column ${col}` });
|
|
160
161
|
parts.push(`${col} = ${col} + ${n}`);
|
|
161
162
|
continue;
|
|
162
163
|
}
|
|
@@ -178,11 +179,11 @@ function serializeSetToPostgrestBody(set, observed) {
|
|
|
178
179
|
if (typeof raw === "object" && raw !== null && "increment" in raw) {
|
|
179
180
|
const n = raw.increment;
|
|
180
181
|
if (typeof n !== "number" || !Number.isFinite(n))
|
|
181
|
-
throw new
|
|
182
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: `increment must be a finite number for column ${col}` });
|
|
182
183
|
const current = observed[col];
|
|
183
184
|
if (typeof current !== "number") {
|
|
184
185
|
const display = current === null ? "null" : typeof current;
|
|
185
|
-
throw new
|
|
186
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: `increment on ${col} requires observed numeric value (got ${display})` });
|
|
186
187
|
}
|
|
187
188
|
out[col] = current + n;
|
|
188
189
|
continue;
|
|
@@ -209,13 +210,13 @@ function incrementedColumns(set) {
|
|
|
209
210
|
*/
|
|
210
211
|
function validateClaimRowsOptions(opts) {
|
|
211
212
|
if (Object.keys(opts.where).length === 0) {
|
|
212
|
-
throw new
|
|
213
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: 'claimRows: where must contain at least one condition' });
|
|
213
214
|
}
|
|
214
215
|
if (Object.keys(opts.set).length === 0) {
|
|
215
|
-
throw new
|
|
216
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: 'claimRows: set must contain at least one field' });
|
|
216
217
|
}
|
|
217
218
|
if (opts.returning !== undefined && opts.returning.length === 0) {
|
|
218
|
-
throw new
|
|
219
|
+
throw new hazo_core_1.HazoValidationError({ code: 'HAZO_CONNECT_VALIDATION_ERROR', pkg: 'hazo_connect', message: 'claimRows: returning must contain at least one column (or omit for default *)' });
|
|
219
220
|
}
|
|
220
221
|
}
|
|
221
222
|
//# sourceMappingURL=clause-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clause-builder.js","sourceRoot":"","sources":["../../src/lib/adapters/clause-builder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"clause-builder.js","sourceRoot":"","sources":["../../src/lib/adapters/clause-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgrest-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/postgrest-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"postgrest-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/postgrest-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAUlD;;GAEG;AACH,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAY,YAAW,kBAAkB;IAC7E,OAAO,CAAC,eAAe,CAAiB;IAExC;;;;OAIG;gBACS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAoBxC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA2GzB;;;;;;OAMG;IACG,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,GAAG,CAAC;IAoBf;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAwFzE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAG3C,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,yBAAyB;IAyBjC;;;;;;;;;;;;;;;;;OAiBG;IACG,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IA8ElF;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,WAAW;CAKpB"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.PostgrestAdapter = void 0;
|
|
11
|
+
const hazo_core_1 = require("hazo_core");
|
|
11
12
|
const base_adapter_js_1 = require("./base-adapter.js");
|
|
12
13
|
const types_js_1 = require("../types.js");
|
|
13
14
|
const clause_builder_js_1 = require("./clause-builder.js");
|
|
@@ -188,7 +189,7 @@ class PostgrestAdapter extends base_adapter_js_1.BaseAdapter {
|
|
|
188
189
|
hasBody: !!options.body
|
|
189
190
|
});
|
|
190
191
|
try {
|
|
191
|
-
const response = await
|
|
192
|
+
const response = await (0, hazo_core_1.fetchWithRequestId)(url, { ...options, headers });
|
|
192
193
|
if (!response.ok) {
|
|
193
194
|
const errorData = await response.text();
|
|
194
195
|
const parsedDetails = this.parseErrorPayload(errorData);
|
|
@@ -300,10 +301,10 @@ class PostgrestAdapter extends base_adapter_js_1.BaseAdapter {
|
|
|
300
301
|
limit: String(limit),
|
|
301
302
|
...(orderClause ? { order: orderClause } : {}),
|
|
302
303
|
});
|
|
303
|
-
const candidatesRes = await
|
|
304
|
+
const candidatesRes = await (0, hazo_core_1.fetchWithRequestId)(getUrl, { headers: this.claimRowsHeaders() });
|
|
304
305
|
if (!candidatesRes.ok) {
|
|
305
306
|
const body = await candidatesRes.text();
|
|
306
|
-
throw new
|
|
307
|
+
throw new hazo_core_1.HazoUnavailableError({ code: 'HAZO_CONNECT_QUERY_TIMEOUT', pkg: 'hazo_connect', message: `claimRows: GET candidates failed (${candidatesRes.status}): ${body}` });
|
|
307
308
|
}
|
|
308
309
|
const candidates = (await candidatesRes.json());
|
|
309
310
|
if (candidates.length === 0)
|
|
@@ -322,7 +323,7 @@ class PostgrestAdapter extends base_adapter_js_1.BaseAdapter {
|
|
|
322
323
|
select: returning.join(','),
|
|
323
324
|
});
|
|
324
325
|
const body = (0, clause_builder_js_1.serializeSetToPostgrestBody)(opts.set, cand);
|
|
325
|
-
const patchRes = await
|
|
326
|
+
const patchRes = await (0, hazo_core_1.fetchWithRequestId)(patchUrl, {
|
|
326
327
|
method: 'PATCH',
|
|
327
328
|
headers: this.claimRowsHeaders({
|
|
328
329
|
'Content-Type': 'application/json',
|
|
@@ -333,7 +334,7 @@ class PostgrestAdapter extends base_adapter_js_1.BaseAdapter {
|
|
|
333
334
|
// 4xx/5xx are real errors — throw rather than silently swallow.
|
|
334
335
|
if (!patchRes.ok) {
|
|
335
336
|
const errBody = await patchRes.text();
|
|
336
|
-
throw new
|
|
337
|
+
throw new hazo_core_1.HazoUnavailableError({ code: 'HAZO_CONNECT_QUERY_TIMEOUT', pkg: 'hazo_connect', message: `claimRows: PATCH failed (${patchRes.status}): ${errBody}` });
|
|
337
338
|
}
|
|
338
339
|
// 2xx with empty array means the CAS witness failed — another worker claimed this row first.
|
|
339
340
|
const patched = (await patchRes.json());
|