@voltro/database 0.80.0 → 0.82.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/CHANGELOG.md +1610 -6
- package/dist/index.d.ts +83 -26
- package/dist/index.js +592 -583
- package/dist/{replaceInProgress-BmSjNTp0.js → replaceInProgress-BbN7p1Q-.js} +509 -461
- package/dist/sql.d.ts +421 -26
- package/dist/sql.js +1858 -1551
- package/package.json +2 -2
|
@@ -200,7 +200,7 @@ function f(e) {
|
|
|
200
200
|
idSchemeInput: e
|
|
201
201
|
});
|
|
202
202
|
}
|
|
203
|
-
var p = () => d("text"), m = () => d("integer"),
|
|
203
|
+
var p = () => d("text"), m = () => d("integer"), h = () => d("real"), g = (e, t = 0) => {
|
|
204
204
|
if (!Number.isInteger(e) || e <= 0) throw Error(`decimal(${String(e)}, ${String(t)}): precision must be a positive integer (the total number of significant digits, e.g. decimal(12, 2)).`);
|
|
205
205
|
if (!Number.isInteger(t) || t < 0 || t > e) throw Error(`decimal(${String(e)}, ${String(t)}): scale must be an integer between 0 and precision (${e}).`);
|
|
206
206
|
return new u({
|
|
@@ -211,7 +211,7 @@ var p = () => d("text"), m = () => d("integer"), ee = () => d("real"), h = (e, t
|
|
|
211
211
|
precision: e,
|
|
212
212
|
scale: t
|
|
213
213
|
});
|
|
214
|
-
},
|
|
214
|
+
}, ee = g, te = () => d("bigint"), ne = (e, t) => {
|
|
215
215
|
if (t.length === 0) throw Error(`dbEnum('${e}', []): enum must have at least one value`);
|
|
216
216
|
return {
|
|
217
217
|
name: e,
|
|
@@ -225,25 +225,25 @@ var p = () => d("text"), m = () => d("integer"), ee = () => d("real"), h = (e, t
|
|
|
225
225
|
enumValues: t
|
|
226
226
|
})
|
|
227
227
|
};
|
|
228
|
-
},
|
|
228
|
+
}, _ = () => d("boolean"), v = () => d("timestamp"), re = () => d("date"), y = () => d("json"), b = () => d("bytes"), x = () => new u({
|
|
229
229
|
type: "bytes",
|
|
230
230
|
nullable: !0,
|
|
231
231
|
unique: !1,
|
|
232
232
|
hasDefault: !1,
|
|
233
233
|
crdtManaged: !0
|
|
234
|
-
}),
|
|
234
|
+
}), ie = () => new u({
|
|
235
235
|
type: "bytes",
|
|
236
236
|
nullable: !0,
|
|
237
237
|
unique: !1,
|
|
238
238
|
hasDefault: !1,
|
|
239
239
|
crdtManaged: !0
|
|
240
|
-
}),
|
|
240
|
+
}), S = () => {
|
|
241
241
|
throw Error("selfReference(): the target is resolved by table() — a column built with selfReference() must be declared inside a table({ … }) literal, not read before the table exists");
|
|
242
242
|
};
|
|
243
|
-
function
|
|
244
|
-
return
|
|
243
|
+
function ae(e) {
|
|
244
|
+
return oe(S, e);
|
|
245
245
|
}
|
|
246
|
-
function
|
|
246
|
+
function oe(e, t) {
|
|
247
247
|
return new u({
|
|
248
248
|
type: "reference",
|
|
249
249
|
nullable: !1,
|
|
@@ -259,13 +259,13 @@ function se(e, t) {
|
|
|
259
259
|
...t?.orphanPolicy ? { orphanPolicy: t.orphanPolicy } : {}
|
|
260
260
|
});
|
|
261
261
|
}
|
|
262
|
-
var
|
|
262
|
+
var se = () => new u({
|
|
263
263
|
type: "text",
|
|
264
264
|
nullable: !0,
|
|
265
265
|
unique: !1,
|
|
266
266
|
hasDefault: !1,
|
|
267
267
|
dropped: !0
|
|
268
|
-
}),
|
|
268
|
+
}), ce = (e, t) => {
|
|
269
269
|
if (!Number.isInteger(e) || e <= 0) throw Error(`vector(${String(e)}): dimension must be a positive integer (the embedding length, e.g. vector(1536)).`);
|
|
270
270
|
return new u({
|
|
271
271
|
type: "vector",
|
|
@@ -275,13 +275,13 @@ var ce = () => new u({
|
|
|
275
275
|
vectorDim: e,
|
|
276
276
|
vectorPrecision: t?.precision ?? "float32"
|
|
277
277
|
});
|
|
278
|
-
},
|
|
278
|
+
}, le = (e) => new u({
|
|
279
279
|
type: "array",
|
|
280
280
|
nullable: !1,
|
|
281
281
|
unique: !1,
|
|
282
282
|
hasDefault: !1,
|
|
283
283
|
arrayElement: e.__definition().type
|
|
284
|
-
}),
|
|
284
|
+
}), ue = () => d("interval"), de = (e, t = 4326) => new u({
|
|
285
285
|
type: "text",
|
|
286
286
|
nullable: !1,
|
|
287
287
|
unique: !1,
|
|
@@ -291,7 +291,7 @@ var ce = () => new u({
|
|
|
291
291
|
geomKind: e,
|
|
292
292
|
srid: t
|
|
293
293
|
}
|
|
294
|
-
}),
|
|
294
|
+
}), fe = (e, t = 4326) => new u({
|
|
295
295
|
type: "text",
|
|
296
296
|
nullable: !1,
|
|
297
297
|
unique: !1,
|
|
@@ -301,182 +301,182 @@ var ce = () => new u({
|
|
|
301
301
|
geomKind: e,
|
|
302
302
|
srid: t
|
|
303
303
|
}
|
|
304
|
-
}),
|
|
304
|
+
}), pe = (e) => new u({
|
|
305
305
|
type: "raw",
|
|
306
306
|
nullable: !1,
|
|
307
307
|
unique: !1,
|
|
308
308
|
hasDefault: !1,
|
|
309
309
|
rawDdl: e
|
|
310
|
-
}),
|
|
310
|
+
}), C = (e) => {
|
|
311
311
|
let t = {};
|
|
312
312
|
for (let [n, r] of Object.entries(e)) t[n] = r.__definition();
|
|
313
313
|
return t;
|
|
314
|
-
},
|
|
314
|
+
}, me = /* @__PURE__ */ new WeakMap(), he = (e) => typeof e == "object" && e ? me.get(e) : void 0, ge = (e, t = {}) => {
|
|
315
315
|
let n = p();
|
|
316
|
-
return
|
|
316
|
+
return me.set(n, {
|
|
317
317
|
target: e,
|
|
318
318
|
orphanPolicy: t.orphanPolicy ?? "keep",
|
|
319
319
|
onSoftDelete: t.onSoftDelete ?? !1
|
|
320
320
|
}), n;
|
|
321
|
-
},
|
|
321
|
+
}, w = /* @__PURE__ */ new Map(), _e = (e, t) => {
|
|
322
322
|
if (t.from === t.to) throw Error(`declareEnumRename('${e}'): \`from\` and \`to\` are both '${t.from}' — a rename must change the value.`);
|
|
323
|
-
let n =
|
|
323
|
+
let n = w.get(e) ?? [];
|
|
324
324
|
for (let r of n) {
|
|
325
325
|
if (r.from === t.from && r.to === t.to) return;
|
|
326
326
|
if (r.from === t.from && r.to !== t.to) throw Error(`declareEnumRename('${e}'): value '${t.from}' is already declared as renamed to '${r.to}', cannot also rename it to '${t.to}'.`);
|
|
327
327
|
}
|
|
328
|
-
n.push(t),
|
|
329
|
-
},
|
|
330
|
-
|
|
331
|
-
},
|
|
328
|
+
n.push(t), w.set(e, n);
|
|
329
|
+
}, ve = (e) => w.get(e) ?? [], ye = () => w, be = () => {
|
|
330
|
+
w.clear();
|
|
331
|
+
}, xe = (t) => {
|
|
332
332
|
let r = t;
|
|
333
333
|
for (let t = 0; t < 4 && n.isFiberFailure(r); t++) r = e.squash(r[n.FiberFailureCauseId]);
|
|
334
334
|
return r;
|
|
335
|
-
},
|
|
335
|
+
}, T = (t, r = 0) => {
|
|
336
336
|
if (r >= 4 || !n.isFiberFailure(t)) return [t];
|
|
337
337
|
let i = t[n.FiberFailureCauseId], a = [...e.failures(i), ...e.defects(i)];
|
|
338
338
|
if (a.length === 0) return [e.squash(i)];
|
|
339
339
|
let o = [];
|
|
340
|
-
for (let e of a.slice(0, 8)) o.push(...
|
|
340
|
+
for (let e of a.slice(0, 8)) o.push(...T(e, r + 1));
|
|
341
341
|
return o;
|
|
342
|
-
},
|
|
343
|
-
let t = {}, n = [], r =
|
|
342
|
+
}, Se = (e) => e.dbCode !== void 0 || e.dbErrno !== void 0 || e.dbNumber !== void 0 || e.dbSqlState !== void 0 || e.dbConstraint !== void 0, Ce = (e) => {
|
|
343
|
+
let t = {}, n = [], r = xe(e);
|
|
344
344
|
for (let e = 0; e < 8 && typeof r == "object" && r; e++) {
|
|
345
345
|
let e = r;
|
|
346
346
|
t.dbCode === void 0 && (typeof e.code == "string" || typeof e.code == "number") && (t.dbCode = e.code), t.dbErrno === void 0 && typeof e.errno == "number" && (t.dbErrno = e.errno), t.dbNumber === void 0 && typeof e.number == "number" && (t.dbNumber = e.number), t.dbSqlState === void 0 && typeof e.sqlState == "string" && (t.dbSqlState = e.sqlState), t.dbBindings === void 0 && typeof e.voltroBindings == "string" && (t.dbBindings = e.voltroBindings), t.dbStatement === void 0 && typeof e.sql == "string" && e.sql.includes("?") && (t.dbStatement = e.sql, t.dbPlaceholders = (e.sql.match(/\?/g) ?? []).length), t.dbFatal === void 0 && typeof e.fatal == "boolean" && (t.dbFatal = e.fatal), t.dbConstraint === void 0 && typeof e.constraint == "string" && (t.dbConstraint = e.constraint), t.dbTable === void 0 && typeof e.table == "string" && (t.dbTable = e.table), t.dbColumn === void 0 && typeof e.column == "string" && (t.dbColumn = e.column), t.dbSchema === void 0 && typeof e.schema == "string" && (t.dbSchema = e.schema);
|
|
347
347
|
let i = e.sqlMessage ?? e.detail;
|
|
348
348
|
t.dbMessage === void 0 && typeof i == "string" && (t.dbMessage = i);
|
|
349
349
|
let a = typeof e.constructor == "function" ? e.constructor.name : void 0, o = typeof e._tag == "string" && e._tag || typeof e.name == "string" && e.name || (typeof a == "string" && a !== "Object" ? a : void 0), s = typeof e.message == "string" ? e.message : void 0;
|
|
350
|
-
(o || s) && n.push(`${o || "Error"}${s ? `: ${s.slice(0, 200)}` : ""}`), r =
|
|
350
|
+
(o || s) && n.push(`${o || "Error"}${s ? `: ${s.slice(0, 200)}` : ""}`), r = xe(e.cause);
|
|
351
351
|
}
|
|
352
352
|
return n.length > 0 && (t.dbCauseChain = n.join(" ← "), t.dbMessage === void 0 && (t.dbMessage = n[n.length - 1])), t;
|
|
353
|
-
},
|
|
354
|
-
let t =
|
|
353
|
+
}, we = (e) => {
|
|
354
|
+
let t = T(e).map(Ce);
|
|
355
355
|
if (t.length <= 1) return t[0] ?? {};
|
|
356
|
-
let n = t.find(
|
|
356
|
+
let n = t.find(Se) ?? t[0], r = t.filter((e) => e !== n).map((e) => e.dbCauseChain).filter((e) => typeof e == "string");
|
|
357
357
|
if (r.length === 0) return n;
|
|
358
358
|
let i = typeof n.dbCauseChain == "string" ? n.dbCauseChain : void 0;
|
|
359
359
|
return {
|
|
360
360
|
...n,
|
|
361
361
|
dbCauseChain: [i, ...r].filter(Boolean).join(" ‖ ")
|
|
362
362
|
};
|
|
363
|
-
},
|
|
364
|
-
let n =
|
|
363
|
+
}, Te = (e, t) => {
|
|
364
|
+
let n = De(e);
|
|
365
365
|
if (n !== void 0) return n;
|
|
366
|
-
let r =
|
|
366
|
+
let r = we(e), i = Ne(r, t);
|
|
367
367
|
if (i !== void 0) {
|
|
368
368
|
let e = i.constraint ?? i.column;
|
|
369
369
|
return e === void 0 ? i.kind : `${i.kind}: ${e}`;
|
|
370
370
|
}
|
|
371
|
-
let a = r.dbCode ?? r.dbSqlState ?? r.dbErrno ?? r.dbNumber, o =
|
|
372
|
-
return a !== void 0 &&
|
|
373
|
-
},
|
|
371
|
+
let a = r.dbCode ?? r.dbSqlState ?? r.dbErrno ?? r.dbNumber, o = Ae(e);
|
|
372
|
+
return a !== void 0 && Oe.test(String(a)) ? `${o} (${String(a)})` : o;
|
|
373
|
+
}, Ee = Symbol.for("@voltro/database/authoredMessage"), E = (e, t) => {
|
|
374
374
|
let n = t === void 0 ? Error(e) : Error(e, t);
|
|
375
|
-
return Object.defineProperty(n,
|
|
375
|
+
return Object.defineProperty(n, Ee, {
|
|
376
376
|
value: !0,
|
|
377
377
|
enumerable: !1
|
|
378
378
|
}), n;
|
|
379
|
-
},
|
|
380
|
-
for (let t of
|
|
379
|
+
}, De = (e) => {
|
|
380
|
+
for (let t of T(e)) {
|
|
381
381
|
let e = t;
|
|
382
382
|
for (let t = 0; typeof e == "object" && e && t < 8; t += 1) {
|
|
383
|
-
if (e[
|
|
383
|
+
if (e[Ee] === !0) {
|
|
384
384
|
let t = e.message;
|
|
385
385
|
if (typeof t == "string" && t.length > 0) return t;
|
|
386
386
|
}
|
|
387
387
|
e = e.cause;
|
|
388
388
|
}
|
|
389
389
|
}
|
|
390
|
-
},
|
|
390
|
+
}, Oe = /^[A-Za-z0-9_]{1,32}$/, ke = /^[A-Za-z_][A-Za-z0-9_]{0,63}$/, Ae = (e) => {
|
|
391
391
|
let t = e?._tag, n = e?.name, r = (typeof t == "string" ? t : typeof n == "string" ? n : "").split(/[^A-Za-z0-9_]+/).filter(Boolean).pop();
|
|
392
|
-
return r !== void 0 &&
|
|
393
|
-
},
|
|
392
|
+
return r !== void 0 && ke.test(r) ? r : "unknown";
|
|
393
|
+
}, je = /^[A-Za-z_][A-Za-z0-9_$]*$/, D = (e) => e !== void 0 && e.length <= 128 && je.test(e) ? e : void 0, Me = (e) => e === void 0 ? void 0 : e.split(".").pop() ?? e, O = (e, ...t) => {
|
|
394
394
|
for (let n of t) {
|
|
395
395
|
let t = n.exec(e);
|
|
396
396
|
if (t?.[1] !== void 0) return t[1];
|
|
397
397
|
}
|
|
398
|
-
},
|
|
398
|
+
}, Ne = (e, t) => {
|
|
399
399
|
let n = e.dbCode, r = e.dbErrno, i = e.dbNumber, a = typeof e.dbMessage == "string" ? e.dbMessage : "", o = `${typeof e.dbCauseChain == "string" ? e.dbCauseChain : ""} ${a}`;
|
|
400
400
|
if (n === "23503") {
|
|
401
|
-
let t =
|
|
401
|
+
let t = D(e.dbConstraint);
|
|
402
402
|
return {
|
|
403
403
|
kind: /is still referenced from table/i.test(o) ? "foreignKeyInUse" : "foreignKey",
|
|
404
404
|
...t === void 0 ? {} : { constraint: t }
|
|
405
405
|
};
|
|
406
406
|
}
|
|
407
407
|
if (n === "23505") {
|
|
408
|
-
let t =
|
|
408
|
+
let t = D(e.dbConstraint);
|
|
409
409
|
return {
|
|
410
410
|
kind: "unique",
|
|
411
411
|
...t === void 0 ? {} : { constraint: t }
|
|
412
412
|
};
|
|
413
413
|
}
|
|
414
414
|
if (n === "23502") {
|
|
415
|
-
let t =
|
|
415
|
+
let t = D(e.dbColumn);
|
|
416
416
|
return {
|
|
417
417
|
kind: "notNull",
|
|
418
418
|
...t === void 0 ? {} : { column: t }
|
|
419
419
|
};
|
|
420
420
|
}
|
|
421
421
|
if (n === "23514") {
|
|
422
|
-
let t =
|
|
422
|
+
let t = D(e.dbConstraint);
|
|
423
423
|
return {
|
|
424
424
|
kind: "check",
|
|
425
425
|
...t === void 0 ? {} : { constraint: t }
|
|
426
426
|
};
|
|
427
427
|
}
|
|
428
428
|
if (r === 1452 || r === 1451) {
|
|
429
|
-
let e =
|
|
429
|
+
let e = D(O(o, /CONSTRAINT `([^`]+)`/));
|
|
430
430
|
return {
|
|
431
431
|
kind: r === 1451 ? "foreignKeyInUse" : "foreignKey",
|
|
432
432
|
...e === void 0 ? {} : { constraint: e }
|
|
433
433
|
};
|
|
434
434
|
}
|
|
435
435
|
if (r === 1062) {
|
|
436
|
-
let e =
|
|
436
|
+
let e = D(Me(O(o, /for key '([^']+)'/)));
|
|
437
437
|
return {
|
|
438
438
|
kind: "unique",
|
|
439
439
|
...e === void 0 ? {} : { constraint: e }
|
|
440
440
|
};
|
|
441
441
|
}
|
|
442
442
|
if (r === 1048 || r === 1364) {
|
|
443
|
-
let e =
|
|
443
|
+
let e = D(O(o, /Column '([^']+)' cannot be null/, /Field '([^']+)' doesn't have a default value/));
|
|
444
444
|
return {
|
|
445
445
|
kind: "notNull",
|
|
446
446
|
...e === void 0 ? {} : { column: e }
|
|
447
447
|
};
|
|
448
448
|
}
|
|
449
449
|
if (r === 3819 || r === 4025) {
|
|
450
|
-
let e =
|
|
450
|
+
let e = D(O(o, /Check constraint '([^']+)'/, /CONSTRAINT `([^`]+)` failed/));
|
|
451
451
|
return {
|
|
452
452
|
kind: "check",
|
|
453
453
|
...e === void 0 ? {} : { constraint: e }
|
|
454
454
|
};
|
|
455
455
|
}
|
|
456
456
|
if (i === 547) {
|
|
457
|
-
let e =
|
|
457
|
+
let e = O(o, /(?:FOREIGN KEY|REFERENCE) constraint "([^"]+)"/), t = O(o, /CHECK constraint "([^"]+)"/);
|
|
458
458
|
if (t !== void 0 && e === void 0) {
|
|
459
|
-
let e =
|
|
459
|
+
let e = D(t);
|
|
460
460
|
return {
|
|
461
461
|
kind: "check",
|
|
462
462
|
...e === void 0 ? {} : { constraint: e }
|
|
463
463
|
};
|
|
464
464
|
}
|
|
465
|
-
let n = /REFERENCE constraint/.test(o), r =
|
|
465
|
+
let n = /REFERENCE constraint/.test(o), r = D(e);
|
|
466
466
|
return {
|
|
467
467
|
kind: n ? "foreignKeyInUse" : "foreignKey",
|
|
468
468
|
...r === void 0 ? {} : { constraint: r }
|
|
469
469
|
};
|
|
470
470
|
}
|
|
471
471
|
if (i === 2627 || i === 2601) {
|
|
472
|
-
let e =
|
|
472
|
+
let e = D(O(o, /(?:UNIQUE KEY|PRIMARY KEY) constraint '([^']+)'/, /index '([^']+)'/));
|
|
473
473
|
return {
|
|
474
474
|
kind: "unique",
|
|
475
475
|
...e === void 0 ? {} : { constraint: e }
|
|
476
476
|
};
|
|
477
477
|
}
|
|
478
478
|
if (i === 515) {
|
|
479
|
-
let e =
|
|
479
|
+
let e = D(O(o, /Cannot insert the value NULL into column '([^']+)'/));
|
|
480
480
|
return {
|
|
481
481
|
kind: "notNull",
|
|
482
482
|
...e === void 0 ? {} : { column: e }
|
|
@@ -484,40 +484,40 @@ var ce = () => new u({
|
|
|
484
484
|
}
|
|
485
485
|
if (n === "SQLITE_CONSTRAINT_FOREIGNKEY") return { kind: t === "delete" || t === "deleteMany" || t === "hardDelete" ? "foreignKeyInUse" : "foreignKey" };
|
|
486
486
|
if (n === "SQLITE_CONSTRAINT_UNIQUE" || n === "SQLITE_CONSTRAINT_PRIMARYKEY") {
|
|
487
|
-
let e =
|
|
487
|
+
let e = D(Me(O(o, /UNIQUE constraint failed: ([^,\s]+)/)));
|
|
488
488
|
return {
|
|
489
489
|
kind: "unique",
|
|
490
490
|
...e === void 0 ? {} : { column: e }
|
|
491
491
|
};
|
|
492
492
|
}
|
|
493
493
|
if (n === "SQLITE_CONSTRAINT_NOTNULL") {
|
|
494
|
-
let e =
|
|
494
|
+
let e = D(Me(O(o, /NOT NULL constraint failed: ([^,\s]+)/)));
|
|
495
495
|
return {
|
|
496
496
|
kind: "notNull",
|
|
497
497
|
...e === void 0 ? {} : { column: e }
|
|
498
498
|
};
|
|
499
499
|
}
|
|
500
500
|
if (n === "SQLITE_CONSTRAINT_CHECK") {
|
|
501
|
-
let e =
|
|
501
|
+
let e = D(O(a, /CHECK constraint failed: (.+)$/));
|
|
502
502
|
return {
|
|
503
503
|
kind: "check",
|
|
504
504
|
...e === void 0 ? {} : { constraint: e }
|
|
505
505
|
};
|
|
506
506
|
}
|
|
507
|
-
},
|
|
508
|
-
let t =
|
|
507
|
+
}, Pe = (e) => {
|
|
508
|
+
let t = Ne(e)?.kind;
|
|
509
509
|
return t === "foreignKey" || t === "foreignKeyInUse";
|
|
510
|
-
},
|
|
510
|
+
}, Fe = (e) => {
|
|
511
511
|
let t = e.dbCode, n = e.dbErrno;
|
|
512
512
|
return t === "57014" || n === 3024 || n === 1969 || t === "ETIMEOUT" || t === "SQLITE_INTERRUPT";
|
|
513
|
-
},
|
|
513
|
+
}, Ie = (e) => {
|
|
514
514
|
if (e.dbErrno !== 1366) return;
|
|
515
515
|
let t = `${typeof e.dbCauseChain == "string" ? e.dbCauseChain : ""} ${typeof e.dbMessage == "string" ? e.dbMessage : ""}`;
|
|
516
516
|
if (/Incorrect string value: '\\x(F[0-4])/i.exec(t) === null) return;
|
|
517
|
-
let n =
|
|
517
|
+
let n = O(t, /for column [`']?(?:[^`'.]+[`']?\.[`']?)*([^`'.]+)[`']? at row/);
|
|
518
518
|
return `${n === void 0 ? "the column" : `column '${n}'`} is stored in a character set that cannot hold a 4-byte character (utf8mb3). Declare the store's character set in app.config.ts — store: { dialect: 'mariadb' | 'mysql', charset: 'utf8mb4' } — and run \`voltro db plan\`: every declared table is created with it and converted to it.`;
|
|
519
|
-
},
|
|
520
|
-
let t =
|
|
519
|
+
}, Le = (e) => {
|
|
520
|
+
let t = we(e), n = [
|
|
521
521
|
t.dbCode === void 0 ? void 0 : `code=${String(t.dbCode)}`,
|
|
522
522
|
t.dbErrno === void 0 ? void 0 : `errno=${String(t.dbErrno)}`,
|
|
523
523
|
t.dbNumber === void 0 ? void 0 : `number=${String(t.dbNumber)}`,
|
|
@@ -526,9 +526,9 @@ var ce = () => new u({
|
|
|
526
526
|
t.dbPlaceholders === void 0 ? void 0 : `placeholders=${String(t.dbPlaceholders)}`
|
|
527
527
|
].filter((e) => e !== void 0), r = typeof e?.message == "string" ? e.message : void 0, i = typeof t.dbMessage == "string" ? t.dbMessage : void 0, a = i === void 0 ? void 0 : n.length > 0 || i !== r && i !== `Error: ${String(r)}` ? i : void 0, o = typeof t.dbBindings == "string" ? `\n bindings: ${t.dbBindings}` : "", s = typeof t.dbStatement == "string" ? `\n statement: ${t.dbStatement.length <= 400 ? t.dbStatement : `${t.dbStatement.slice(0, 400)}…`}` : "";
|
|
528
528
|
if (a === void 0 && n.length === 0) return;
|
|
529
|
-
let c =
|
|
529
|
+
let c = Ie(t), l = c === void 0 ? "" : `\n hint: ${c}`;
|
|
530
530
|
return [a, n.length > 0 ? `[${n.join(" ")}]` : void 0].filter((e) => e !== void 0 && e !== "").join(" ") + l + s + o;
|
|
531
|
-
},
|
|
531
|
+
}, Re = (e) => Object.entries(e).map(([e, t]) => `${e}:${ze(t)}`).join(" "), ze = (e) => {
|
|
532
532
|
if (e === null) return "null";
|
|
533
533
|
if (e === void 0) return "undefined";
|
|
534
534
|
if (typeof e == "bigint") return "bigint";
|
|
@@ -538,24 +538,24 @@ var ce = () => new u({
|
|
|
538
538
|
if (globalThis.Buffer !== void 0 && globalThis.Buffer.isBuffer(e)) return "Buffer";
|
|
539
539
|
let t = e.constructor?.name;
|
|
540
540
|
return typeof t == "string" && t !== "" ? t : "Object";
|
|
541
|
-
},
|
|
542
|
-
|
|
543
|
-
},
|
|
544
|
-
let e =
|
|
545
|
-
return
|
|
546
|
-
},
|
|
541
|
+
}, Be = 63, Ve = 60, k = [], A = (e) => {
|
|
542
|
+
k.includes(e) || k.push(e);
|
|
543
|
+
}, He = () => {
|
|
544
|
+
let e = k.slice();
|
|
545
|
+
return k.length = 0, e;
|
|
546
|
+
}, Ue = /^[a-zA-Z_][a-zA-Z0-9_]*$/, We = (e, t) => {
|
|
547
547
|
if (t.length === 0) throw Error(`${e} cannot be empty.`);
|
|
548
|
-
if (!
|
|
549
|
-
},
|
|
550
|
-
if (
|
|
551
|
-
e.length > 60 &&
|
|
552
|
-
},
|
|
553
|
-
if (
|
|
554
|
-
t.length > 60 &&
|
|
555
|
-
},
|
|
556
|
-
if (
|
|
557
|
-
t.length > 60 &&
|
|
558
|
-
},
|
|
548
|
+
if (!Ue.test(t)) throw Error(`${e} '${t}' contains characters outside [A-Za-z0-9_] or starts with a digit. Dialect-portable identifiers must match /^[a-zA-Z_][a-zA-Z0-9_]*$/.`);
|
|
549
|
+
}, j = (e) => {
|
|
550
|
+
if (We("table name", e), e.length > 63) throw Error(`table name '${e}' is ${e.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Shorten the name; long table names also cascade into auto-named indexes and FK constraints that would themselves exceed the limit.`);
|
|
551
|
+
e.length > 60 && A(`table name '${e}' is ${e.length} chars — ${63 - e.length} from the Postgres 63-byte limit. Auto-named indexes on this table will run out of room fast.`);
|
|
552
|
+
}, M = (e, t) => {
|
|
553
|
+
if (We("column name", t), t.length > 63) throw Error(`column '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Rename it.`);
|
|
554
|
+
t.length > 60 && A(`column '${t}' on table '${e}' is ${t.length} chars — close to the 63-byte limit.`);
|
|
555
|
+
}, N = (e, t, n, r) => {
|
|
556
|
+
if (We("index name", t), t.length > 63) throw Error(n ? `auto-named index '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Supply an explicit short name: .index('<shortName>', ${JSON.stringify([...r])}).` : `index name '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Shorten it.`);
|
|
557
|
+
t.length > 60 && A(`index '${t}' on table '${e}' is ${t.length} chars — ${63 - t.length} from the 63-byte limit. ${n ? `Consider .index('<shortName>', ${JSON.stringify([...r])}) before it grows.` : ""}`);
|
|
558
|
+
}, P = (e, t) => {
|
|
559
559
|
if (e.length === 0) throw Error(`typeid prefix on table '${t.tableName}' cannot be empty.`);
|
|
560
560
|
if (!/^[a-z][a-z0-9_]*$/.test(e)) {
|
|
561
561
|
let n = t.kind === "derived" ? "the derived prefix doesn't match typeid's required shape — supply an explicit one via id({ prefix: '...' })." : "the prefix must match typeid's required shape /^[a-z][a-z0-9_]*$/.";
|
|
@@ -565,44 +565,44 @@ var ce = () => new u({
|
|
|
565
565
|
let n = t.kind === "derived" ? "shorten the table name, or supply an explicit short prefix via id({ prefix: '...' })." : "pick a shorter prefix.";
|
|
566
566
|
throw Error(`typeid prefix '${e}' on table '${t.tableName}' is ${e.length} chars — exceeds the 63-byte limit; ${n}`);
|
|
567
567
|
}
|
|
568
|
-
e.length > 60 &&
|
|
569
|
-
},
|
|
568
|
+
e.length > 60 && A(`typeid prefix '${e}' on table '${t.tableName}' is ${e.length} chars — close to the 63-byte limit. Generated ids will be even longer (prefix + '_' + 26).`);
|
|
569
|
+
}, Ge = 1704067200000n, Ke = 10n, qe = 12n, Je = (1n << Ke) - 1n, Ye = (1n << qe) - 1n, Xe = qe, Ze = 22n, Qe = () => {
|
|
570
570
|
let e = process.env.SNOWFLAKE_MACHINE_ID;
|
|
571
571
|
if (e === void 0 || e === "") return 0n;
|
|
572
572
|
let t = BigInt(e);
|
|
573
|
-
if (t < 0n || t >
|
|
573
|
+
if (t < 0n || t > Je) throw Error(`SNOWFLAKE_MACHINE_ID out of range: ${e}. Must be 0..${Je}.`);
|
|
574
574
|
return t;
|
|
575
|
-
},
|
|
575
|
+
}, $e = () => ({
|
|
576
576
|
lastMs: 0n,
|
|
577
577
|
sequence: 0n,
|
|
578
|
-
machineId:
|
|
579
|
-
}),
|
|
580
|
-
|
|
581
|
-
},
|
|
582
|
-
let t =
|
|
583
|
-
for (; t <= e;) t =
|
|
578
|
+
machineId: Qe()
|
|
579
|
+
}), F, et = () => (F === void 0 && (F = $e()), F), tt = () => {
|
|
580
|
+
F = $e();
|
|
581
|
+
}, nt = () => BigInt(Date.now()), rt = (e) => {
|
|
582
|
+
let t = nt();
|
|
583
|
+
for (; t <= e;) t = nt();
|
|
584
584
|
return t;
|
|
585
|
-
},
|
|
586
|
-
let e =
|
|
587
|
-
t === e.lastMs ? (e.sequence = e.sequence + 1n &
|
|
588
|
-
let n = t -
|
|
585
|
+
}, it = () => {
|
|
586
|
+
let e = et(), t = nt();
|
|
587
|
+
t === e.lastMs ? (e.sequence = e.sequence + 1n & Ye, e.sequence === 0n && (t = rt(e.lastMs), e.lastMs = t)) : (e.sequence = 0n, e.lastMs = t);
|
|
588
|
+
let n = t - Ge;
|
|
589
589
|
if (n < 0n) throw Error("Snowflake timestamp before configured epoch (2024-01-01). System clock is wrong.");
|
|
590
|
-
return (n <<
|
|
591
|
-
},
|
|
590
|
+
return (n << Ze | e.machineId << Xe | e.sequence).toString();
|
|
591
|
+
}, at = (e) => {
|
|
592
592
|
let t = e.toLowerCase();
|
|
593
593
|
if (t.startsWith("_")) throw Error(`cannot derive a typeid prefix for table '${e}' (table names starting with '_' are not valid typeid prefixes). Pick an explicit prefix via id({ prefix: '...' }) or use a different scheme like id({ scheme: 'numeric' }) for internal tables.`);
|
|
594
594
|
if (!/^[a-z][a-z0-9_]*$/.test(t)) throw Error(`cannot derive a typeid prefix from table name '${e}' (must match [a-z][a-z0-9_]*). Pick an explicit prefix via id({ prefix: '...' }).`);
|
|
595
595
|
let n = t.endsWith("ies") && t.length > 3 ? t.slice(0, -3) + "y" : t.endsWith("ses") || t.endsWith("xes") || t.endsWith("zes") || t.endsWith("shes") || t.endsWith("ches") ? t.slice(0, -2) : t.endsWith("s") && t.length > 1 ? t.slice(0, -1) : t;
|
|
596
|
-
return
|
|
596
|
+
return P(n, {
|
|
597
597
|
kind: "derived",
|
|
598
598
|
tableName: e
|
|
599
599
|
}), n;
|
|
600
|
-
},
|
|
600
|
+
}, ot = (e, t) => {
|
|
601
601
|
if (e === void 0) return {
|
|
602
602
|
kind: "typeid",
|
|
603
|
-
prefix:
|
|
603
|
+
prefix: at(t)
|
|
604
604
|
};
|
|
605
|
-
if ("prefix" in e && !("scheme" in e)) return
|
|
605
|
+
if ("prefix" in e && !("scheme" in e)) return P(e.prefix, {
|
|
606
606
|
kind: "explicit",
|
|
607
607
|
tableName: t
|
|
608
608
|
}), {
|
|
@@ -612,8 +612,8 @@ var ce = () => new u({
|
|
|
612
612
|
if (!("scheme" in e)) throw Error("invalid id() options: no scheme or prefix");
|
|
613
613
|
switch (e.scheme) {
|
|
614
614
|
case "typeid": {
|
|
615
|
-
let n = e.prefix ??
|
|
616
|
-
return e.prefix !== void 0 &&
|
|
615
|
+
let n = e.prefix ?? at(t);
|
|
616
|
+
return e.prefix !== void 0 && P(e.prefix, {
|
|
617
617
|
kind: "explicit",
|
|
618
618
|
tableName: t
|
|
619
619
|
}), {
|
|
@@ -629,22 +629,22 @@ var ce = () => new u({
|
|
|
629
629
|
generate: e.generate
|
|
630
630
|
};
|
|
631
631
|
}
|
|
632
|
-
},
|
|
632
|
+
}, st = (e, t) => {
|
|
633
633
|
switch (e.kind) {
|
|
634
634
|
case "typeid": return i(e.prefix).toString();
|
|
635
635
|
case "ulid": return a();
|
|
636
636
|
case "numeric": return null;
|
|
637
|
-
case "snowflake": return
|
|
637
|
+
case "snowflake": return it();
|
|
638
638
|
case "custom": return e.generate(t);
|
|
639
639
|
}
|
|
640
|
-
},
|
|
641
|
-
fields:
|
|
640
|
+
}, ct = (e) => ({
|
|
641
|
+
fields: C(e.fields),
|
|
642
642
|
...e.id === void 0 ? {} : { id: e.id },
|
|
643
643
|
...e.requires === void 0 ? {} : { requires: e.requires },
|
|
644
644
|
...e.indexes === void 0 ? {} : { indexes: e.indexes },
|
|
645
645
|
...e.behaviors === void 0 ? {} : { behaviors: e.behaviors },
|
|
646
646
|
...e.policies === void 0 ? {} : { policies: e.policies }
|
|
647
|
-
}),
|
|
647
|
+
}), lt = ct, ut = (e) => {
|
|
648
648
|
let t = /* @__PURE__ */ new Set(), n = [], r = (e) => {
|
|
649
649
|
let i = e.id ?? e;
|
|
650
650
|
if (!t.has(i)) {
|
|
@@ -654,7 +654,7 @@ var ce = () => new u({
|
|
|
654
654
|
};
|
|
655
655
|
for (let t of e) r(t);
|
|
656
656
|
return n;
|
|
657
|
-
},
|
|
657
|
+
}, dt = (e, ...t) => {
|
|
658
658
|
if (t.length === 0) throw Error(`jsonIndex("${e}"): at least one path segment is required`);
|
|
659
659
|
let n = (r) => ({
|
|
660
660
|
jsonPath: {
|
|
@@ -665,14 +665,14 @@ var ce = () => new u({
|
|
|
665
665
|
numeric: () => n(!0)
|
|
666
666
|
});
|
|
667
667
|
return n(!1);
|
|
668
|
-
},
|
|
668
|
+
}, ft = (e = "cosine", t = "float32") => {
|
|
669
669
|
let n = t === "half" ? "halfvec" : "vector";
|
|
670
670
|
switch (e) {
|
|
671
671
|
case "cosine": return `${n}_cosine_ops`;
|
|
672
672
|
case "l2": return `${n}_l2_ops`;
|
|
673
673
|
case "inner": return `${n}_ip_ops`;
|
|
674
674
|
}
|
|
675
|
-
},
|
|
675
|
+
}, pt = [
|
|
676
676
|
"id",
|
|
677
677
|
"tenantId",
|
|
678
678
|
"createdAt",
|
|
@@ -681,7 +681,7 @@ var ce = () => new u({
|
|
|
681
681
|
"updatedBy",
|
|
682
682
|
"deletedAt",
|
|
683
683
|
"deletedBy"
|
|
684
|
-
],
|
|
684
|
+
], mt = (e) => e.id ?? `<anonymous mixin: ${Object.keys(e.fields).join(", ")}>`, ht = (e, t) => `${e}_${t.join("_")}_idx`, gt = (e, t) => `${e}_${t.join("_")}_uq`, _t = (e, t, n, r, i) => {
|
|
685
685
|
if (n !== "hnsw") return;
|
|
686
686
|
if (r.length !== 1) throw Error(`hnsw index '${t}' on table '${e}' must cover exactly one vector column — got ${r.length} fields. pgvector's HNSW access method indexes a single vector column.`);
|
|
687
687
|
let a = r[0];
|
|
@@ -689,14 +689,14 @@ var ce = () => new u({
|
|
|
689
689
|
let o = i[a];
|
|
690
690
|
if (o === void 0) throw Error(`hnsw index '${t}' on table '${e}' references unknown column '${a}'.`);
|
|
691
691
|
if (o.type !== "vector") throw Error(`hnsw index '${t}' on table '${e}' requires a vector() column — column '${a}' is '${o.type}'. HNSW is the pgvector approximate-nearest-neighbour method and only applies to vectors.`);
|
|
692
|
-
},
|
|
692
|
+
}, vt = (e, t) => {
|
|
693
693
|
let n;
|
|
694
694
|
for (let [r, i] of Object.entries(e)) i.type === "id" && i.idScheme === void 0 && (n === void 0 && (n = { ...e }), n[r] = {
|
|
695
695
|
...i,
|
|
696
|
-
idScheme:
|
|
696
|
+
idScheme: ot(i.idSchemeInput, t)
|
|
697
697
|
});
|
|
698
698
|
return n ?? e;
|
|
699
|
-
},
|
|
699
|
+
}, I = (e) => {
|
|
700
700
|
let t = e.appliedPrimaryKey ?? [];
|
|
701
701
|
return {
|
|
702
702
|
tableName: e.tableName,
|
|
@@ -715,8 +715,8 @@ var ce = () => new u({
|
|
|
715
715
|
...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema },
|
|
716
716
|
fullTextIndex: ((t, n, r) => {
|
|
717
717
|
if (n.length === 0) throw Error(`fullTextIndex '${t}' on '${e.tableName}' has no columns.`);
|
|
718
|
-
if (
|
|
719
|
-
return
|
|
718
|
+
if (N(e.tableName, t, !1, n), e.appliedFullText.some((e) => e.name === t)) throw Error(`duplicate full-text index '${t}' on table '${e.tableName}'.`);
|
|
719
|
+
return I({
|
|
720
720
|
...e,
|
|
721
721
|
tableName: e.tableName,
|
|
722
722
|
fields: e.fields,
|
|
@@ -737,27 +737,27 @@ var ce = () => new u({
|
|
|
737
737
|
});
|
|
738
738
|
}),
|
|
739
739
|
with: ((...t) => {
|
|
740
|
-
let n =
|
|
740
|
+
let n = ut(t), r = { ...e.fields }, i = /* @__PURE__ */ new Map();
|
|
741
741
|
for (let e of Object.keys(r)) i.set(e, {
|
|
742
742
|
id: "<table>",
|
|
743
743
|
fields: {}
|
|
744
744
|
});
|
|
745
745
|
for (let t of n) for (let [n, a] of Object.entries(t.fields)) {
|
|
746
746
|
let o = i.get(n);
|
|
747
|
-
if (o !== void 0) throw Error(`mixin collision on column '${n}' in table '${e.tableName}': '${
|
|
748
|
-
|
|
747
|
+
if (o !== void 0) throw Error(`mixin collision on column '${n}' in table '${e.tableName}': '${mt(o)}' and '${mt(t)}' both define it. If they're the same mixin reached via different paths, set a shared 'id' on both. If they're genuinely different concerns, rename one of the columns.`);
|
|
748
|
+
M(e.tableName, n), r[n] = a, i.set(n, t);
|
|
749
749
|
}
|
|
750
750
|
let a = [...e.appliedIndexes];
|
|
751
751
|
for (let t of n) for (let n of t.indexes ?? []) {
|
|
752
|
-
let t = n.name ??
|
|
753
|
-
a.some((e) => e.name === t) || (
|
|
752
|
+
let t = n.name ?? ht(e.tableName, n.fields);
|
|
753
|
+
a.some((e) => e.name === t) || (N(e.tableName, t, n.name === void 0, n.fields), _t(e.tableName, t, n.kind, n.fields, r), a.push({
|
|
754
754
|
name: t,
|
|
755
755
|
fields: n.fields,
|
|
756
756
|
...n.kind === void 0 ? {} : { kind: n.kind },
|
|
757
757
|
...n.kindOptions === void 0 ? {} : { kindOptions: n.kindOptions }
|
|
758
758
|
}));
|
|
759
759
|
}
|
|
760
|
-
return
|
|
760
|
+
return I({
|
|
761
761
|
...e,
|
|
762
762
|
tableName: e.tableName,
|
|
763
763
|
fields: r,
|
|
@@ -774,10 +774,10 @@ var ce = () => new u({
|
|
|
774
774
|
}),
|
|
775
775
|
index: ((...t) => {
|
|
776
776
|
let n, r, i, a = Array.isArray(t[0]);
|
|
777
|
-
if (a ? (r = t[0], i = t[1], n =
|
|
777
|
+
if (a ? (r = t[0], i = t[1], n = ht(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`index '${n}' on table '${e.tableName}' has no fields — an index must cover at least one column.`);
|
|
778
778
|
let o = r.filter((e) => typeof e == "string");
|
|
779
|
-
if (
|
|
780
|
-
return
|
|
779
|
+
if (N(e.tableName, n, a, o), _t(e.tableName, n, i?.kind, r, e.fields), e.appliedIndexes.some((e) => e.name === n)) throw t.length === 1 ? Error(`duplicate auto-named index '${n}' on table '${e.tableName}' — you've called .index(${JSON.stringify(r)}) twice. Pass an explicit name to the second one if both are intended (rare).`) : Error(`duplicate index '${n}' on table '${e.tableName}': each index name must be unique within a table.`);
|
|
780
|
+
return I({
|
|
781
781
|
...e,
|
|
782
782
|
tableName: e.tableName,
|
|
783
783
|
fields: e.fields,
|
|
@@ -801,8 +801,8 @@ var ce = () => new u({
|
|
|
801
801
|
expressionIndex: ((t, n, r) => {
|
|
802
802
|
if (n.length === 0) throw Error(`expressionIndex '${t}' on table '${e.tableName}' has no fields — an index must cover at least one column or expression.`);
|
|
803
803
|
let i = n.filter((e) => typeof e == "string");
|
|
804
|
-
if (
|
|
805
|
-
return
|
|
804
|
+
if (N(e.tableName, t, !1, i), _t(e.tableName, t, r?.kind, n, e.fields), e.appliedIndexes.some((e) => e.name === t)) throw Error(`duplicate index '${t}' on table '${e.tableName}': each index name must be unique within a table.`);
|
|
805
|
+
return I({
|
|
806
806
|
...e,
|
|
807
807
|
tableName: e.tableName,
|
|
808
808
|
fields: e.fields,
|
|
@@ -825,9 +825,9 @@ var ce = () => new u({
|
|
|
825
825
|
}),
|
|
826
826
|
unique: ((...t) => {
|
|
827
827
|
let n, r, i, a = Array.isArray(t[0]);
|
|
828
|
-
if (a ? (r = t[0], i = t[1], n =
|
|
829
|
-
if (
|
|
830
|
-
return
|
|
828
|
+
if (a ? (r = t[0], i = t[1], n = gt(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`unique '${n}' on table '${e.tableName}' has no fields — a UNIQUE constraint must cover at least one column.`);
|
|
829
|
+
if (N(e.tableName, n, a, r), e.appliedUniques.some((e) => e.name === n)) throw Error(a ? `duplicate auto-named UNIQUE '${n}' on table '${e.tableName}' — you've called .unique(${JSON.stringify(r)}) twice. Pass an explicit name to the second one if both are intended (very rare).` : `duplicate UNIQUE '${n}' on table '${e.tableName}': each constraint name must be unique within a table.`);
|
|
830
|
+
return I({
|
|
831
831
|
...e,
|
|
832
832
|
tableName: e.tableName,
|
|
833
833
|
fields: e.fields,
|
|
@@ -848,10 +848,10 @@ var ce = () => new u({
|
|
|
848
848
|
}),
|
|
849
849
|
uniqueActive: ((...t) => {
|
|
850
850
|
let n, r, i, a = Array.isArray(t[0]);
|
|
851
|
-
if (a ? (r = t[0], i = t[1], n =
|
|
852
|
-
if (
|
|
851
|
+
if (a ? (r = t[0], i = t[1], n = ht(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`uniqueActive '${n}' on table '${e.tableName}' has no fields — a partial UNIQUE must cover at least one column.`);
|
|
852
|
+
if (N(e.tableName, n, a, r), e.appliedIndexes.some((e) => e.name === n)) throw Error(`duplicate index '${n}' on table '${e.tableName}': each index name must be unique within a table (uniqueActive shares the index namespace).`);
|
|
853
853
|
let o = i?.where ?? "\"deletedAt\" IS NULL";
|
|
854
|
-
return
|
|
854
|
+
return I({
|
|
855
855
|
...e,
|
|
856
856
|
tableName: e.tableName,
|
|
857
857
|
fields: e.fields,
|
|
@@ -873,8 +873,8 @@ var ce = () => new u({
|
|
|
873
873
|
}),
|
|
874
874
|
check: ((t, n) => {
|
|
875
875
|
if (n.trim().length === 0) throw Error(`CHECK '${t}' on table '${e.tableName}' has an empty expression.`);
|
|
876
|
-
if (
|
|
877
|
-
return
|
|
876
|
+
if (N(e.tableName, t, !1, []), e.appliedChecks.some((e) => e.name === t)) throw Error(`duplicate CHECK '${t}' on table '${e.tableName}': each constraint name must be unique within a table.`);
|
|
877
|
+
return I({
|
|
878
878
|
...e,
|
|
879
879
|
tableName: e.tableName,
|
|
880
880
|
fields: e.fields,
|
|
@@ -896,7 +896,7 @@ var ce = () => new u({
|
|
|
896
896
|
if (t.trim().length === 0) throw Error(`rule on table '${e.tableName}' has an empty name.`);
|
|
897
897
|
let i = e.appliedRules ?? [];
|
|
898
898
|
if (i.some((e) => e.name === t)) throw Error(`duplicate rule '${t}' on table '${e.tableName}': each rule name must be unique within a table.`);
|
|
899
|
-
return
|
|
899
|
+
return I({
|
|
900
900
|
...e,
|
|
901
901
|
appliedRules: [...i, {
|
|
902
902
|
name: t,
|
|
@@ -907,7 +907,7 @@ var ce = () => new u({
|
|
|
907
907
|
}),
|
|
908
908
|
renamedFrom: ((t) => {
|
|
909
909
|
if (t === e.tableName) throw Error(`renamedFrom('${t}') on table '${e.tableName}' names the table itself — drop the marker, there is nothing to rename.`);
|
|
910
|
-
return
|
|
910
|
+
return j(t), I({
|
|
911
911
|
...e,
|
|
912
912
|
previousTableName: t
|
|
913
913
|
});
|
|
@@ -922,7 +922,7 @@ var ce = () => new u({
|
|
|
922
922
|
}
|
|
923
923
|
if (t.length > 0) throw Error(`primaryKey([...]) declared twice on table '${e.tableName}'.`);
|
|
924
924
|
for (let [t, r] of Object.entries(e.fields)) if (r.type === "id" && !n.includes(t)) throw Error(`primaryKey([...]) on table '${e.tableName}' conflicts with the id() column '${t}'. The explicit primary key IS the key — drop the id() column, or include '${t}' in the composite key.`);
|
|
925
|
-
return
|
|
925
|
+
return I({
|
|
926
926
|
...e,
|
|
927
927
|
tableName: e.tableName,
|
|
928
928
|
fields: e.fields,
|
|
@@ -937,7 +937,7 @@ var ce = () => new u({
|
|
|
937
937
|
...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
|
|
938
938
|
});
|
|
939
939
|
}),
|
|
940
|
-
nonReactive: (() =>
|
|
940
|
+
nonReactive: (() => I({
|
|
941
941
|
...e,
|
|
942
942
|
tableName: e.tableName,
|
|
943
943
|
fields: e.fields,
|
|
@@ -951,7 +951,7 @@ var ce = () => new u({
|
|
|
951
951
|
...e.insertSchema === void 0 ? {} : { insertSchema: e.insertSchema },
|
|
952
952
|
...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
|
|
953
953
|
})),
|
|
954
|
-
validate: ((t) =>
|
|
954
|
+
validate: ((t) => I({
|
|
955
955
|
...e,
|
|
956
956
|
tableName: e.tableName,
|
|
957
957
|
fields: e.fields,
|
|
@@ -965,7 +965,7 @@ var ce = () => new u({
|
|
|
965
965
|
insertSchema: t,
|
|
966
966
|
...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
|
|
967
967
|
})),
|
|
968
|
-
validatePatch: ((t) =>
|
|
968
|
+
validatePatch: ((t) => I({
|
|
969
969
|
...e,
|
|
970
970
|
tableName: e.tableName,
|
|
971
971
|
fields: e.fields,
|
|
@@ -980,22 +980,22 @@ var ce = () => new u({
|
|
|
980
980
|
validatePatchSchema: r.partial(t)
|
|
981
981
|
}))
|
|
982
982
|
};
|
|
983
|
-
},
|
|
984
|
-
|
|
983
|
+
}, L = (e, t) => {
|
|
984
|
+
j(e);
|
|
985
985
|
let n = Object.entries(t).flatMap(([e, t]) => {
|
|
986
|
-
let n =
|
|
986
|
+
let n = he(t);
|
|
987
987
|
return n === void 0 ? [] : [{
|
|
988
988
|
column: e,
|
|
989
989
|
...n
|
|
990
990
|
}];
|
|
991
|
-
}), r =
|
|
992
|
-
for (let t of Object.keys(r))
|
|
991
|
+
}), r = vt(C(t), e);
|
|
992
|
+
for (let t of Object.keys(r)) M(e, t);
|
|
993
993
|
let i;
|
|
994
|
-
for (let [t, n] of Object.entries(r)) n.references ===
|
|
994
|
+
for (let [t, n] of Object.entries(r)) n.references === S && (n.references = () => {
|
|
995
995
|
if (i === void 0) throw Error(`selfReference() on '${e}.${t}' read before table() returned`);
|
|
996
996
|
return i;
|
|
997
997
|
});
|
|
998
|
-
return i =
|
|
998
|
+
return i = I({
|
|
999
999
|
appliedPluginRefs: n,
|
|
1000
1000
|
tableName: e,
|
|
1001
1001
|
fields: r,
|
|
@@ -1007,7 +1007,7 @@ var ce = () => new u({
|
|
|
1007
1007
|
appliedChecks: [],
|
|
1008
1008
|
appliedRules: []
|
|
1009
1009
|
}), i;
|
|
1010
|
-
},
|
|
1010
|
+
}, yt = (e) => e === "sqlite" || e === "turso", bt = (e) => e === "mysql" || e === "mariadb", R = (e, t) => {
|
|
1011
1011
|
switch (t) {
|
|
1012
1012
|
case "mysql":
|
|
1013
1013
|
case "mariadb": return `\`${e.replace(/`/g, "``")}\``;
|
|
@@ -1016,51 +1016,51 @@ var ce = () => new u({
|
|
|
1016
1016
|
case "sqlite":
|
|
1017
1017
|
case "turso": return `"${e.replace(/"/g, "\"\"")}"`;
|
|
1018
1018
|
}
|
|
1019
|
-
},
|
|
1020
|
-
let t =
|
|
1019
|
+
}, xt = 1e4, St = Symbol.for("@voltro/database/tableRegistry"), Ct = globalThis, z = Ct[St] ?? (Ct[St] = /* @__PURE__ */ new Map()), wt = (e) => {
|
|
1020
|
+
let t = z.get(e.tableName);
|
|
1021
1021
|
if (t === void 0) {
|
|
1022
|
-
|
|
1022
|
+
z.set(e.tableName, e);
|
|
1023
1023
|
return;
|
|
1024
1024
|
}
|
|
1025
1025
|
if (t !== e) throw Error(`duplicate table '${e.tableName}' registration: two different table descriptors claim the same name. Rename one or import the shared module that defines it.`);
|
|
1026
|
-
},
|
|
1027
|
-
|
|
1028
|
-
},
|
|
1029
|
-
let t =
|
|
1026
|
+
}, Tt = (e) => {
|
|
1027
|
+
z.get(e.tableName) === void 0 && z.set(e.tableName, e);
|
|
1028
|
+
}, B = (e) => z.get(e), Et = (e) => {
|
|
1029
|
+
let t = z.get(e);
|
|
1030
1030
|
if (t === void 0) throw Error(`table '${e}' is not registered. Register it by wrapping it in \`databaseHandle({ ... })\` (the usual path) or call \`registerTable(t)\` explicitly before this runs. Note a \`queryFor(t)\` query carries its own source table, so eager-loads don't hit this — this error means a reconstructed descriptor or by-name tooling reached an unregistered table.`);
|
|
1031
1031
|
return t;
|
|
1032
|
-
},
|
|
1033
|
-
|
|
1034
|
-
},
|
|
1032
|
+
}, Dt = () => [...z.values()], Ot = (e) => z.delete(e), kt = () => {
|
|
1033
|
+
z.clear();
|
|
1034
|
+
}, At = (e) => z.get(e)?.isReactive !== !1, V = (e) => e.order ?? [], jt = (e) => ({
|
|
1035
1035
|
op: "count",
|
|
1036
1036
|
alias: e ?? "count"
|
|
1037
|
-
}),
|
|
1037
|
+
}), Mt = (e, t) => ({
|
|
1038
1038
|
op: "count-distinct",
|
|
1039
1039
|
column: e,
|
|
1040
1040
|
alias: t ?? `count_distinct_${e}`
|
|
1041
|
-
}),
|
|
1041
|
+
}), Nt = (e, t) => ({
|
|
1042
1042
|
op: "sum",
|
|
1043
1043
|
column: e,
|
|
1044
1044
|
alias: t ?? `sum_${e}`
|
|
1045
|
-
}),
|
|
1045
|
+
}), Pt = (e, t) => ({
|
|
1046
1046
|
op: "avg",
|
|
1047
1047
|
column: e,
|
|
1048
1048
|
alias: t ?? `avg_${e}`
|
|
1049
|
-
}),
|
|
1049
|
+
}), Ft = (e, t) => ({
|
|
1050
1050
|
op: "min",
|
|
1051
1051
|
column: e,
|
|
1052
1052
|
alias: t ?? `min_${e}`
|
|
1053
|
-
}),
|
|
1053
|
+
}), It = (e, t) => ({
|
|
1054
1054
|
op: "max",
|
|
1055
1055
|
column: e,
|
|
1056
1056
|
alias: t ?? `max_${e}`
|
|
1057
|
-
}),
|
|
1057
|
+
}), Lt = (e, t) => ({
|
|
1058
1058
|
op: "column",
|
|
1059
1059
|
column: e,
|
|
1060
1060
|
alias: t ?? e
|
|
1061
|
-
}),
|
|
1061
|
+
}), H = (e) => (...t) => {
|
|
1062
1062
|
if (t.length < 2) throw Error(`${e}: requires at least two queries`);
|
|
1063
|
-
return
|
|
1063
|
+
return W({
|
|
1064
1064
|
table: t[0].descriptor.table,
|
|
1065
1065
|
predicate: void 0,
|
|
1066
1066
|
order: [],
|
|
@@ -1072,55 +1072,55 @@ var ce = () => new u({
|
|
|
1072
1072
|
queries: t.map((e) => e.descriptor)
|
|
1073
1073
|
}
|
|
1074
1074
|
});
|
|
1075
|
-
},
|
|
1075
|
+
}, Rt = H("union"), zt = H("union-all"), Bt = H("intersect"), Vt = H("except"), U = (e) => ({ over: (t) => ({
|
|
1076
1076
|
...e,
|
|
1077
1077
|
window: t
|
|
1078
|
-
}) }),
|
|
1078
|
+
}) }), Ht = (e = "rowNumber") => U({
|
|
1079
1079
|
op: "window-row-number",
|
|
1080
1080
|
alias: e
|
|
1081
|
-
}),
|
|
1081
|
+
}), Ut = (e = "rank") => U({
|
|
1082
1082
|
op: "window-rank",
|
|
1083
1083
|
alias: e
|
|
1084
|
-
}),
|
|
1084
|
+
}), Wt = (e = "denseRank") => U({
|
|
1085
1085
|
op: "window-dense-rank",
|
|
1086
1086
|
alias: e
|
|
1087
|
-
}),
|
|
1087
|
+
}), Gt = (e, t = 1, n) => U({
|
|
1088
1088
|
op: "window-lag",
|
|
1089
1089
|
column: e,
|
|
1090
1090
|
alias: n ?? `lag_${e}`,
|
|
1091
1091
|
offset: t
|
|
1092
|
-
}),
|
|
1092
|
+
}), Kt = (e, t = 1, n) => U({
|
|
1093
1093
|
op: "window-lead",
|
|
1094
1094
|
column: e,
|
|
1095
1095
|
alias: n ?? `lead_${e}`,
|
|
1096
1096
|
offset: t
|
|
1097
|
-
}),
|
|
1097
|
+
}), qt = (e, t) => U({
|
|
1098
1098
|
op: "window-sum-over",
|
|
1099
1099
|
column: e,
|
|
1100
1100
|
alias: t ?? `sum_${e}_over`
|
|
1101
|
-
}),
|
|
1101
|
+
}), Jt = (e, t) => U({
|
|
1102
1102
|
op: "window-avg-over",
|
|
1103
1103
|
column: e,
|
|
1104
1104
|
alias: t ?? `avg_${e}_over`
|
|
1105
|
-
}),
|
|
1106
|
-
let r = n?.find((e) => e.name === t) ??
|
|
1105
|
+
}), Yt = (e, t, n) => {
|
|
1106
|
+
let r = n?.find((e) => e.name === t) ?? B(e)?.appliedFullText?.find((e) => e.name === t);
|
|
1107
1107
|
if (r === void 0) throw Error(`.matching('${t}', ...): no full-text index named '${t}' is declared on table '${e}'. Declare it with \`table(...).fullTextIndex('${t}', [columns])\` first.`);
|
|
1108
1108
|
return {
|
|
1109
1109
|
columns: r.columns,
|
|
1110
1110
|
...r.config === void 0 ? {} : { config: r.config },
|
|
1111
1111
|
...r.weights === void 0 ? {} : { weights: r.weights }
|
|
1112
1112
|
};
|
|
1113
|
-
},
|
|
1113
|
+
}, W = (e) => ({
|
|
1114
1114
|
descriptor: e,
|
|
1115
1115
|
where(t) {
|
|
1116
1116
|
let n = e.predicate ? { and: [e.predicate, t] } : t;
|
|
1117
|
-
return
|
|
1117
|
+
return W({
|
|
1118
1118
|
...e,
|
|
1119
1119
|
predicate: n
|
|
1120
1120
|
});
|
|
1121
1121
|
},
|
|
1122
1122
|
orderBy(t, n = "asc") {
|
|
1123
|
-
return
|
|
1123
|
+
return W({
|
|
1124
1124
|
...e,
|
|
1125
1125
|
order: [...e.order, {
|
|
1126
1126
|
column: t,
|
|
@@ -1129,43 +1129,43 @@ var ce = () => new u({
|
|
|
1129
1129
|
});
|
|
1130
1130
|
},
|
|
1131
1131
|
limit(t) {
|
|
1132
|
-
return
|
|
1132
|
+
return W({
|
|
1133
1133
|
...e,
|
|
1134
1134
|
take: t
|
|
1135
1135
|
});
|
|
1136
1136
|
},
|
|
1137
1137
|
offset(t) {
|
|
1138
|
-
return
|
|
1138
|
+
return W({
|
|
1139
1139
|
...e,
|
|
1140
1140
|
skip: t
|
|
1141
1141
|
});
|
|
1142
1142
|
},
|
|
1143
1143
|
select(...t) {
|
|
1144
|
-
return
|
|
1144
|
+
return W({
|
|
1145
1145
|
...e,
|
|
1146
1146
|
projection: t
|
|
1147
1147
|
});
|
|
1148
1148
|
},
|
|
1149
1149
|
using(t) {
|
|
1150
|
-
return
|
|
1150
|
+
return W({
|
|
1151
1151
|
...e,
|
|
1152
1152
|
usingIndex: t
|
|
1153
1153
|
});
|
|
1154
1154
|
},
|
|
1155
1155
|
withDeleted() {
|
|
1156
|
-
return
|
|
1156
|
+
return W({
|
|
1157
1157
|
...e,
|
|
1158
1158
|
includeDeleted: !0
|
|
1159
1159
|
});
|
|
1160
1160
|
},
|
|
1161
1161
|
forUpdate() {
|
|
1162
|
-
return
|
|
1162
|
+
return W({
|
|
1163
1163
|
...e,
|
|
1164
1164
|
lock: "update"
|
|
1165
1165
|
});
|
|
1166
1166
|
},
|
|
1167
1167
|
unscoped() {
|
|
1168
|
-
return
|
|
1168
|
+
return W({
|
|
1169
1169
|
...e,
|
|
1170
1170
|
crossTenant: !0
|
|
1171
1171
|
});
|
|
@@ -1175,13 +1175,13 @@ var ce = () => new u({
|
|
|
1175
1175
|
...e.eager ?? {},
|
|
1176
1176
|
...t
|
|
1177
1177
|
};
|
|
1178
|
-
return
|
|
1178
|
+
return W({
|
|
1179
1179
|
...e,
|
|
1180
1180
|
eager: n
|
|
1181
1181
|
});
|
|
1182
1182
|
},
|
|
1183
1183
|
count() {
|
|
1184
|
-
return
|
|
1184
|
+
return W({
|
|
1185
1185
|
...e,
|
|
1186
1186
|
projection: void 0,
|
|
1187
1187
|
aggregations: [{
|
|
@@ -1195,29 +1195,30 @@ var ce = () => new u({
|
|
|
1195
1195
|
...t,
|
|
1196
1196
|
alias: e
|
|
1197
1197
|
}));
|
|
1198
|
-
return
|
|
1198
|
+
return W({
|
|
1199
1199
|
...e,
|
|
1200
1200
|
projection: void 0,
|
|
1201
1201
|
aggregations: n
|
|
1202
1202
|
});
|
|
1203
1203
|
},
|
|
1204
|
-
matching(t, n) {
|
|
1205
|
-
let
|
|
1206
|
-
return
|
|
1204
|
+
matching(t, n, r) {
|
|
1205
|
+
let i = Yt(e.table, t, e.fullTextIndexes);
|
|
1206
|
+
return W({
|
|
1207
1207
|
...e,
|
|
1208
1208
|
fullTextSearch: {
|
|
1209
1209
|
indexName: t,
|
|
1210
1210
|
query: n,
|
|
1211
|
-
columns:
|
|
1212
|
-
...r
|
|
1213
|
-
...
|
|
1211
|
+
columns: i.columns,
|
|
1212
|
+
...r?.prefix === !0 ? { prefix: !0 } : {},
|
|
1213
|
+
...i.config === void 0 ? {} : { config: i.config },
|
|
1214
|
+
...i.weights === void 0 ? {} : { weights: i.weights }
|
|
1214
1215
|
}
|
|
1215
1216
|
});
|
|
1216
1217
|
},
|
|
1217
1218
|
rankBy(t) {
|
|
1218
1219
|
let n = e.fullTextSearch;
|
|
1219
1220
|
if (n === void 0) throw Error(".rankBy() requires a preceding .matching(...) clause — there is no full-text search to rank on this query.");
|
|
1220
|
-
return
|
|
1221
|
+
return W({
|
|
1221
1222
|
...e,
|
|
1222
1223
|
fullTextSearch: {
|
|
1223
1224
|
...n,
|
|
@@ -1236,7 +1237,7 @@ var ce = () => new u({
|
|
|
1236
1237
|
distance: r?.distance ?? "cosine",
|
|
1237
1238
|
...e.annClause?.ef === void 0 ? {} : { ef: e.annClause.ef }
|
|
1238
1239
|
};
|
|
1239
|
-
return
|
|
1240
|
+
return W({
|
|
1240
1241
|
...e,
|
|
1241
1242
|
annClause: i
|
|
1242
1243
|
});
|
|
@@ -1248,7 +1249,7 @@ var ce = () => new u({
|
|
|
1248
1249
|
distance: "cosine",
|
|
1249
1250
|
...e.annClause?.ef === void 0 ? {} : { ef: e.annClause.ef }
|
|
1250
1251
|
};
|
|
1251
|
-
return
|
|
1252
|
+
return W({
|
|
1252
1253
|
...e,
|
|
1253
1254
|
annClause: r,
|
|
1254
1255
|
take: n
|
|
@@ -1261,7 +1262,7 @@ var ce = () => new u({
|
|
|
1261
1262
|
column: "",
|
|
1262
1263
|
distance: "cosine"
|
|
1263
1264
|
};
|
|
1264
|
-
return
|
|
1265
|
+
return W({
|
|
1265
1266
|
...e,
|
|
1266
1267
|
annClause: {
|
|
1267
1268
|
...n,
|
|
@@ -1270,22 +1271,22 @@ var ce = () => new u({
|
|
|
1270
1271
|
});
|
|
1271
1272
|
},
|
|
1272
1273
|
use(t) {
|
|
1273
|
-
return
|
|
1274
|
+
return W({ ...t(e) });
|
|
1274
1275
|
},
|
|
1275
1276
|
distinct() {
|
|
1276
|
-
return
|
|
1277
|
+
return W({
|
|
1277
1278
|
...e,
|
|
1278
1279
|
distinct: !0
|
|
1279
1280
|
});
|
|
1280
1281
|
},
|
|
1281
1282
|
distinctOn(t) {
|
|
1282
|
-
return
|
|
1283
|
+
return W({
|
|
1283
1284
|
...e,
|
|
1284
1285
|
distinctOn: [...t]
|
|
1285
1286
|
});
|
|
1286
1287
|
},
|
|
1287
1288
|
as(t) {
|
|
1288
|
-
return
|
|
1289
|
+
return W({
|
|
1289
1290
|
...e,
|
|
1290
1291
|
alias: t
|
|
1291
1292
|
});
|
|
@@ -1297,7 +1298,7 @@ var ce = () => new u({
|
|
|
1297
1298
|
alias: n,
|
|
1298
1299
|
on: r
|
|
1299
1300
|
}];
|
|
1300
|
-
return
|
|
1301
|
+
return W({
|
|
1301
1302
|
...e,
|
|
1302
1303
|
joins: a
|
|
1303
1304
|
});
|
|
@@ -1309,7 +1310,7 @@ var ce = () => new u({
|
|
|
1309
1310
|
alias: n,
|
|
1310
1311
|
on: r
|
|
1311
1312
|
}];
|
|
1312
|
-
return
|
|
1313
|
+
return W({
|
|
1313
1314
|
...e,
|
|
1314
1315
|
joins: a
|
|
1315
1316
|
});
|
|
@@ -1319,7 +1320,7 @@ var ce = () => new u({
|
|
|
1319
1320
|
outputKey: e,
|
|
1320
1321
|
source: t
|
|
1321
1322
|
}));
|
|
1322
|
-
return
|
|
1323
|
+
return W({
|
|
1323
1324
|
...e,
|
|
1324
1325
|
projection: void 0,
|
|
1325
1326
|
joinedProjection: n
|
|
@@ -1328,7 +1329,7 @@ var ce = () => new u({
|
|
|
1328
1329
|
withCte(t, n) {
|
|
1329
1330
|
let r = e.ctes ?? [];
|
|
1330
1331
|
if (r.some((e) => e.name === t)) throw Error(`Query.withCte: duplicate CTE name '${t}'`);
|
|
1331
|
-
return
|
|
1332
|
+
return W({
|
|
1332
1333
|
...e,
|
|
1333
1334
|
ctes: [...r, {
|
|
1334
1335
|
name: t,
|
|
@@ -1339,7 +1340,7 @@ var ce = () => new u({
|
|
|
1339
1340
|
recursiveCte(t, n) {
|
|
1340
1341
|
let r = e.ctes ?? [];
|
|
1341
1342
|
if (r.some((e) => e.name === t)) throw Error(`Query.recursiveCte: duplicate CTE name '${t}'`);
|
|
1342
|
-
return
|
|
1343
|
+
return W({
|
|
1343
1344
|
...e,
|
|
1344
1345
|
ctes: [...r, {
|
|
1345
1346
|
name: t,
|
|
@@ -1350,20 +1351,20 @@ var ce = () => new u({
|
|
|
1350
1351
|
},
|
|
1351
1352
|
groupBy(t) {
|
|
1352
1353
|
let n = e.groupBy ? [...e.groupBy, ...t] : [...t];
|
|
1353
|
-
return
|
|
1354
|
+
return W({
|
|
1354
1355
|
...e,
|
|
1355
1356
|
groupBy: n
|
|
1356
1357
|
});
|
|
1357
1358
|
},
|
|
1358
1359
|
having(t) {
|
|
1359
1360
|
let n = e.having ? { and: [e.having, t] } : t;
|
|
1360
|
-
return
|
|
1361
|
+
return W({
|
|
1361
1362
|
...e,
|
|
1362
1363
|
having: n
|
|
1363
1364
|
});
|
|
1364
1365
|
},
|
|
1365
1366
|
exists() {
|
|
1366
|
-
return
|
|
1367
|
+
return W({
|
|
1367
1368
|
...e,
|
|
1368
1369
|
projection: void 0,
|
|
1369
1370
|
aggregations: [{
|
|
@@ -1374,8 +1375,8 @@ var ce = () => new u({
|
|
|
1374
1375
|
});
|
|
1375
1376
|
}
|
|
1376
1377
|
});
|
|
1377
|
-
function
|
|
1378
|
-
return
|
|
1378
|
+
function Xt(e) {
|
|
1379
|
+
return W({
|
|
1379
1380
|
table: e.tableName,
|
|
1380
1381
|
predicate: void 0,
|
|
1381
1382
|
order: [],
|
|
@@ -1386,7 +1387,7 @@ function Zt(e) {
|
|
|
1386
1387
|
sourceTable: e
|
|
1387
1388
|
});
|
|
1388
1389
|
}
|
|
1389
|
-
var
|
|
1390
|
+
var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
|
|
1390
1391
|
let a = [...e.order.filter((e) => e.column !== t), {
|
|
1391
1392
|
column: t,
|
|
1392
1393
|
direction: i
|
|
@@ -1401,21 +1402,21 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1401
1402
|
order: a,
|
|
1402
1403
|
take: r
|
|
1403
1404
|
};
|
|
1404
|
-
},
|
|
1405
|
+
}, $t = (e) => {
|
|
1405
1406
|
let t = {};
|
|
1406
|
-
for (let [n, r] of Object.entries(e))
|
|
1407
|
+
for (let [n, r] of Object.entries(e)) wt(r), t[n] = Xt(r);
|
|
1407
1408
|
return t;
|
|
1408
|
-
},
|
|
1409
|
-
if (
|
|
1410
|
-
let r =
|
|
1411
|
-
for (let t of Object.keys(r))
|
|
1409
|
+
}, en = (e) => e.isView === !0, tn = (e, t, n) => {
|
|
1410
|
+
if (j(e), n.trim().length === 0) throw Error(`view('${e}', …): the SELECT body is empty — a view must define a query.`);
|
|
1411
|
+
let r = C(t);
|
|
1412
|
+
for (let t of Object.keys(r)) M(e, t);
|
|
1412
1413
|
return {
|
|
1413
1414
|
tableName: e,
|
|
1414
1415
|
fields: r,
|
|
1415
1416
|
isView: !0,
|
|
1416
1417
|
viewSelect: n
|
|
1417
1418
|
};
|
|
1418
|
-
},
|
|
1419
|
+
}, nn = (e) => Xt({
|
|
1419
1420
|
...e,
|
|
1420
1421
|
isReactive: !1,
|
|
1421
1422
|
appliedMixins: [],
|
|
@@ -1423,8 +1424,8 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1423
1424
|
appliedUniques: [],
|
|
1424
1425
|
appliedFullText: [],
|
|
1425
1426
|
appliedChecks: []
|
|
1426
|
-
}),
|
|
1427
|
-
let r = n === null ?
|
|
1427
|
+
}), rn = (e, t, n = null) => {
|
|
1428
|
+
let r = n === null ? R(e.tableName, t) : `${R(n, t)}.${R(e.tableName, t)}`, i = e.viewSelect.trim();
|
|
1428
1429
|
switch (t) {
|
|
1429
1430
|
case "postgres":
|
|
1430
1431
|
case "mysql":
|
|
@@ -1433,7 +1434,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1433
1434
|
case "sqlite":
|
|
1434
1435
|
case "turso": return `DROP VIEW IF EXISTS ${r};\nCREATE VIEW ${r} AS ${i};`;
|
|
1435
1436
|
}
|
|
1436
|
-
},
|
|
1437
|
+
}, an = (e) => e == null || typeof e == "boolean" ? e : typeof e == "number" ? e !== 0 : typeof e == "bigint" ? e !== 0n : typeof e == "string" ? e === "1" || e.toLowerCase() === "true" : e, on = (e) => {
|
|
1437
1438
|
if (e == null || typeof e != "string") return e;
|
|
1438
1439
|
let t = e.trim();
|
|
1439
1440
|
if (t.length === 0) return e;
|
|
@@ -1444,7 +1445,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1444
1445
|
} catch {
|
|
1445
1446
|
return e;
|
|
1446
1447
|
}
|
|
1447
|
-
},
|
|
1448
|
+
}, sn = (e) => e == null || typeof e == "string" ? e : typeof e == "number" || typeof e == "bigint" ? String(e) : e, cn = (e) => {
|
|
1448
1449
|
if (e == null || e instanceof Date) return e;
|
|
1449
1450
|
if (typeof e == "string") {
|
|
1450
1451
|
let t = new Date(e);
|
|
@@ -1455,24 +1456,24 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1455
1456
|
return isNaN(t.getTime()) ? e : t;
|
|
1456
1457
|
}
|
|
1457
1458
|
return e;
|
|
1458
|
-
},
|
|
1459
|
+
}, ln = (e, t, n) => {
|
|
1459
1460
|
if (e == null) return e;
|
|
1460
1461
|
switch (t) {
|
|
1461
|
-
case "boolean": return n === "postgres" ? e :
|
|
1462
|
-
case "vector": return n === "postgres" ?
|
|
1463
|
-
case "json": return n === "postgres" || n === "mysql" || n === "mariadb" ? e :
|
|
1464
|
-
case "array": return n === "postgres" ? e :
|
|
1462
|
+
case "boolean": return n === "postgres" ? e : an(e);
|
|
1463
|
+
case "vector": return n === "postgres" ? on(e) : e;
|
|
1464
|
+
case "json": return n === "postgres" || n === "mysql" || n === "mariadb" ? e : on(e);
|
|
1465
|
+
case "array": return n === "postgres" ? e : on(e);
|
|
1465
1466
|
case "timestamp":
|
|
1466
|
-
case "date": return n === "sqlite" || n === "turso" ?
|
|
1467
|
+
case "date": return n === "sqlite" || n === "turso" ? cn(e) : e;
|
|
1467
1468
|
case "decimal":
|
|
1468
|
-
case "bigint": return
|
|
1469
|
+
case "bigint": return sn(e);
|
|
1469
1470
|
default: return e;
|
|
1470
1471
|
}
|
|
1471
|
-
},
|
|
1472
|
+
}, un = (e, t, n) => {
|
|
1472
1473
|
if (e.length === 0) return e;
|
|
1473
|
-
let r =
|
|
1474
|
-
return r === void 0 ? e :
|
|
1475
|
-
},
|
|
1474
|
+
let r = B(t);
|
|
1475
|
+
return r === void 0 ? e : dn(e, r, n);
|
|
1476
|
+
}, dn = (e, t, n) => {
|
|
1476
1477
|
if (e.length === 0) return e;
|
|
1477
1478
|
let r = t.fields, i = [];
|
|
1478
1479
|
for (let [e, t] of Object.entries(r)) i.push({
|
|
@@ -1481,10 +1482,10 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1481
1482
|
});
|
|
1482
1483
|
return e.map((e) => {
|
|
1483
1484
|
let t = { ...e };
|
|
1484
|
-
for (let { key: e, type: r } of i) e in t && (t[e] =
|
|
1485
|
+
for (let { key: e, type: r } of i) e in t && (t[e] = ln(t[e], r, n));
|
|
1485
1486
|
return t;
|
|
1486
1487
|
});
|
|
1487
|
-
},
|
|
1488
|
+
}, fn = (e, t) => {
|
|
1488
1489
|
if (e == null) return e;
|
|
1489
1490
|
switch (t) {
|
|
1490
1491
|
case "json": return JSON.stringify(e);
|
|
@@ -1492,20 +1493,20 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1492
1493
|
case "vector": return typeof e == "string" ? e : JSON.stringify(e);
|
|
1493
1494
|
default: return e;
|
|
1494
1495
|
}
|
|
1495
|
-
},
|
|
1496
|
-
let r =
|
|
1496
|
+
}, pn = (e, t, n = ["json", "array"]) => {
|
|
1497
|
+
let r = B(t);
|
|
1497
1498
|
if (r === void 0) return e;
|
|
1498
1499
|
let i = r.fields, a = null;
|
|
1499
1500
|
for (let [t, r] of Object.entries(i)) if (n.includes(r.type) && t in e) {
|
|
1500
|
-
let n =
|
|
1501
|
+
let n = fn(e[t], r.type);
|
|
1501
1502
|
n !== e[t] && (a === null && (a = { ...e }), a[t] = n);
|
|
1502
1503
|
}
|
|
1503
1504
|
return a ?? e;
|
|
1504
|
-
}, hn = /^[A-Za-z_][A-Za-z0-9_]*$/, gn = (e) => "$" + e.map((e) => typeof e == "number" ? `[${e}]` : hn.test(e) ? `.${e}` : `."${e.replace(/"/g, "\\\"")}"`).join(""), _n = (e) => "{" + e.map((e) => {
|
|
1505
|
+
}, mn = (e) => e == null ? e : e instanceof Date ? e.toISOString() : typeof e == "boolean" ? +!!e : Array.isArray(e) ? e.map((e) => mn(e)) : e, hn = /^[A-Za-z_][A-Za-z0-9_]*$/, gn = (e) => "$" + e.map((e) => typeof e == "number" ? `[${e}]` : hn.test(e) ? `.${e}` : `."${e.replace(/"/g, "\\\"")}"`).join(""), _n = (e) => "{" + e.map((e) => {
|
|
1505
1506
|
let t = String(e);
|
|
1506
1507
|
return /^[A-Za-z0-9_]+$/.test(t) ? t : `"${t.replace(/(["\\])/g, "\\$1")}"`;
|
|
1507
|
-
}).join(",") + "}",
|
|
1508
|
-
let i =
|
|
1508
|
+
}).join(",") + "}", G = (e, t, n, r = {}) => {
|
|
1509
|
+
let i = R(e, n), a = r.numeric ?? !1;
|
|
1509
1510
|
if (n === "postgres") {
|
|
1510
1511
|
let e = `(${i} #>> '${_n(t)}'::text[])`;
|
|
1511
1512
|
return a ? `${e}::numeric` : e;
|
|
@@ -1544,7 +1545,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1544
1545
|
let n = `${xn}${t}`;
|
|
1545
1546
|
if (n.length > bn) throw new yn(`namespace '${n}' for tenant '${e}' exceeds the ${bn}-byte identifier limit. Use a shorter tenant id.`);
|
|
1546
1547
|
return n;
|
|
1547
|
-
},
|
|
1548
|
+
}, K = (e, t) => e === null ? t : `${e}.${t}`, wn = /* @__PURE__ */ new Set(["timestamp", "date"]), Tn = /^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2})?/, En = (e, t) => {
|
|
1548
1549
|
if (e === void 0 || t == null || !wn.has(e) || t instanceof Date) return t;
|
|
1549
1550
|
if (typeof t == "number" && Number.isFinite(t)) return new Date(t);
|
|
1550
1551
|
if (typeof t == "string" && Tn.test(t)) {
|
|
@@ -1556,46 +1557,52 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1556
1557
|
let { strings: n, values: r } = e, i = t.unsafe(n[0] ?? "");
|
|
1557
1558
|
for (let e = 0; e < r.length; e++) i = t`${i}${r[e]}${t.unsafe(n[e + 1] ?? "")}`;
|
|
1558
1559
|
return t`${i}`;
|
|
1559
|
-
},
|
|
1560
|
-
if ("not" in e) return t`NOT (${
|
|
1561
|
-
if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) =>
|
|
1562
|
-
if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) =>
|
|
1560
|
+
}, q = (e) => e.replace(/[\\%_]/g, (e) => `\\${e}`), J = (e, t, n = null, r) => {
|
|
1561
|
+
if ("not" in e) return t`NOT (${J(e.not, t, n, r)})`;
|
|
1562
|
+
if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) => J(e, t, n, r)));
|
|
1563
|
+
if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) => J(e, t, n, r)));
|
|
1563
1564
|
if (e.op === "subquery-in" || e.op === "subquery-not-in") {
|
|
1564
|
-
let r = e, i =
|
|
1565
|
+
let r = e, i = X(r.subquery, t, n);
|
|
1565
1566
|
return r.op === "subquery-in" ? t`${t(r.column)} IN (${i})` : t`${t(r.column)} NOT IN (${i})`;
|
|
1566
1567
|
}
|
|
1567
1568
|
if (e.op === "exists" || e.op === "not-exists") {
|
|
1568
|
-
let r = e, i =
|
|
1569
|
+
let r = e, i = X(r.subquery, t, n);
|
|
1569
1570
|
return r.op === "exists" ? t`EXISTS (${i})` : t`NOT EXISTS (${i})`;
|
|
1570
1571
|
}
|
|
1571
1572
|
let i = e, a = t(i.column), o = i.path, s = o !== void 0 && o.length > 0, c = () => t.onDialectOrElse({
|
|
1572
|
-
mysql: () => t.unsafe(
|
|
1573
|
-
mssql: () => t.unsafe(
|
|
1574
|
-
sqlite: () => t.unsafe(
|
|
1575
|
-
orElse: () => t.unsafe(
|
|
1573
|
+
mysql: () => t.unsafe(G(i.column, o, "mysql")),
|
|
1574
|
+
mssql: () => t.unsafe(G(i.column, o, "mssql")),
|
|
1575
|
+
sqlite: () => t.unsafe(G(i.column, o, "sqlite")),
|
|
1576
|
+
orElse: () => t.unsafe(G(i.column, o, "postgres"))
|
|
1576
1577
|
}), l = () => t.onDialectOrElse({
|
|
1577
|
-
mysql: () => t.unsafe(
|
|
1578
|
-
mssql: () => t.unsafe(
|
|
1579
|
-
sqlite: () => t.unsafe(
|
|
1580
|
-
orElse: () => t.unsafe(
|
|
1581
|
-
}), u = s ? c() : a, d = s ? l() : a, f = (e) => s && e != null ? String(e) : e, p = (e) => s ? Number(e) : e, m = s || r === void 0 ? void 0 :
|
|
1578
|
+
mysql: () => t.unsafe(G(i.column, o, "mysql", { numeric: !0 })),
|
|
1579
|
+
mssql: () => t.unsafe(G(i.column, o, "mssql", { numeric: !0 })),
|
|
1580
|
+
sqlite: () => t.unsafe(G(i.column, o, "sqlite", { numeric: !0 })),
|
|
1581
|
+
orElse: () => t.unsafe(G(i.column, o, "postgres", { numeric: !0 }))
|
|
1582
|
+
}), u = s ? c() : a, d = s ? l() : a, f = (e) => s && e != null ? String(e) : e, p = (e) => s ? Number(e) : e, m = s || r === void 0 ? void 0 : B(r)?.fields?.[i.column]?.type, h = (e) => {
|
|
1583
|
+
let n = En(m, e);
|
|
1584
|
+
return n instanceof Date ? t.onDialectOrElse({
|
|
1585
|
+
sqlite: () => mn(n),
|
|
1586
|
+
orElse: () => n
|
|
1587
|
+
}) : n;
|
|
1588
|
+
};
|
|
1582
1589
|
switch (i.op) {
|
|
1583
|
-
case "eq": return t`${u} = ${f(
|
|
1584
|
-
case "neq": return t`${u} <> ${f(
|
|
1585
|
-
case "gt": return t`${d} > ${p(i.value)}`;
|
|
1586
|
-
case "gte": return t`${d} >= ${p(i.value)}`;
|
|
1587
|
-
case "lt": return t`${d} < ${p(i.value)}`;
|
|
1588
|
-
case "lte": return t`${d} <= ${p(i.value)}`;
|
|
1590
|
+
case "eq": return t`${u} = ${f(h(i.value))}`;
|
|
1591
|
+
case "neq": return t`${u} <> ${f(h(i.value))}`;
|
|
1592
|
+
case "gt": return t`${d} > ${p(h(i.value))}`;
|
|
1593
|
+
case "gte": return t`${d} >= ${p(h(i.value))}`;
|
|
1594
|
+
case "lt": return t`${d} < ${p(h(i.value))}`;
|
|
1595
|
+
case "lte": return t`${d} <= ${p(h(i.value))}`;
|
|
1589
1596
|
case "in": {
|
|
1590
1597
|
let e = i.value ?? [];
|
|
1591
|
-
return e.length === 0 ? t`FALSE` : t`${u} IN ${t.in(s ? e.map((e) => f(e)) : e)}`;
|
|
1598
|
+
return e.length === 0 ? t`FALSE` : t`${u} IN ${t.in(s ? e.map((e) => f(e)) : e.map(h))}`;
|
|
1592
1599
|
}
|
|
1593
1600
|
case "notIn": {
|
|
1594
1601
|
let e = i.value ?? [];
|
|
1595
|
-
return e.length === 0 ? t`TRUE` : t`${u} NOT IN ${t.in(s ? e.map((e) => f(e)) : e)}`;
|
|
1602
|
+
return e.length === 0 ? t`TRUE` : t`${u} NOT IN ${t.in(s ? e.map((e) => f(e)) : e.map(h))}`;
|
|
1596
1603
|
}
|
|
1597
1604
|
case "contains": {
|
|
1598
|
-
let e = `%${
|
|
1605
|
+
let e = `%${q(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
|
|
1599
1606
|
return t.onDialectOrElse({
|
|
1600
1607
|
mysql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
|
|
1601
1608
|
mssql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
|
|
@@ -1604,7 +1611,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1604
1611
|
});
|
|
1605
1612
|
}
|
|
1606
1613
|
case "startsWith": {
|
|
1607
|
-
let e = `${
|
|
1614
|
+
let e = `${q(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
|
|
1608
1615
|
return t.onDialectOrElse({
|
|
1609
1616
|
mysql: () => t`${u} LIKE ${e}`,
|
|
1610
1617
|
orElse: () => t`${u} LIKE ${e} ESCAPE '\\'`
|
|
@@ -1640,13 +1647,13 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1640
1647
|
let e = i.value, n = t.unsafe("::geometry"), r = e.bufferMeters === void 0 ? t`${e.geom}${n}` : t`ST_Buffer(${e.geom}::geography, ${e.bufferMeters})::geometry`;
|
|
1641
1648
|
return t.onDialectOrElse({
|
|
1642
1649
|
mysql: () => {
|
|
1643
|
-
throw
|
|
1650
|
+
throw E("@voltro/plugin-postgis: spatial predicates are postgres-only");
|
|
1644
1651
|
},
|
|
1645
1652
|
mssql: () => {
|
|
1646
|
-
throw
|
|
1653
|
+
throw E("@voltro/plugin-postgis: spatial predicates are postgres-only");
|
|
1647
1654
|
},
|
|
1648
1655
|
sqlite: () => {
|
|
1649
|
-
throw
|
|
1656
|
+
throw E("@voltro/plugin-postgis: spatial predicates are postgres-only");
|
|
1650
1657
|
},
|
|
1651
1658
|
orElse: () => e.fn === "ST_DWithin" ? t`ST_DWithin(${a}::geography, ${e.geom}::geography, ${e.distanceMeters})` : e.fn === "&&" ? t`${a}${n} && ${r}` : t`${t.unsafe(e.fn)}(${a}${n}, ${r})`
|
|
1652
1659
|
});
|
|
@@ -1667,7 +1674,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1667
1674
|
case "window-lead": return t`LEAD(${n}, ${t.unsafe(String(e.offset ?? 1))}) OVER (${r}) AS ${t(e.alias)}`;
|
|
1668
1675
|
case "window-sum-over": return t`SUM(${n}) OVER (${r}) AS ${t(e.alias)}`;
|
|
1669
1676
|
case "window-avg-over": return t`AVG(${n}) OVER (${r}) AS ${t(e.alias)}`;
|
|
1670
|
-
default: throw
|
|
1677
|
+
default: throw E(`compileAggregateProjection: unknown window op '${e.op}'`);
|
|
1671
1678
|
}
|
|
1672
1679
|
}
|
|
1673
1680
|
switch (e.op) {
|
|
@@ -1678,9 +1685,9 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1678
1685
|
case "min": return t`MIN(${n}) AS ${t(e.alias)}`;
|
|
1679
1686
|
case "max": return t`MAX(${n}) AS ${t(e.alias)}`;
|
|
1680
1687
|
case "column":
|
|
1681
|
-
if (e.column === void 0) throw
|
|
1688
|
+
if (e.column === void 0) throw E(`compileAggregateProjection: 'column' projection requires a column name (alias '${e.alias}')`);
|
|
1682
1689
|
return t`${t(e.column)} AS ${t(e.alias)}`;
|
|
1683
|
-
default: throw
|
|
1690
|
+
default: throw E(`compileAggregateProjection: unknown op '${e.op}'`);
|
|
1684
1691
|
}
|
|
1685
1692
|
})), jn = (e) => `[${e.join(",")}]`, Mn = (e, t) => {
|
|
1686
1693
|
if (e.queryVector === void 0) return null;
|
|
@@ -1694,37 +1701,54 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1694
1701
|
}, Nn = (e, t) => {
|
|
1695
1702
|
let n = t.unsafe(e.useGeography ? "::geography" : "::geometry");
|
|
1696
1703
|
return t`ST_Distance(${t(e.column)}${n}, ${e.geom}${n})`;
|
|
1697
|
-
}, Pn = (e, t) => t`${t(e.column)} <-> ${e.geom}::geometry`,
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1704
|
+
}, Pn = (e, t) => t`${t(e.column)} <-> ${e.geom}::geometry`, Y = (e, t) => t`${t(`${e.indexName}_tsv`)}`, Fn = (e, t) => `${t}_${e.indexName}_fts`, In = (e) => e.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter((e) => e !== ""), Ln = (e) => {
|
|
1705
|
+
if (e.prefix !== !0) return;
|
|
1706
|
+
let t = In(e.query);
|
|
1707
|
+
if (t.length !== 0) return {
|
|
1708
|
+
pg: t.map((e) => `${e}:*`).join(" & "),
|
|
1709
|
+
mysql: t.map((e) => `+${e}*`).join(" "),
|
|
1710
|
+
sqlite: t.map((e) => `"${e}"*`).join(" ")
|
|
1711
|
+
};
|
|
1712
|
+
}, Rn = (e, t, n) => {
|
|
1713
|
+
let r = n.csv(e.columns.map((e) => n`${n(e)}`)), i = `%${q(e.query)}%`, a = Ln(e), o = () => n.or(e.columns.map((e) => n`LOWER(${n(e)}) LIKE LOWER(${i}) ESCAPE '\\'`));
|
|
1714
|
+
return e.fallback === "like" ? o() : n.onDialectOrElse({
|
|
1715
|
+
mysql: () => a === void 0 ? n`MATCH(${r}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)` : n`MATCH(${r}) AGAINST(${a.mysql} IN BOOLEAN MODE)`,
|
|
1701
1716
|
sqlite: () => {
|
|
1702
|
-
let r = n(
|
|
1703
|
-
return n`${n("id")} IN (SELECT ${n("row_id")} FROM ${r} WHERE ${r} MATCH ${e.query})`;
|
|
1717
|
+
let r = n(Fn(e, t));
|
|
1718
|
+
return n`${n("id")} IN (SELECT ${n("row_id")} FROM ${r} WHERE ${r} MATCH ${a?.sqlite ?? e.query})`;
|
|
1704
1719
|
},
|
|
1705
|
-
mssql:
|
|
1706
|
-
orElse: () => n`${
|
|
1720
|
+
mssql: o,
|
|
1721
|
+
orElse: () => a === void 0 ? n`${Y(e, n)} @@ plainto_tsquery(${e.config ?? "english"}, ${e.query})` : n`${Y(e, n)} @@ to_tsquery(${e.config ?? "english"}, ${a.pg})`
|
|
1707
1722
|
});
|
|
1708
|
-
},
|
|
1709
|
-
let r = `%${
|
|
1710
|
-
return n.onDialectOrElse({
|
|
1711
|
-
mysql: () => n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)`,
|
|
1723
|
+
}, zn = (e, t, n) => {
|
|
1724
|
+
let r = `%${q(e.query)}%`, i = Ln(e), a = () => e.columns.map((e) => n`(CASE WHEN LOWER(${n(e)}) LIKE LOWER(${r}) ESCAPE '\\' THEN 1 ELSE 0 END)`).reduce((e, t, r) => r === 0 ? t : n`${e} + ${t}`);
|
|
1725
|
+
return e.fallback === "like" ? a() : n.onDialectOrElse({
|
|
1726
|
+
mysql: () => i === void 0 ? n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)` : n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${i.mysql} IN BOOLEAN MODE)`,
|
|
1712
1727
|
sqlite: () => {
|
|
1713
|
-
let r = n(
|
|
1714
|
-
return n`COALESCE((SELECT -bm25(${r}) FROM ${r} WHERE ${r} MATCH ${e.query} AND ${r}.${n("row_id")} = ${n("id")}), 0)`;
|
|
1728
|
+
let r = n(Fn(e, t));
|
|
1729
|
+
return n`COALESCE((SELECT -bm25(${r}) FROM ${r} WHERE ${r} MATCH ${i?.sqlite ?? e.query} AND ${r}.${n("row_id")} = ${n("id")}), 0)`;
|
|
1715
1730
|
},
|
|
1716
|
-
mssql:
|
|
1717
|
-
orElse: () => n`ts_rank(${
|
|
1731
|
+
mssql: a,
|
|
1732
|
+
orElse: () => i === void 0 ? n`ts_rank(${Y(e, n)}, plainto_tsquery(${e.config ?? "english"}, ${e.query}))` : n`ts_rank(${Y(e, n)}, to_tsquery(${e.config ?? "english"}, ${i.pg}))`
|
|
1718
1733
|
});
|
|
1719
|
-
},
|
|
1734
|
+
}, Bn = (e, t, n) => {
|
|
1735
|
+
let r = () => n?.length ? t.csv(n.map((e) => t`${t(e)}`)) : t`*`, i = B(e)?.fields;
|
|
1736
|
+
return !i || !Object.values(i).some((e) => e.type === "bigint") ? r() : t.onDialectOrElse({
|
|
1737
|
+
sqlite: () => t.csv((n?.length ? n : Object.keys(i)).map((e) => i[e]?.type === "bigint" ? t`CAST(${t(e)} AS TEXT) AS ${t(e)}` : t`${t(e)}`)),
|
|
1738
|
+
orElse: r
|
|
1739
|
+
});
|
|
1740
|
+
}, Vn = (e, t) => {
|
|
1741
|
+
let n = e.lastIndexOf("."), r = n < 0 ? e : e.slice(n + 1), i = n < 0 ? void 0 : e.slice(0, n), a = i === void 0 || i === t.alias || i === t.table ? t.table : t.joins?.find((e) => e.alias === i)?.table;
|
|
1742
|
+
return a === void 0 ? void 0 : B(a)?.fields?.[r]?.type;
|
|
1743
|
+
}, X = (e, t, n = null) => {
|
|
1720
1744
|
if (e.setOp && e.setOp.queries.length >= 2) {
|
|
1721
|
-
let r = e.setOp.kind === "union" ? "UNION" : e.setOp.kind === "union-all" ? "UNION ALL" : e.setOp.kind === "intersect" ? "INTERSECT" : "EXCEPT", i = e.setOp.queries.map((e) => t`(${
|
|
1722
|
-
if (
|
|
1723
|
-
if (!Number.isInteger(e.take) || e.take < 0) throw
|
|
1745
|
+
let r = e.setOp.kind === "union" ? "UNION" : e.setOp.kind === "union-all" ? "UNION ALL" : e.setOp.kind === "intersect" ? "INTERSECT" : "EXCEPT", i = e.setOp.queries.map((e) => t`(${X(e, t, n)})`).reduce((e, n, i) => i === 0 ? n : t`${e} ${t.unsafe(r)} ${n}`), a = [];
|
|
1746
|
+
if (V(e).length > 0 && a.push(t` ORDER BY ${t.csv(V(e).map((e) => e.direction === "desc" ? t`${t(e.column)} DESC` : t`${t(e.column)} ASC`))}`), e.take !== void 0) {
|
|
1747
|
+
if (!Number.isInteger(e.take) || e.take < 0) throw E(`compileSelect: invalid take ${e.take}`);
|
|
1724
1748
|
a.push(t` LIMIT ${t.unsafe(String(e.take))}`);
|
|
1725
1749
|
}
|
|
1726
1750
|
if (e.skip !== void 0) {
|
|
1727
|
-
if (!Number.isInteger(e.skip) || e.skip < 0) throw
|
|
1751
|
+
if (!Number.isInteger(e.skip) || e.skip < 0) throw E(`compileSelect: invalid skip ${e.skip}`);
|
|
1728
1752
|
a.push(t` OFFSET ${t.unsafe(String(e.skip))}`);
|
|
1729
1753
|
}
|
|
1730
1754
|
return t`${i}${a.reduce((e, n) => t`${e}${n}`, t``)}`;
|
|
@@ -1732,17 +1756,23 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1732
1756
|
let r = e.annClause === void 0 ? null : Mn(e.annClause, t);
|
|
1733
1757
|
e.spatialClause !== void 0 && t.onDialectOrElse({
|
|
1734
1758
|
mysql: () => {
|
|
1735
|
-
throw
|
|
1759
|
+
throw E("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
|
|
1736
1760
|
},
|
|
1737
1761
|
mssql: () => {
|
|
1738
|
-
throw
|
|
1762
|
+
throw E("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
|
|
1739
1763
|
},
|
|
1740
1764
|
sqlite: () => {
|
|
1741
|
-
throw
|
|
1765
|
+
throw E("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
|
|
1742
1766
|
},
|
|
1743
1767
|
orElse: () => t``
|
|
1744
1768
|
});
|
|
1745
|
-
let i = e.spatialClause?.projectAs === void 0 ? null : Nn(e.spatialClause, t), a = e.aggregations && e.aggregations.length > 0 ? An(e.aggregations, t) : e.joinedProjection && e.joinedProjection.length > 0 ? t.csv(e.joinedProjection.map((
|
|
1769
|
+
let i = e.spatialClause?.projectAs === void 0 ? null : Nn(e.spatialClause, t), a = e.aggregations && e.aggregations.length > 0 ? An(e.aggregations, t) : e.joinedProjection && e.joinedProjection.length > 0 ? t.csv(e.joinedProjection.map((n) => {
|
|
1770
|
+
let r = t`${t(n.source)}`;
|
|
1771
|
+
return t`${Vn(n.source, e) === "bigint" ? t.onDialectOrElse({
|
|
1772
|
+
sqlite: () => t`CAST(${r} AS TEXT)`,
|
|
1773
|
+
orElse: () => r
|
|
1774
|
+
}) : r} AS ${t(n.outputKey)}`;
|
|
1775
|
+
})) : Bn(e.table, t, e.projection), o = (e.aggregations && e.aggregations.length > 0) === !0, s = r !== null && !o ? t`${a}, ${r} AS ${t("distance")}` : a, c = e.fullTextSearch, l = c?.rank !== void 0 && !o ? zn(c, e.table, t) : null, u = l !== null && c?.rank !== void 0 ? t`${s}, ${l} AS ${t(c.rank.alias)}` : s, d = i !== null && !o && e.spatialClause?.projectAs !== void 0 ? t`${u}, ${i} AS ${t(e.spatialClause.projectAs)}` : u, f = e.distinctOn && e.distinctOn.length > 0 ? t.onDialectOrElse({
|
|
1746
1776
|
orElse: () => t`DISTINCT ON (${t.csv(e.distinctOn.map((e) => t`${t(e)}`))}) `,
|
|
1747
1777
|
mysql: () => t`DISTINCT `,
|
|
1748
1778
|
mssql: () => t`DISTINCT `,
|
|
@@ -1750,34 +1780,40 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1750
1780
|
}) : e.distinct ? t`DISTINCT ` : t``, p = e.lock === "update", m = p ? t.onDialectOrElse({
|
|
1751
1781
|
mssql: () => t` WITH (UPDLOCK, ROWLOCK)`,
|
|
1752
1782
|
orElse: () => t``
|
|
1753
|
-
}) : t``,
|
|
1783
|
+
}) : t``, h = p ? t.onDialectOrElse({
|
|
1754
1784
|
mssql: () => t``,
|
|
1755
1785
|
sqlite: () => t``,
|
|
1756
1786
|
orElse: () => t` FOR UPDATE`
|
|
1757
|
-
}) : t``,
|
|
1787
|
+
}) : t``, g = e.alias === void 0 ? t`${t(K(n, e.table))}${m}` : t`${t(K(n, e.table))} AS ${t(e.alias)}${m}`, ee = (e.joins ?? []).map((e) => {
|
|
1758
1788
|
let r = e.kind === "inner" ? "INNER" : "LEFT";
|
|
1759
|
-
return t` ${t.unsafe(r)} JOIN ${t(
|
|
1760
|
-
}),
|
|
1761
|
-
r !== null &&
|
|
1762
|
-
for (let n of
|
|
1763
|
-
|
|
1789
|
+
return t` ${t.unsafe(r)} JOIN ${t(K(n, e.table))} AS ${t(e.alias)} ON ${J(e.on, t, n)}`;
|
|
1790
|
+
}), te = ee.length > 0 ? ee.reduce((e, n) => t`${e}${n}`, g) : g, ne = c === void 0 ? null : Rn(c, e.table, t), _ = [e.predicate ? J(e.predicate, t, n, e.table) : null, ne].filter((e) => e !== null), v = _.length > 0 ? t` WHERE ${t.and(_)}` : t``, re = e.groupBy && e.groupBy.length > 0 ? t` GROUP BY ${t.csv(e.groupBy.map((e) => t`${t(e)}`))}` : t``, y = e.having ? t` HAVING ${J(e.having, t, n, e.table)}` : t``, b = e.skip !== void 0, x = [];
|
|
1791
|
+
r !== null && x.push(t`${r} ASC`), e.spatialClause?.order !== void 0 && x.push(e.spatialClause.order === "desc" ? t`${Pn(e.spatialClause, t)} DESC` : t`${Pn(e.spatialClause, t)} ASC`), l !== null && c?.rank?.order === !0 && x.push(t`${l} DESC`);
|
|
1792
|
+
for (let n of V(e)) {
|
|
1793
|
+
let r = e.joinedProjection?.find((e) => e.outputKey === n.column)?.source ?? n.column, i = !o && Vn(r, e) === "bigint" ? t.onDialectOrElse({
|
|
1794
|
+
sqlite: () => t`${t(r.includes(".") ? r : `${e.alias ?? e.table}.${r}`)}`,
|
|
1795
|
+
orElse: () => t`${t(n.column)}`
|
|
1796
|
+
}) : t`${t(n.column)}`;
|
|
1797
|
+
x.push(n.direction === "desc" ? t`${i} DESC` : t`${i} ASC`);
|
|
1798
|
+
}
|
|
1799
|
+
let ie = x.length > 0 ? t` ORDER BY ${t.csv(x)}` : b ? t.onDialectOrElse({
|
|
1764
1800
|
mssql: () => t` ORDER BY (SELECT NULL)`,
|
|
1765
1801
|
orElse: () => t``
|
|
1766
|
-
}) : t``,
|
|
1767
|
-
if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw
|
|
1802
|
+
}) : t``, S = (e) => {
|
|
1803
|
+
if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw E(`compileSelect: expected non-negative integer take/skip, got ${e}`);
|
|
1768
1804
|
return t.unsafe(String(e));
|
|
1769
|
-
},
|
|
1805
|
+
}, ae = (e.ctes ?? []).map((e) => t`${t(e.name)} AS (${X(e.descriptor, t, n)})`), oe = (e.ctes ?? []).some((e) => e.recursive === !0), se = ae.length > 0 ? t`WITH ${t.unsafe(oe ? "RECURSIVE " : "")}${t.csv(ae)} ` : t``;
|
|
1770
1806
|
return t.onDialectOrElse({
|
|
1771
1807
|
mssql: () => {
|
|
1772
|
-
let n = e.take !== void 0 && !
|
|
1773
|
-
return t`${
|
|
1808
|
+
let n = e.take !== void 0 && !b ? t`TOP ${S(e.take)} ` : t``, r = b ? t` OFFSET ${S(e.skip)} ROWS FETCH NEXT ${S(e.take ?? 2 ** 53 - 1)} ROWS ONLY` : t``;
|
|
1809
|
+
return t`${se}SELECT ${n}${f}${d} FROM ${te}${v}${re}${y}${ie}${r}`;
|
|
1774
1810
|
},
|
|
1775
1811
|
orElse: () => {
|
|
1776
|
-
let n = e.take === void 0 ? t`` : t` LIMIT ${
|
|
1777
|
-
return t`${
|
|
1812
|
+
let n = e.take === void 0 ? t`` : t` LIMIT ${S(e.take)}`, r = b ? t` OFFSET ${S(e.skip)}` : t``;
|
|
1813
|
+
return t`${se}SELECT ${f}${d} FROM ${te}${v}${re}${y}${ie}${n}${r}${h}`;
|
|
1778
1814
|
}
|
|
1779
1815
|
});
|
|
1780
|
-
},
|
|
1816
|
+
}, Z = (e, t) => {
|
|
1781
1817
|
let n = (e) => {
|
|
1782
1818
|
if (typeof e != "string" || !/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/.test(e)) return null;
|
|
1783
1819
|
let [t = "", n = ""] = e.replace(/^[+-]/, "").split("."), r = t.replace(/^0+/, "") || "0";
|
|
@@ -1795,74 +1831,74 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1795
1831
|
a = t === n ? 0 : t > n ? 1 : -1;
|
|
1796
1832
|
}
|
|
1797
1833
|
return a === 0 ? 0 : (a > 0 ? 1 : -1) * (r.negative ? -1 : 1);
|
|
1798
|
-
},
|
|
1834
|
+
}, Hn = (e, t) => ({
|
|
1799
1835
|
column: e,
|
|
1800
1836
|
op: "eq",
|
|
1801
1837
|
value: t
|
|
1802
|
-
}),
|
|
1838
|
+
}), Un = (e, t) => ({
|
|
1803
1839
|
column: e,
|
|
1804
1840
|
op: "neq",
|
|
1805
1841
|
value: t
|
|
1806
|
-
}),
|
|
1842
|
+
}), Wn = (e, t) => ({
|
|
1807
1843
|
column: e,
|
|
1808
1844
|
op: "gt",
|
|
1809
1845
|
value: t
|
|
1810
|
-
}),
|
|
1846
|
+
}), Gn = (e, t) => ({
|
|
1811
1847
|
column: e,
|
|
1812
1848
|
op: "gte",
|
|
1813
1849
|
value: t
|
|
1814
|
-
}),
|
|
1850
|
+
}), Kn = (e, t) => ({
|
|
1815
1851
|
column: e,
|
|
1816
1852
|
op: "lt",
|
|
1817
1853
|
value: t
|
|
1818
|
-
}),
|
|
1854
|
+
}), qn = (e, t) => ({
|
|
1819
1855
|
column: e,
|
|
1820
1856
|
op: "lte",
|
|
1821
1857
|
value: t
|
|
1822
|
-
}),
|
|
1858
|
+
}), Jn = (e, t) => ({
|
|
1823
1859
|
column: e,
|
|
1824
1860
|
op: "in",
|
|
1825
1861
|
value: t
|
|
1826
|
-
}),
|
|
1862
|
+
}), Yn = (e, t) => ({
|
|
1827
1863
|
column: e,
|
|
1828
1864
|
op: "notIn",
|
|
1829
1865
|
value: t
|
|
1830
|
-
}),
|
|
1866
|
+
}), Xn = (e, t) => ({
|
|
1831
1867
|
column: e,
|
|
1832
1868
|
op: "contains",
|
|
1833
1869
|
value: t
|
|
1834
|
-
}),
|
|
1870
|
+
}), Zn = (e, t) => ({
|
|
1835
1871
|
column: e,
|
|
1836
1872
|
op: "startsWith",
|
|
1837
1873
|
value: t
|
|
1838
|
-
}),
|
|
1874
|
+
}), Qn = (e, t) => ({
|
|
1839
1875
|
column: e,
|
|
1840
1876
|
op: "arrayContains",
|
|
1841
1877
|
value: t
|
|
1842
|
-
}),
|
|
1878
|
+
}), $n = (e, t) => ({
|
|
1843
1879
|
column: e,
|
|
1844
1880
|
op: "arrayOverlaps",
|
|
1845
1881
|
value: t
|
|
1846
|
-
}),
|
|
1882
|
+
}), er = (e, t) => ({
|
|
1847
1883
|
column: e,
|
|
1848
1884
|
op: "arrayHas",
|
|
1849
1885
|
value: t
|
|
1850
|
-
}),
|
|
1886
|
+
}), tr = {
|
|
1851
1887
|
column: "id",
|
|
1852
1888
|
op: "in",
|
|
1853
1889
|
value: []
|
|
1854
|
-
},
|
|
1890
|
+
}, nr = (e) => ({
|
|
1855
1891
|
column: e,
|
|
1856
1892
|
op: "isNull"
|
|
1857
|
-
}),
|
|
1893
|
+
}), rr = (e) => ({
|
|
1858
1894
|
column: e,
|
|
1859
1895
|
op: "isNotNull"
|
|
1860
|
-
}),
|
|
1896
|
+
}), ir = (e, t) => ({
|
|
1861
1897
|
column: e,
|
|
1862
1898
|
op: "spatial",
|
|
1863
1899
|
value: t
|
|
1864
|
-
}),
|
|
1865
|
-
if (t.length === 0) throw
|
|
1900
|
+
}), ar = (...e) => ({ and: e }), or = (...e) => ({ or: e }), sr = (e) => ({ not: e }), cr = (e, ...t) => {
|
|
1901
|
+
if (t.length === 0) throw E(`jsonField("${e}"): at least one path segment is required`);
|
|
1866
1902
|
let n = (n, r) => ({
|
|
1867
1903
|
column: e,
|
|
1868
1904
|
path: t,
|
|
@@ -1883,56 +1919,56 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1883
1919
|
isNull: () => n("isNull"),
|
|
1884
1920
|
isNotNull: () => n("isNotNull")
|
|
1885
1921
|
};
|
|
1886
|
-
},
|
|
1922
|
+
}, Q = (e) => "descriptor" in e ? e.descriptor : e, lr = (e, t) => ({
|
|
1887
1923
|
column: e,
|
|
1888
1924
|
op: "subquery-in",
|
|
1889
|
-
subquery:
|
|
1890
|
-
}),
|
|
1925
|
+
subquery: Q(t)
|
|
1926
|
+
}), ur = (e, t) => ({
|
|
1891
1927
|
column: e,
|
|
1892
1928
|
op: "subquery-not-in",
|
|
1893
|
-
subquery:
|
|
1894
|
-
}),
|
|
1929
|
+
subquery: Q(t)
|
|
1930
|
+
}), dr = (e) => ({
|
|
1895
1931
|
op: "exists",
|
|
1896
|
-
subquery:
|
|
1897
|
-
}),
|
|
1932
|
+
subquery: Q(e)
|
|
1933
|
+
}), fr = (e) => ({
|
|
1898
1934
|
op: "not-exists",
|
|
1899
|
-
subquery:
|
|
1900
|
-
}),
|
|
1935
|
+
subquery: Q(e)
|
|
1936
|
+
}), pr = /^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?)?$/, mr = (e) => {
|
|
1901
1937
|
if (e instanceof Date) return e.getTime();
|
|
1902
|
-
if (typeof e == "string" &&
|
|
1938
|
+
if (typeof e == "string" && pr.test(e)) {
|
|
1903
1939
|
let t = Date.parse(e);
|
|
1904
1940
|
return Number.isNaN(t) ? void 0 : t;
|
|
1905
1941
|
}
|
|
1906
|
-
},
|
|
1942
|
+
}, hr = (e, t) => {
|
|
1907
1943
|
if (!(e instanceof Date) && !(t instanceof Date)) return;
|
|
1908
|
-
let n =
|
|
1944
|
+
let n = mr(e), r = mr(t);
|
|
1909
1945
|
return n === void 0 || r === void 0 ? void 0 : [n, r];
|
|
1910
|
-
},
|
|
1946
|
+
}, gr = (e, t) => {
|
|
1911
1947
|
if (e === t) return !0;
|
|
1912
|
-
let n =
|
|
1948
|
+
let n = hr(e, t);
|
|
1913
1949
|
return n !== void 0 && n[0] === n[1];
|
|
1914
|
-
},
|
|
1950
|
+
}, _r = (e, t) => {
|
|
1915
1951
|
if (e == null || t == null) return null;
|
|
1916
|
-
let n =
|
|
1952
|
+
let n = hr(e, t);
|
|
1917
1953
|
if (n !== void 0) return n[0] === n[1] ? 0 : n[0] > n[1] ? 1 : -1;
|
|
1918
1954
|
let r = e instanceof Date ? e.getTime() : e, i = t instanceof Date ? t.getTime() : t;
|
|
1919
1955
|
return typeof r == typeof i ? r === i ? 0 : r > i ? 1 : -1 : null;
|
|
1920
|
-
},
|
|
1956
|
+
}, $ = (e, t, n = null, r = {}) => {
|
|
1921
1957
|
if (!t) return !1;
|
|
1922
|
-
if ("not" in e) return
|
|
1958
|
+
if ("not" in e) return !$(e.not, t, n, r);
|
|
1923
1959
|
if ("and" in e) {
|
|
1924
|
-
for (let i of e.and) if (
|
|
1960
|
+
for (let i of e.and) if (!$(i, t, n, r)) return !1;
|
|
1925
1961
|
return !0;
|
|
1926
1962
|
}
|
|
1927
1963
|
if ("or" in e) {
|
|
1928
|
-
for (let i of e.or) if (
|
|
1964
|
+
for (let i of e.or) if ($(i, t, n, r)) return !0;
|
|
1929
1965
|
return !1;
|
|
1930
1966
|
}
|
|
1931
1967
|
if (e.op === "subquery-in" || e.op === "subquery-not-in") {
|
|
1932
1968
|
if (!n) return !1;
|
|
1933
1969
|
let i = n.get(e.subquery);
|
|
1934
1970
|
if (!(i instanceof Set)) return !1;
|
|
1935
|
-
let a = t[e.column], o = r[e.column]?.type === "decimal" ? [...i].some((e) =>
|
|
1971
|
+
let a = t[e.column], o = r[e.column]?.type === "decimal" ? [...i].some((e) => Z(a, e) === 0) : i.has(a);
|
|
1936
1972
|
return e.op === "subquery-in" ? o : !o;
|
|
1937
1973
|
}
|
|
1938
1974
|
if (e.op === "exists" || e.op === "not-exists") {
|
|
@@ -1940,7 +1976,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1940
1976
|
let t = n.get(e.subquery), r = typeof t == "number" ? t > 0 : t instanceof Set && t.size > 0;
|
|
1941
1977
|
return e.op === "exists" ? r : !r;
|
|
1942
1978
|
}
|
|
1943
|
-
let i = e, a = t[i.column], o = r[i.column]?.type === "decimal", s = (e, t) => o && e != null && t != null ?
|
|
1979
|
+
let i = e, a = t[i.column], o = r[i.column]?.type === "decimal", s = (e, t) => o && e != null && t != null ? Z(e, t) === 0 : gr(e, t), c = o ? Z : _r;
|
|
1944
1980
|
switch (i.op) {
|
|
1945
1981
|
case "eq": return s(a, i.value);
|
|
1946
1982
|
case "neq": return !s(a, i.value);
|
|
@@ -1963,19 +1999,19 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1963
1999
|
case "arrayHas": return Array.isArray(a) && a.includes(i.value);
|
|
1964
2000
|
case "isNull": return a == null;
|
|
1965
2001
|
case "isNotNull": return a != null;
|
|
1966
|
-
case "spatial": throw
|
|
2002
|
+
case "spatial": throw E("@voltro/plugin-postgis: spatial predicates (ST_DWithin / ST_Contains / ST_Within / ST_Intersects / bbox &&) are not evaluable in-memory — use them in one-shot ctx.store.query reads, not reactive subscriptions.");
|
|
1967
2003
|
}
|
|
1968
|
-
},
|
|
2004
|
+
}, vr = function* (e) {
|
|
1969
2005
|
if ("not" in e) {
|
|
1970
|
-
yield*
|
|
2006
|
+
yield* vr(e.not);
|
|
1971
2007
|
return;
|
|
1972
2008
|
}
|
|
1973
2009
|
if ("and" in e) {
|
|
1974
|
-
for (let t of e.and) yield*
|
|
2010
|
+
for (let t of e.and) yield* vr(t);
|
|
1975
2011
|
return;
|
|
1976
2012
|
}
|
|
1977
2013
|
if ("or" in e) {
|
|
1978
|
-
for (let t of e.or) yield*
|
|
2014
|
+
for (let t of e.or) yield* vr(t);
|
|
1979
2015
|
return;
|
|
1980
2016
|
}
|
|
1981
2017
|
e.op === "subquery-in" || e.op === "subquery-not-in" ? yield {
|
|
@@ -1985,30 +2021,30 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
1985
2021
|
kind: "exists",
|
|
1986
2022
|
descriptor: e.subquery
|
|
1987
2023
|
});
|
|
1988
|
-
},
|
|
2024
|
+
}, yr = function* (e, t = !0) {
|
|
1989
2025
|
if ("not" in e) {
|
|
1990
|
-
yield*
|
|
2026
|
+
yield* yr(e.not, !1);
|
|
1991
2027
|
return;
|
|
1992
2028
|
}
|
|
1993
2029
|
if ("and" in e) {
|
|
1994
|
-
for (let n of e.and) yield*
|
|
2030
|
+
for (let n of e.and) yield* yr(n, t);
|
|
1995
2031
|
return;
|
|
1996
2032
|
}
|
|
1997
2033
|
if ("or" in e) {
|
|
1998
|
-
for (let t of e.or) yield*
|
|
2034
|
+
for (let t of e.or) yield* yr(t, !1);
|
|
1999
2035
|
return;
|
|
2000
2036
|
}
|
|
2001
2037
|
e.op !== "subquery-in" && e.op !== "subquery-not-in" && e.op !== "exists" && e.op !== "not-exists" && (yield {
|
|
2002
2038
|
...e,
|
|
2003
2039
|
conjunctive: t
|
|
2004
2040
|
});
|
|
2005
|
-
},
|
|
2041
|
+
}, br = (e, t) => ({
|
|
2006
2042
|
name: e,
|
|
2007
2043
|
body: t
|
|
2008
|
-
}),
|
|
2044
|
+
}), xr = (e) => {
|
|
2009
2045
|
if (e.lifecycle === "cron" && !e.cron) throw Error(`seed "${e.id}": lifecycle 'cron' requires a 'cron' field`);
|
|
2010
2046
|
if (e.lifecycle === "onSchemaChange" && (!e.watchedTables || e.watchedTables.length === 0)) throw Error(`seed "${e.id}": lifecycle 'onSchemaChange' requires at least one entry in 'watchedTables'`);
|
|
2011
|
-
let t = e.steps({ step:
|
|
2047
|
+
let t = e.steps({ step: br });
|
|
2012
2048
|
if (t.length === 0) throw Error(`seed "${e.id}": at least one step is required`);
|
|
2013
2049
|
return {
|
|
2014
2050
|
__seed: !0,
|
|
@@ -2021,76 +2057,76 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
2021
2057
|
...e.fingerprint === void 0 ? {} : { fingerprint: e.fingerprint },
|
|
2022
2058
|
steps: t
|
|
2023
2059
|
};
|
|
2024
|
-
},
|
|
2025
|
-
|
|
2026
|
-
},
|
|
2027
|
-
|
|
2028
|
-
},
|
|
2029
|
-
let t =
|
|
2060
|
+
}, Sr = (e) => typeof e == "object" && !!e && "__seed" in e && e.__seed === !0, Cr = null, wr = null, Tr = (e) => {
|
|
2061
|
+
Cr = e;
|
|
2062
|
+
}, Er = (e) => {
|
|
2063
|
+
wr = e;
|
|
2064
|
+
}, Dr = async (e) => {
|
|
2065
|
+
let t = Cr;
|
|
2030
2066
|
t !== null && await t(e);
|
|
2031
|
-
},
|
|
2032
|
-
let t =
|
|
2067
|
+
}, Or = async (e) => {
|
|
2068
|
+
let t = wr;
|
|
2033
2069
|
t !== null && e.changedTables.length !== 0 && await t(e);
|
|
2034
|
-
},
|
|
2070
|
+
}, kr = ["before-schema", "after-schema"], Ar = (e) => {
|
|
2035
2071
|
if (!e.id || e.id.length === 0) throw Error("migration: `id` is required + must be non-empty");
|
|
2036
2072
|
if (!e.up || !e.down) throw Error(`migration ${e.id}: both \`up\` and \`down\` must be functions`);
|
|
2037
|
-
if (!
|
|
2073
|
+
if (!kr.includes(e.phase)) throw Error(`migration ${e.id}: \`phase\` is required and must be one of ${kr.map((e) => `'${e}'`).join(" | ")} — 'before-schema' runs before the declarative apply (a shape change the planner must not compute against), 'after-schema' runs after it (a body that needs the new shape, such as a back-fill into a table this deploy creates)`);
|
|
2038
2074
|
return e;
|
|
2039
|
-
},
|
|
2075
|
+
}, jr = Symbol.for("voltro.migration.irreversible"), Mr = class extends Error {
|
|
2040
2076
|
migrationId;
|
|
2041
2077
|
reason;
|
|
2042
2078
|
_tag = "IrreversibleMigrationError";
|
|
2043
2079
|
constructor(e, t) {
|
|
2044
2080
|
super(`migration ${e} cannot be rolled back: ${t}`), this.migrationId = e, this.reason = t, this.name = "IrreversibleMigrationError";
|
|
2045
2081
|
}
|
|
2046
|
-
},
|
|
2082
|
+
}, Nr = (e) => {
|
|
2047
2083
|
if (!e || e.trim().length === 0) throw Error("irreversible(): a reason is required");
|
|
2048
|
-
return Object.assign(() => t.fail(new
|
|
2049
|
-
},
|
|
2050
|
-
let t = e[
|
|
2084
|
+
return Object.assign(() => t.fail(new Mr("<unknown>", e)), { [jr]: e });
|
|
2085
|
+
}, Pr = (e) => {
|
|
2086
|
+
let t = e[jr];
|
|
2051
2087
|
return typeof t == "string" ? t : void 0;
|
|
2052
|
-
},
|
|
2088
|
+
}, Fr = class {
|
|
2053
2089
|
reason;
|
|
2054
2090
|
_tag = "MigrationSkipped";
|
|
2055
2091
|
constructor(e) {
|
|
2056
2092
|
this.reason = e;
|
|
2057
2093
|
}
|
|
2058
|
-
},
|
|
2094
|
+
}, Ir = class extends Error {
|
|
2059
2095
|
migrationId;
|
|
2060
2096
|
failed;
|
|
2061
2097
|
_tag = "MigrationExpectationFailed";
|
|
2062
2098
|
constructor(e, t) {
|
|
2063
2099
|
super(`migration ${e}: ${t.length} post-condition(s) did not hold after up():\n` + t.map((e) => ` - ${e}`).join("\n") + "\n The migration is NOT recorded; the next run applies it again."), this.migrationId = e, this.failed = t, this.name = "MigrationExpectationFailed";
|
|
2064
2100
|
}
|
|
2065
|
-
},
|
|
2101
|
+
}, Lr = class extends Error {
|
|
2066
2102
|
migrationId;
|
|
2067
2103
|
dialect;
|
|
2068
2104
|
_tag = "TransactionBrokenByBodyError";
|
|
2069
2105
|
constructor(e, t) {
|
|
2070
2106
|
super(`migration ${e} is transactional, and its body COMMITTED the transaction from inside — on ${t} a DDL statement commits everything before it. The work is in the database and the migration is recorded; it will not run again. What did not hold is the all-or-nothing guarantee. Either mark it \`transactional: false\` (per-statement, resumable through your own idempotency) or move the schema change into \`ctx.schema\` in a migration of its own and keep this one to data.`), this.migrationId = e, this.dialect = t, this.name = "TransactionBrokenByBodyError";
|
|
2071
2107
|
}
|
|
2072
|
-
},
|
|
2108
|
+
}, Rr = class extends Error {
|
|
2073
2109
|
migrationId;
|
|
2074
2110
|
operation;
|
|
2075
2111
|
_tag = "MigrationNeedsSqlClient";
|
|
2076
2112
|
constructor(e, t, n) {
|
|
2077
2113
|
super(`migration ${e}: ${t} — ${n}`), this.migrationId = e, this.operation = t, this.name = "MigrationNeedsSqlClient";
|
|
2078
2114
|
}
|
|
2079
|
-
},
|
|
2115
|
+
}, zr = class extends Error {
|
|
2080
2116
|
table;
|
|
2081
2117
|
report;
|
|
2082
2118
|
_tag = "RewriteUnstableError";
|
|
2083
2119
|
constructor(e, t) {
|
|
2084
2120
|
super(`rewrite of ${e} did not stabilise after ${t.passes} pass(es): ${t.rewritten} rewritten, ${t.contended} contended on the last pass. Check for concurrent writes and guard values that cannot round-trip exactly before raising maxPasses.`), this.table = e, this.report = t, this.name = "RewriteUnstableError";
|
|
2085
2121
|
}
|
|
2086
|
-
},
|
|
2122
|
+
}, Br = /^\d{8}_\d{6}_[a-z0-9_]+\.ts$/, Vr = (e) => typeof e == "object" && !!e && "id" in e && "up" in e && "down" in e && typeof e.id == "string" && typeof e.up == "function" && typeof e.down == "function", Hr = /* @__PURE__ */ new Set(["voltro_isr_cache"]), Ur = (e) => Hr.has(e) || e.startsWith("_voltro_") || e.startsWith("_cloud_") || e.startsWith("cluster_") || e.startsWith("__turso_internal_"), Wr = "_voltro_staging_", Gr = (e) => e.startsWith(Wr), Kr = /__dropped_\d{14}$/, qr = (e) => Kr.test(e), Jr = 7, Yr = (e) => {
|
|
2087
2123
|
let t = /__dropped_(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/.exec(e);
|
|
2088
2124
|
if (t === null) return;
|
|
2089
2125
|
let [, n, r, i, a, o, s] = t;
|
|
2090
2126
|
return new Date(Date.UTC(Number(n), Number(r) - 1, Number(i), Number(a), Number(o), Number(s)));
|
|
2091
|
-
},
|
|
2127
|
+
}, Xr = (e, t = {}) => {
|
|
2092
2128
|
let n = t.now ?? /* @__PURE__ */ new Date(), r = t.retentionDays ?? 7, i = [], a = (e, t) => {
|
|
2093
|
-
let a =
|
|
2129
|
+
let a = Yr(e);
|
|
2094
2130
|
if (a === void 0) return;
|
|
2095
2131
|
let o = Math.floor((n.getTime() - a.getTime()) / 864e5);
|
|
2096
2132
|
o >= r && i.push({
|
|
@@ -2099,137 +2135,149 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
|
|
|
2099
2135
|
ageDays: o
|
|
2100
2136
|
});
|
|
2101
2137
|
};
|
|
2102
|
-
for (let t of e.tables) if (a(t.name, t.name), !
|
|
2138
|
+
for (let t of e.tables) if (a(t.name, t.name), !qr(t.name)) for (let e of t.columns ?? []) a(e.name, `${t.name}.${e.name}`);
|
|
2103
2139
|
return i;
|
|
2104
|
-
},
|
|
2140
|
+
}, Zr = (e, t) => {
|
|
2105
2141
|
let n = e.reduce((e, t) => e.ageDays >= t.ageDays ? e : t), r = (/* @__PURE__ */ new Date(Date.now() - t * 864e5)).toISOString().slice(0, 10);
|
|
2106
2142
|
return `${e.length} soft-drop snapshot(s) older than ${t} day(s) still hold the dropped data (oldest: ${n.name}, ${n.ageDays}d) — ${e.map((e) => e.name).join(", ")}. Restore with \`voltro db restore-snapshot\` or reclaim with \`voltro db gc-snapshots --before ${r}\`; the window is \`database.softDropRetentionDays\` in app.config.`;
|
|
2107
|
-
},
|
|
2143
|
+
}, Qr = (e, t) => e.filter((e) => !Ur(e.name) || t.has(e.name)), $r = L("_voltro_migrations", {
|
|
2108
2144
|
id: f({ prefix: "mig" }),
|
|
2109
2145
|
name: p(),
|
|
2110
2146
|
hash: p(),
|
|
2111
2147
|
status: p(),
|
|
2112
|
-
appliedAt:
|
|
2148
|
+
appliedAt: v().nullable(),
|
|
2113
2149
|
durationMs: m().nullable(),
|
|
2114
2150
|
errorMessage: p().nullable(),
|
|
2115
2151
|
errorStack: p().nullable(),
|
|
2116
2152
|
workflowRunId: p().nullable(),
|
|
2117
|
-
createdAt:
|
|
2118
|
-
updatedAt:
|
|
2119
|
-
}).index(["status"]),
|
|
2153
|
+
createdAt: v().default("now"),
|
|
2154
|
+
updatedAt: v().default("now").onUpdate("now")
|
|
2155
|
+
}).index(["status"]), ei = L("_voltro_seeds", {
|
|
2120
2156
|
id: f({ prefix: "seed" }),
|
|
2121
2157
|
name: p(),
|
|
2122
2158
|
lifecycle: p(),
|
|
2123
2159
|
fingerprint: p(),
|
|
2124
2160
|
cronSchedule: p().nullable(),
|
|
2125
|
-
watchedTables:
|
|
2126
|
-
nextRunAt:
|
|
2161
|
+
watchedTables: y().nullable(),
|
|
2162
|
+
nextRunAt: v().nullable(),
|
|
2127
2163
|
lastRunStatus: p().nullable(),
|
|
2128
|
-
lastRunAt:
|
|
2164
|
+
lastRunAt: v().nullable(),
|
|
2129
2165
|
lastRunDurationMs: m().nullable(),
|
|
2130
2166
|
lastRunRowsTouched: m().nullable(),
|
|
2131
2167
|
lastError: p().nullable(),
|
|
2132
2168
|
workflowRunId: p().nullable(),
|
|
2133
|
-
createdAt:
|
|
2134
|
-
updatedAt:
|
|
2135
|
-
}).index(["lifecycle"]).index(["nextRunAt"]),
|
|
2169
|
+
createdAt: v().default("now"),
|
|
2170
|
+
updatedAt: v().default("now").onUpdate("now")
|
|
2171
|
+
}).index(["lifecycle"]).index(["nextRunAt"]), ti = L("_voltro_schema_owner", {
|
|
2172
|
+
id: f({ prefix: "own" }),
|
|
2173
|
+
appName: p(),
|
|
2174
|
+
projectName: p().nullable(),
|
|
2175
|
+
frameworkVersion: p().nullable(),
|
|
2176
|
+
claimedAt: v().default("now")
|
|
2177
|
+
}), ni = L("_voltro_plugin_migrations", {
|
|
2178
|
+
id: f({ prefix: "plm" }),
|
|
2179
|
+
plugin_name: p(),
|
|
2180
|
+
migration_id: p(),
|
|
2181
|
+
description: p().nullable(),
|
|
2182
|
+
applied_at: p()
|
|
2183
|
+
}), ri = L("_voltro_migration_plans", {
|
|
2136
2184
|
id: f({ prefix: "plan" }),
|
|
2137
2185
|
fingerprint: p(),
|
|
2138
2186
|
liveFingerprint: p().nullable(),
|
|
2139
|
-
operations:
|
|
2140
|
-
rollbackPlan:
|
|
2187
|
+
operations: y(),
|
|
2188
|
+
rollbackPlan: y().nullable(),
|
|
2141
2189
|
appliedBy: p(),
|
|
2142
2190
|
environment: p(),
|
|
2143
2191
|
source: p(),
|
|
2144
2192
|
onlineStrategy: p().nullable(),
|
|
2145
2193
|
durationMs: m(),
|
|
2146
2194
|
notes: p().nullable(),
|
|
2147
|
-
squashedAt:
|
|
2148
|
-
appliedAt:
|
|
2149
|
-
createdAt:
|
|
2150
|
-
updatedAt:
|
|
2151
|
-
}).index(["fingerprint"]).index(["environment"]),
|
|
2195
|
+
squashedAt: v().nullable(),
|
|
2196
|
+
appliedAt: v().default("now"),
|
|
2197
|
+
createdAt: v().default("now"),
|
|
2198
|
+
updatedAt: v().default("now").onUpdate("now")
|
|
2199
|
+
}).index(["fingerprint"]).index(["environment"]), ii = L("_voltro_idempotency", {
|
|
2152
2200
|
id: f({ prefix: "idem" }),
|
|
2153
2201
|
scope: p(),
|
|
2154
2202
|
key: p(),
|
|
2155
2203
|
status: p(),
|
|
2156
|
-
response:
|
|
2157
|
-
createdAt:
|
|
2158
|
-
}).unique(["scope", "key"]).index(["createdAt"]),
|
|
2204
|
+
response: y().nullable(),
|
|
2205
|
+
createdAt: v().default("now")
|
|
2206
|
+
}).unique(["scope", "key"]).index(["createdAt"]), ai = L("_voltro_devices", {
|
|
2159
2207
|
id: f({ prefix: "device" }),
|
|
2160
2208
|
tenantId: p(),
|
|
2161
2209
|
name: p(),
|
|
2162
|
-
scopes:
|
|
2210
|
+
scopes: y().nullable(),
|
|
2163
2211
|
pairingHash: p().maxLength(64).nullable(),
|
|
2164
|
-
pairingExpiresAt:
|
|
2212
|
+
pairingExpiresAt: v().nullable(),
|
|
2165
2213
|
accessHash: p().maxLength(64).nullable(),
|
|
2166
|
-
accessExpiresAt:
|
|
2214
|
+
accessExpiresAt: v().nullable(),
|
|
2167
2215
|
refreshHash: p().maxLength(64).nullable(),
|
|
2168
|
-
refreshExpiresAt:
|
|
2216
|
+
refreshExpiresAt: v().nullable(),
|
|
2169
2217
|
previousRefreshHash: p().maxLength(64).nullable(),
|
|
2170
2218
|
generation: m().default(0),
|
|
2171
|
-
pairedAt:
|
|
2172
|
-
lastSeenAt:
|
|
2173
|
-
revokedAt:
|
|
2219
|
+
pairedAt: v().nullable(),
|
|
2220
|
+
lastSeenAt: v().nullable(),
|
|
2221
|
+
revokedAt: v().nullable(),
|
|
2174
2222
|
revokedReason: p().nullable(),
|
|
2175
2223
|
createdBy: p().nullable(),
|
|
2176
|
-
metadata:
|
|
2177
|
-
createdAt:
|
|
2178
|
-
}).index(["tenantId"]).index(["pairingHash"]).index(["accessHash"]).index(["refreshHash"]).index(["previousRefreshHash"]),
|
|
2224
|
+
metadata: y().nullable(),
|
|
2225
|
+
createdAt: v()
|
|
2226
|
+
}).index(["tenantId"]).index(["pairingHash"]).index(["accessHash"]).index(["refreshHash"]).index(["previousRefreshHash"]), oi = L("_voltro_tenant_selections", {
|
|
2179
2227
|
id: f({ prefix: "tsel" }),
|
|
2180
2228
|
subjectType: p().maxLength(32),
|
|
2181
2229
|
subjectId: p(),
|
|
2182
2230
|
tenantId: p(),
|
|
2183
|
-
selectedAt:
|
|
2184
|
-
}).primaryKey(["id"]).nonReactive(),
|
|
2231
|
+
selectedAt: v()
|
|
2232
|
+
}).primaryKey(["id"]).nonReactive(), si = L("_voltro_kv", {
|
|
2185
2233
|
id: f({ prefix: "kv" }),
|
|
2186
2234
|
key: p().unique(),
|
|
2187
2235
|
value: p().nullable(),
|
|
2188
|
-
expiresAt:
|
|
2189
|
-
createdAt:
|
|
2190
|
-
updatedAt:
|
|
2191
|
-
}).index(["expiresAt"]),
|
|
2236
|
+
expiresAt: v().nullable(),
|
|
2237
|
+
createdAt: v().default("now"),
|
|
2238
|
+
updatedAt: v().default("now").onUpdate("now")
|
|
2239
|
+
}).index(["expiresAt"]), ci = L("_voltro_api_keys", {
|
|
2192
2240
|
id: f({ prefix: "apikey" }),
|
|
2193
2241
|
tenantId: p().nullable(),
|
|
2194
2242
|
name: p(),
|
|
2195
2243
|
hashedKey: p().maxLength(64).unique(),
|
|
2196
2244
|
keyPrefix: p(),
|
|
2197
|
-
scopes:
|
|
2198
|
-
lastUsedAt:
|
|
2245
|
+
scopes: y().nullable(),
|
|
2246
|
+
lastUsedAt: v().nullable(),
|
|
2199
2247
|
requestCount: m().default(0),
|
|
2200
|
-
expiresAt:
|
|
2201
|
-
revokedAt:
|
|
2248
|
+
expiresAt: v().nullable(),
|
|
2249
|
+
revokedAt: v().nullable(),
|
|
2202
2250
|
createdBy: p().nullable(),
|
|
2203
2251
|
onBehalfOf: p().nullable(),
|
|
2204
|
-
metadata:
|
|
2205
|
-
createdAt:
|
|
2206
|
-
}).index("byApiKeyTenant", ["tenantId"]),
|
|
2252
|
+
metadata: y().nullable(),
|
|
2253
|
+
createdAt: v().default("now")
|
|
2254
|
+
}).index("byApiKeyTenant", ["tenantId"]), li = L("_voltro_replica_observations", {
|
|
2207
2255
|
id: f({ prefix: "robs" }),
|
|
2208
2256
|
replicaId: p().maxLength(191),
|
|
2209
|
-
startedAt:
|
|
2257
|
+
startedAt: v(),
|
|
2210
2258
|
version: p().maxLength(64).nullable(),
|
|
2211
2259
|
kind: p().maxLength(64),
|
|
2212
2260
|
payload: p().nullable(),
|
|
2213
2261
|
reachableAt: p().maxLength(255).nullable(),
|
|
2214
|
-
writtenAt:
|
|
2215
|
-
}).unique(["replicaId", "kind"]).index(["kind"]),
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
],
|
|
2262
|
+
writtenAt: v().default("now").onUpdate("now")
|
|
2263
|
+
}).unique(["replicaId", "kind"]).index(["kind"]), ui = [
|
|
2264
|
+
$r,
|
|
2265
|
+
ei,
|
|
2266
|
+
ri
|
|
2267
|
+
], di = "_voltro_replace_in_progress", fi = L(di, {
|
|
2220
2268
|
id: f({ prefix: "repl" }),
|
|
2221
|
-
startedAt:
|
|
2269
|
+
startedAt: v().default("now"),
|
|
2222
2270
|
kind: p().default("replace"),
|
|
2223
2271
|
tables: p().nullable(),
|
|
2224
2272
|
capture: p().nullable(),
|
|
2225
2273
|
via: p(),
|
|
2226
2274
|
staging: p().nullable(),
|
|
2227
|
-
heartbeatAt:
|
|
2228
|
-
resumable:
|
|
2229
|
-
}),
|
|
2275
|
+
heartbeatAt: v().nullable(),
|
|
2276
|
+
resumable: _().nullable()
|
|
2277
|
+
}).nonReactive(), pi = 30, mi = (e, t) => {
|
|
2230
2278
|
let n = typeof t == "number" && Number.isFinite(t) && t > 0 ? t : 30, r = Number(e.VOLTRO_STAGING_STALE_MINUTES);
|
|
2231
2279
|
return (Number.isFinite(r) && r > 0 ? r : n) * 6e4;
|
|
2232
|
-
},
|
|
2280
|
+
}, hi = (e) => e == null || String(e).length === 0 ? [] : String(e).split(",").map((e) => e.trim()).filter((e) => e.length > 0), gi = (e) => {
|
|
2233
2281
|
let t = e.filter((e) => e.kind !== "staging");
|
|
2234
2282
|
if (t.length !== 0) return `refusing to start: a destructive data operation did not finish.
|
|
2235
2283
|
${t.map((e) => {
|
|
@@ -2244,7 +2292,7 @@ ${t.map((e) => {
|
|
|
2244
2292
|
|
|
2245
2293
|
When the data is back, or you have decided the current state is correct, clear the marker:
|
|
2246
2294
|
voltro data clear-replace-marker --yes`;
|
|
2247
|
-
},
|
|
2295
|
+
}, _i = (e, t, n) => {
|
|
2248
2296
|
let r = e.filter((e) => e.kind === "staging");
|
|
2249
2297
|
return {
|
|
2250
2298
|
all: r,
|
|
@@ -2254,7 +2302,7 @@ ${t.map((e) => {
|
|
|
2254
2302
|
return Number.isFinite(r) ? t - r >= n : !1;
|
|
2255
2303
|
})
|
|
2256
2304
|
};
|
|
2257
|
-
},
|
|
2305
|
+
}, vi = (e, t) => {
|
|
2258
2306
|
if (e.all.length === 0) return;
|
|
2259
2307
|
let n = new Set(e.droppable.map((e) => e.id));
|
|
2260
2308
|
return `staged data-import leftovers:
|
|
@@ -2265,4 +2313,4 @@ ${e.all.map((e) => {
|
|
|
2265
2313
|
a reason to refuse the boot — it is a reason to know the disk is holding a copy of a bundle.`;
|
|
2266
2314
|
};
|
|
2267
2315
|
//#endregion
|
|
2268
|
-
export {
|
|
2316
|
+
export { $n as $, Re as $n, Vt as $t, Yr as A, L as An, C as Ar, Dn as At, Pr as B, Be as Bn, ce as Br, un as Bt, Wr as C, Ot as Cn, se as Cr, Z as Ct, qr as D, R as Dn, m as Dr, X as Dt, Ur as E, yt as En, f as Er, Bn as Et, Rr as F, at as Fn, oe as Fr, Sn as Ft, Dr as G, j as Gn, rn as Gt, Ar as H, He as Hn, en as Ht, Fr as I, st as In, ae as Ir, G as It, Tr as J, De as Jn, Lt as Jt, Sr as K, P as Kn, Pt as Kt, zr as L, ot as Ln, o as Lr, mn as Lt, Mr as M, lt as Mn, pe as Mr, vn as Mt, kr as N, ct as Nn, c as Nr, K as Nt, Gr as O, pt as On, ue as Or, q as Ot, Ir as P, ut as Pn, h as Pr, Cn as Pt, er as Q, Le as Qn, Wt as Qt, Lr as R, it as Rn, p as Rr, ln as Rt, Hr as S, Et as Sn, g as Sr, yr as St, Zr as T, bt as Tn, fe as Tr, On as Tt, xr as U, M as Un, nn as Ut, Vr as V, Ve as Vn, pn as Vt, Or as W, N as Wn, tn as Wt, ar as X, Ne as Xn, Mt as Xt, tr as Y, T as Yn, jt as Yt, Qn as Z, Ie as Zn, $t as Zt, ti as _, kt as _n, l as _r, Yn as _t, vi as a, V as an, be as ar, Wn as at, ui as b, At as bn, re as br, ir as bt, mi as c, Xt as cn, ge as cr, lr as ct, ii as d, Ht as dn, S as dr, cr as dt, Bt as en, we as er, vr as et, si as f, Nt as fn, le as fr, Kn as ft, li as g, Dt as gn, ie as gr, fr as gt, ni as h, zt as hn, b as hr, sr as ht, gi as i, Ft as in, ye as ir, dr as it, Br as j, ft as jn, ee as jr, yn as jt, Qr as k, dt as kn, y as kr, En as kt, ci as l, Ut as ln, he as lr, rr as lt, $r as m, Rt as mn, _ as mr, Un as mt, pi as n, Kt as nn, Fe as nr, Hn as nt, _i as o, Qt as on, _e as or, Gn as ot, ri as p, qt as pn, te as pr, qn as pt, Er as q, E as qn, Jt as qt, fi as r, It as rn, Te as rr, $ as rt, hi as s, Zt as sn, ve as sr, Jn as st, di as t, Gt as tn, Pe as tr, Xn as tt, ai as u, Yt as un, u as ur, nr as ut, ei as v, Tt as vn, s as vr, ur as vt, Xr as w, xt as wn, de as wr, J as wt, Jr as x, wt as xn, ne as xr, Zn as xt, oi as y, B as yn, x as yr, or as yt, Nr as z, tt as zn, v as zr, dn as zt };
|