@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.
Files changed (58) hide show
  1. package/dist/bin/palbase-backend.cjs +46 -1
  2. package/dist/bin/palbase-backend.cjs.map +1 -1
  3. package/dist/bin/palbase-backend.js +5 -5
  4. package/dist/{chunk-LFUNRWUE.js → chunk-4J6I4KVQ.js} +67 -3
  5. package/dist/{chunk-LFUNRWUE.js.map → chunk-4J6I4KVQ.js.map} +1 -1
  6. package/dist/{chunk-7WAGQ3VR.js → chunk-AR2I4M7I.js} +497 -17
  7. package/dist/chunk-AR2I4M7I.js.map +1 -0
  8. package/dist/{chunk-YANGWAIM.js → chunk-H7EKL6HC.js} +2 -2
  9. package/dist/{chunk-EHKEMHB4.js → chunk-JJSR4BUX.js} +49 -5
  10. package/dist/chunk-JJSR4BUX.js.map +1 -0
  11. package/dist/{chunk-CS6NQ6PO.js → chunk-JPTFYHP3.js} +2 -2
  12. package/dist/{chunk-CS6NQ6PO.js.map → chunk-JPTFYHP3.js.map} +1 -1
  13. package/dist/{chunk-X7UR3VXA.js → chunk-XZWOMPD3.js} +3 -2
  14. package/dist/chunk-XZWOMPD3.js.map +1 -0
  15. package/dist/{chunk-PDD55QWN.js → chunk-ZNQDL466.js} +2 -2
  16. package/dist/db/index.cjs +378 -14
  17. package/dist/db/index.cjs.map +1 -1
  18. package/dist/db/index.d.cts +1 -1
  19. package/dist/db/index.d.ts +1 -1
  20. package/dist/db/index.js +3 -3
  21. package/dist/engine/index.cjs +46 -1
  22. package/dist/engine/index.cjs.map +1 -1
  23. package/dist/engine/index.d.cts +3 -3
  24. package/dist/engine/index.d.ts +3 -3
  25. package/dist/engine/index.js +5 -5
  26. package/dist/{index-CI7S0Wqv.d.cts → index-B0mjUnxy.d.cts} +25 -2
  27. package/dist/{index-CUy50OLU.d.ts → index-eN4KzGa5.d.ts} +555 -29
  28. package/dist/{index-DRx880KY.d.cts → index-pK2At5Yc.d.cts} +555 -29
  29. package/dist/{index-Ogi30dbt.d.ts → index-yDno9Ju9.d.ts} +25 -2
  30. package/dist/index.cjs +628 -17
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.cts +183 -8
  33. package/dist/index.d.ts +183 -8
  34. package/dist/index.js +74 -6
  35. package/dist/index.js.map +1 -1
  36. package/dist/openapi/index.cjs.map +1 -1
  37. package/dist/openapi/index.d.cts +2 -2
  38. package/dist/openapi/index.d.ts +2 -2
  39. package/dist/openapi/index.js +2 -2
  40. package/dist/{registry-C7UCkQf0.d.cts → registry-9dNeVN5d.d.cts} +1 -1
  41. package/dist/{registry-DJcvbomD.d.ts → registry-B8ddZiMY.d.ts} +1 -1
  42. package/dist/test/index.cjs +19 -0
  43. package/dist/test/index.cjs.map +1 -1
  44. package/dist/test/index.d.cts +1 -1
  45. package/dist/test/index.d.ts +1 -1
  46. package/dist/test/index.js +20 -2
  47. package/dist/test/index.js.map +1 -1
  48. package/docs/README.md +1 -1
  49. package/docs/database.md +79 -0
  50. package/docs/llms-full.txt +462 -33
  51. package/docs/schema.md +382 -32
  52. package/package.json +1 -1
  53. package/template/package.json +1 -1
  54. package/dist/chunk-7WAGQ3VR.js.map +0 -1
  55. package/dist/chunk-EHKEMHB4.js.map +0 -1
  56. package/dist/chunk-X7UR3VXA.js.map +0 -1
  57. /package/dist/{chunk-YANGWAIM.js.map → chunk-H7EKL6HC.js.map} +0 -0
  58. /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-YANGWAIM.js";
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-X7UR3VXA.js";
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-LFUNRWUE.js";
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-CS6NQ6PO.js";
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-EHKEMHB4.js.map
5566
+ //# sourceMappingURL=chunk-JJSR4BUX.js.map