@palbase/backend 38.0.15 → 39.0.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/dist/bin/palbase-backend.cjs +46 -1
- package/dist/bin/palbase-backend.cjs.map +1 -1
- package/dist/bin/palbase-backend.js +5 -5
- package/dist/{chunk-LFUNRWUE.js → chunk-4J6I4KVQ.js} +67 -3
- package/dist/{chunk-LFUNRWUE.js.map → chunk-4J6I4KVQ.js.map} +1 -1
- package/dist/{chunk-7WAGQ3VR.js → chunk-AR2I4M7I.js} +497 -17
- package/dist/chunk-AR2I4M7I.js.map +1 -0
- package/dist/{chunk-YANGWAIM.js → chunk-H7EKL6HC.js} +2 -2
- package/dist/{chunk-EHKEMHB4.js → chunk-JJSR4BUX.js} +49 -5
- package/dist/chunk-JJSR4BUX.js.map +1 -0
- package/dist/{chunk-CS6NQ6PO.js → chunk-JPTFYHP3.js} +2 -2
- package/dist/{chunk-CS6NQ6PO.js.map → chunk-JPTFYHP3.js.map} +1 -1
- package/dist/{chunk-X7UR3VXA.js → chunk-XZWOMPD3.js} +3 -2
- package/dist/chunk-XZWOMPD3.js.map +1 -0
- package/dist/{chunk-PDD55QWN.js → chunk-ZNQDL466.js} +2 -2
- package/dist/db/index.cjs +378 -14
- package/dist/db/index.cjs.map +1 -1
- package/dist/db/index.d.cts +1 -1
- package/dist/db/index.d.ts +1 -1
- package/dist/db/index.js +3 -3
- package/dist/engine/index.cjs +46 -1
- package/dist/engine/index.cjs.map +1 -1
- package/dist/engine/index.d.cts +3 -3
- package/dist/engine/index.d.ts +3 -3
- package/dist/engine/index.js +5 -5
- package/dist/{index-CI7S0Wqv.d.cts → index-B0mjUnxy.d.cts} +25 -2
- package/dist/{index-CUy50OLU.d.ts → index-eN4KzGa5.d.ts} +555 -29
- package/dist/{index-DRx880KY.d.cts → index-pK2At5Yc.d.cts} +555 -29
- package/dist/{index-Ogi30dbt.d.ts → index-yDno9Ju9.d.ts} +25 -2
- package/dist/index.cjs +628 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +183 -8
- package/dist/index.d.ts +183 -8
- package/dist/index.js +74 -6
- package/dist/index.js.map +1 -1
- package/dist/openapi/index.cjs.map +1 -1
- package/dist/openapi/index.d.cts +2 -2
- package/dist/openapi/index.d.ts +2 -2
- package/dist/openapi/index.js +2 -2
- package/dist/{registry-C7UCkQf0.d.cts → registry-9dNeVN5d.d.cts} +1 -1
- package/dist/{registry-DJcvbomD.d.ts → registry-B8ddZiMY.d.ts} +1 -1
- package/dist/test/index.cjs +19 -0
- package/dist/test/index.cjs.map +1 -1
- package/dist/test/index.d.cts +1 -1
- package/dist/test/index.d.ts +1 -1
- package/dist/test/index.js +20 -2
- package/dist/test/index.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/database.md +79 -0
- package/docs/llms-full.txt +462 -33
- package/docs/schema.md +382 -32
- package/package.json +1 -1
- package/template/package.json +1 -1
- package/dist/chunk-7WAGQ3VR.js.map +0 -1
- package/dist/chunk-EHKEMHB4.js.map +0 -1
- package/dist/chunk-X7UR3VXA.js.map +0 -1
- /package/dist/{chunk-YANGWAIM.js.map → chunk-H7EKL6HC.js.map} +0 -0
- /package/dist/{chunk-PDD55QWN.js.map → chunk-ZNQDL466.js.map} +0 -0
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
buildContainer,
|
|
6
6
|
buildRelations,
|
|
7
7
|
uniqueKeysOf
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-H7EKL6HC.js";
|
|
9
9
|
import {
|
|
10
10
|
validateInsertManyOptions
|
|
11
11
|
} from "./chunk-GHNC2UHS.js";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
__requestALS,
|
|
14
14
|
__runStartHooks,
|
|
15
15
|
__runWithRuntime
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-XZWOMPD3.js";
|
|
17
17
|
import {
|
|
18
18
|
CODECS
|
|
19
19
|
} from "./chunk-FFO36MQQ.js";
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
qualifiedTableKey,
|
|
33
33
|
retryBudget,
|
|
34
34
|
validateAtomicOptions
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-4J6I4KVQ.js";
|
|
36
36
|
import {
|
|
37
37
|
getRoutes,
|
|
38
38
|
resolveEffectiveAuth
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
isHttpError,
|
|
50
50
|
isRetryable,
|
|
51
51
|
markEngineRaised
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-JPTFYHP3.js";
|
|
53
53
|
import {
|
|
54
54
|
__name
|
|
55
55
|
} from "./chunk-VXPNPVAG.js";
|
|
@@ -1635,6 +1635,11 @@ var WHERE_OPS = {
|
|
|
1635
1635
|
lte: "<=",
|
|
1636
1636
|
neq: "<>"
|
|
1637
1637
|
};
|
|
1638
|
+
var LOCK_MODES = {
|
|
1639
|
+
update: "FOR UPDATE",
|
|
1640
|
+
share: "FOR SHARE",
|
|
1641
|
+
noKeyUpdate: "FOR NO KEY UPDATE"
|
|
1642
|
+
};
|
|
1638
1643
|
function ftsExprOf(ftsCols) {
|
|
1639
1644
|
return [
|
|
1640
1645
|
...ftsCols
|
|
@@ -2628,6 +2633,45 @@ function createOps(tx, context = {}) {
|
|
|
2628
2633
|
await (await at()).unsafe(`SELECT t.${quoteIdent(pk)} FROM ${quoteTable(table)} t WHERE t.${quoteIdent(pk)} IN (${list}) ORDER BY t.${quoteIdent(pk)} FOR NO KEY UPDATE`, params);
|
|
2629
2634
|
},
|
|
2630
2635
|
/**
|
|
2636
|
+
* Bir FİLTRENİN eşleştiği satırları kilitle — sırayı yine KATMAN koyar
|
|
2637
|
+
* (FR-037).
|
|
2638
|
+
*
|
|
2639
|
+
* `lockRows` kilitlenecek kümeyi çağıranın SAYMASINI istiyor. "Bu hesabın
|
|
2640
|
+
* bekleyen bütün hareketlerini kilitle" bunu yapamaz: id listesi ancak bir
|
|
2641
|
+
* sorguyla çıkar, ve SORGU İLE KİLİT ARASINDAKİ BOŞLUK tam olarak kilidin
|
|
2642
|
+
* kapatması gereken yarıştır — araya giren bir INSERT o listede yoktur ve
|
|
2643
|
+
* kilitlenmez. Burada küme TEK statement'ta hem seçiliyor hem kilitleniyor.
|
|
2644
|
+
*
|
|
2645
|
+
* `ORDER BY <pk>`: `updateMany`'nin kilit CTE'siyle AYNI sıra (FR-037b).
|
|
2646
|
+
* Sırayı iki yolun da katmandan alması, aynı satır kümesine giren iki
|
|
2647
|
+
* transaction'ın ters sırada kilitlemesini imkânsız kılıyor — deadlock'un
|
|
2648
|
+
* bedeli ucuz değil, `deadlock_timeout` varsayılanı 1 SANİYE.
|
|
2649
|
+
*
|
|
2650
|
+
* KİLİT MODU EŞİTLENMEZ (FR-037b): `updateMany` işi UPDATE olduğu için
|
|
2651
|
+
* `FOR NO KEY UPDATE` kullanıyor, ama burada mod ÇAĞIRANIN seçimi. Herkesi
|
|
2652
|
+
* o moda zorlamak, yalnız okuma kilidi isteyeni ihtiyacından fazlasını
|
|
2653
|
+
* almaya zorlardı. Deadlock'u önleyen SIRADIR, mod değil.
|
|
2654
|
+
*/
|
|
2655
|
+
async lockRowsWhere(table, where, opts) {
|
|
2656
|
+
const mode = opts?.mode ?? "update";
|
|
2657
|
+
const clause = LOCK_MODES[mode];
|
|
2658
|
+
if (clause === void 0) {
|
|
2659
|
+
throw new Error(`lockRowsWhere(${table}): bilinmeyen mode "${String(mode)}" \u2014 "update" (FOR UPDATE), "share" (FOR SHARE) ya da "noKeyUpdate" (FOR NO KEY UPDATE).`);
|
|
2660
|
+
}
|
|
2661
|
+
const pk = primaryKeyOf(table);
|
|
2662
|
+
if (pk === null) {
|
|
2663
|
+
throw new Error(`lockRowsWhere(${table}): tek-kolon primary key bulunamad\u0131 \u2014 kilit s\u0131ras\u0131 bir anahtar ister (FR-037).`);
|
|
2664
|
+
}
|
|
2665
|
+
const params = [];
|
|
2666
|
+
const add = /* @__PURE__ */ __name((v) => {
|
|
2667
|
+
params.push(v);
|
|
2668
|
+
return `$${params.length}`;
|
|
2669
|
+
}, "add");
|
|
2670
|
+
const whereSql = compileWhere(table, schemaColumns(table), where, add, "lockRowsWhere");
|
|
2671
|
+
assertHasPredicate(whereSql, "lockRowsWhere", table);
|
|
2672
|
+
await (await at()).unsafe(`SELECT t.${quoteIdent(pk)} FROM ${quoteTable(table)} t WHERE true${whereSql} ORDER BY t.${quoteIdent(pk)} ${clause}`, params);
|
|
2673
|
+
},
|
|
2674
|
+
/**
|
|
2631
2675
|
* Bir idempotency anahtarını SAHİPLEN (FR-033).
|
|
2632
2676
|
*
|
|
2633
2677
|
* `{ inserted: true, row }` → bu çağrı yazdı.
|
|
@@ -5519,4 +5563,4 @@ export {
|
|
|
5519
5563
|
installEgressFence,
|
|
5520
5564
|
createApp
|
|
5521
5565
|
};
|
|
5522
|
-
//# sourceMappingURL=chunk-
|
|
5566
|
+
//# sourceMappingURL=chunk-JJSR4BUX.js.map
|