neoorm 0.3.0 → 0.4.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 (189) hide show
  1. package/README.md +12 -6
  2. package/dist/bin/neoorm.js +45 -15
  3. package/dist/bin/neoorm.js.map +1 -1
  4. package/dist/codegen/diff-manifest.d.ts +7 -7
  5. package/dist/codegen/diff-manifest.d.ts.map +1 -1
  6. package/dist/codegen/diff-manifest.js +67 -54
  7. package/dist/codegen/diff-manifest.js.map +1 -1
  8. package/dist/codegen/generate-summary.js.map +1 -1
  9. package/dist/codegen/generate.d.ts.map +1 -1
  10. package/dist/codegen/generate.js +11 -1
  11. package/dist/codegen/generate.js.map +1 -1
  12. package/dist/codegen/manifest-relations.d.ts.map +1 -1
  13. package/dist/codegen/manifest-relations.js +21 -0
  14. package/dist/codegen/manifest-relations.js.map +1 -1
  15. package/dist/codegen/schema-to-manifest.js.map +1 -1
  16. package/dist/config.d.ts +1 -1
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +1 -1
  19. package/dist/config.js.map +1 -1
  20. package/dist/dialect/postgres.d.ts +3 -4
  21. package/dist/dialect/postgres.d.ts.map +1 -1
  22. package/dist/dialect/postgres.js +19 -11
  23. package/dist/dialect/postgres.js.map +1 -1
  24. package/dist/dialect/shared.d.ts +6 -0
  25. package/dist/dialect/shared.d.ts.map +1 -0
  26. package/dist/dialect/shared.js +16 -0
  27. package/dist/dialect/shared.js.map +1 -0
  28. package/dist/dialect/sqlite.d.ts +4 -0
  29. package/dist/dialect/sqlite.d.ts.map +1 -0
  30. package/dist/dialect/sqlite.js +276 -0
  31. package/dist/dialect/sqlite.js.map +1 -0
  32. package/dist/dialect/types.d.ts +7 -0
  33. package/dist/dialect/types.d.ts.map +1 -1
  34. package/dist/init/scaffold.js.map +1 -1
  35. package/dist/introspect/pull.d.ts +3 -2
  36. package/dist/introspect/pull.d.ts.map +1 -1
  37. package/dist/introspect/pull.js +124 -13
  38. package/dist/introspect/pull.js.map +1 -1
  39. package/dist/introspect/queries.d.ts +9 -9
  40. package/dist/introspect/queries.d.ts.map +1 -1
  41. package/dist/introspect/queries.js +16 -16
  42. package/dist/introspect/queries.js.map +1 -1
  43. package/dist/introspect/sqlite/to-manifest.d.ts +4 -0
  44. package/dist/introspect/sqlite/to-manifest.d.ts.map +1 -0
  45. package/dist/introspect/sqlite/to-manifest.js +166 -0
  46. package/dist/introspect/sqlite/to-manifest.js.map +1 -0
  47. package/dist/introspect/to-manifest.d.ts +2 -2
  48. package/dist/introspect/to-manifest.d.ts.map +1 -1
  49. package/dist/introspect/to-manifest.js +20 -12
  50. package/dist/introspect/to-manifest.js.map +1 -1
  51. package/dist/migrate/runner.d.ts +14 -14
  52. package/dist/migrate/runner.d.ts.map +1 -1
  53. package/dist/migrate/runner.js +83 -88
  54. package/dist/migrate/runner.js.map +1 -1
  55. package/dist/plugins/builtin.d.ts +1 -0
  56. package/dist/plugins/builtin.d.ts.map +1 -1
  57. package/dist/plugins/builtin.js +96 -6
  58. package/dist/plugins/builtin.js.map +1 -1
  59. package/dist/plugins/json/operators.d.ts.map +1 -1
  60. package/dist/plugins/json/operators.js +14 -5
  61. package/dist/plugins/json/operators.js.map +1 -1
  62. package/dist/plugins/types.d.ts +4 -4
  63. package/dist/plugins/types.d.ts.map +1 -1
  64. package/dist/runtime/client.d.ts +32 -7
  65. package/dist/runtime/client.d.ts.map +1 -1
  66. package/dist/runtime/client.js +68 -9
  67. package/dist/runtime/client.js.map +1 -1
  68. package/dist/runtime/driver.d.ts +28 -0
  69. package/dist/runtime/driver.d.ts.map +1 -0
  70. package/dist/runtime/driver.js +265 -0
  71. package/dist/runtime/driver.js.map +1 -0
  72. package/dist/runtime/errors.d.ts +1 -1
  73. package/dist/runtime/errors.d.ts.map +1 -1
  74. package/dist/runtime/errors.js +1 -0
  75. package/dist/runtime/errors.js.map +1 -1
  76. package/dist/runtime/executor.d.ts +11 -3
  77. package/dist/runtime/executor.d.ts.map +1 -1
  78. package/dist/runtime/executor.js +69 -37
  79. package/dist/runtime/executor.js.map +1 -1
  80. package/dist/runtime/pg-error.d.ts +1 -1
  81. package/dist/runtime/pg-error.d.ts.map +1 -1
  82. package/dist/runtime/pg-error.js +6 -1
  83. package/dist/runtime/pg-error.js.map +1 -1
  84. package/dist/runtime/query/aggregate.d.ts.map +1 -1
  85. package/dist/runtime/query/aggregate.js +5 -4
  86. package/dist/runtime/query/aggregate.js.map +1 -1
  87. package/dist/runtime/query/compile.d.ts +42 -16
  88. package/dist/runtime/query/compile.d.ts.map +1 -1
  89. package/dist/runtime/query/compile.js +479 -91
  90. package/dist/runtime/query/compile.js.map +1 -1
  91. package/dist/runtime/query/count.d.ts.map +1 -1
  92. package/dist/runtime/query/count.js +7 -3
  93. package/dist/runtime/query/count.js.map +1 -1
  94. package/dist/runtime/query/create.d.ts +5 -0
  95. package/dist/runtime/query/create.d.ts.map +1 -1
  96. package/dist/runtime/query/create.js +89 -23
  97. package/dist/runtime/query/create.js.map +1 -1
  98. package/dist/runtime/query/cursor.d.ts +4 -3
  99. package/dist/runtime/query/cursor.d.ts.map +1 -1
  100. package/dist/runtime/query/cursor.js +13 -9
  101. package/dist/runtime/query/cursor.js.map +1 -1
  102. package/dist/runtime/query/delete.d.ts +2 -1
  103. package/dist/runtime/query/delete.d.ts.map +1 -1
  104. package/dist/runtime/query/delete.js +27 -14
  105. package/dist/runtime/query/delete.js.map +1 -1
  106. package/dist/runtime/query/execute.d.ts +11 -4
  107. package/dist/runtime/query/execute.d.ts.map +1 -1
  108. package/dist/runtime/query/execute.js +20 -5
  109. package/dist/runtime/query/execute.js.map +1 -1
  110. package/dist/runtime/query/find-or-create.d.ts +17 -0
  111. package/dist/runtime/query/find-or-create.d.ts.map +1 -0
  112. package/dist/runtime/query/find-or-create.js +90 -0
  113. package/dist/runtime/query/find-or-create.js.map +1 -0
  114. package/dist/runtime/query/find.d.ts +13 -4
  115. package/dist/runtime/query/find.d.ts.map +1 -1
  116. package/dist/runtime/query/find.js +201 -47
  117. package/dist/runtime/query/find.js.map +1 -1
  118. package/dist/runtime/query/manifest-lookup.d.ts +3 -2
  119. package/dist/runtime/query/manifest-lookup.d.ts.map +1 -1
  120. package/dist/runtime/query/manifest-lookup.js +5 -4
  121. package/dist/runtime/query/manifest-lookup.js.map +1 -1
  122. package/dist/runtime/query/paginate.d.ts.map +1 -1
  123. package/dist/runtime/query/paginate.js +16 -11
  124. package/dist/runtime/query/paginate.js.map +1 -1
  125. package/dist/runtime/query/primary-key.d.ts +9 -6
  126. package/dist/runtime/query/primary-key.d.ts.map +1 -1
  127. package/dist/runtime/query/primary-key.js +65 -35
  128. package/dist/runtime/query/primary-key.js.map +1 -1
  129. package/dist/runtime/query/relation-planner.d.ts +74 -0
  130. package/dist/runtime/query/relation-planner.d.ts.map +1 -0
  131. package/dist/runtime/query/relation-planner.js +648 -0
  132. package/dist/runtime/query/relation-planner.js.map +1 -0
  133. package/dist/runtime/query/relation-writes.d.ts +2 -1
  134. package/dist/runtime/query/relation-writes.d.ts.map +1 -1
  135. package/dist/runtime/query/relation-writes.js +46 -53
  136. package/dist/runtime/query/relation-writes.js.map +1 -1
  137. package/dist/runtime/query/table-index.d.ts +61 -0
  138. package/dist/runtime/query/table-index.d.ts.map +1 -0
  139. package/dist/runtime/query/table-index.js +152 -0
  140. package/dist/runtime/query/table-index.js.map +1 -0
  141. package/dist/runtime/query/unique.d.ts +3 -2
  142. package/dist/runtime/query/unique.d.ts.map +1 -1
  143. package/dist/runtime/query/unique.js +7 -6
  144. package/dist/runtime/query/unique.js.map +1 -1
  145. package/dist/runtime/query/update.d.ts +3 -1
  146. package/dist/runtime/query/update.d.ts.map +1 -1
  147. package/dist/runtime/query/update.js +117 -36
  148. package/dist/runtime/query/update.js.map +1 -1
  149. package/dist/runtime/query/updated-at.d.ts +6 -4
  150. package/dist/runtime/query/updated-at.d.ts.map +1 -1
  151. package/dist/runtime/query/updated-at.js +23 -9
  152. package/dist/runtime/query/updated-at.js.map +1 -1
  153. package/dist/runtime/query/upsert.d.ts.map +1 -1
  154. package/dist/runtime/query/upsert.js +11 -9
  155. package/dist/runtime/query/upsert.js.map +1 -1
  156. package/dist/runtime/sqlite-open.d.ts +3 -0
  157. package/dist/runtime/sqlite-open.d.ts.map +1 -0
  158. package/dist/runtime/sqlite-open.js +22 -0
  159. package/dist/runtime/sqlite-open.js.map +1 -0
  160. package/dist/runtime/transaction.d.ts +5 -0
  161. package/dist/runtime/transaction.d.ts.map +1 -0
  162. package/dist/runtime/transaction.js +26 -0
  163. package/dist/runtime/transaction.js.map +1 -0
  164. package/dist/runtime/types.d.ts +9 -4
  165. package/dist/runtime/types.d.ts.map +1 -1
  166. package/dist/schema/column.d.ts +1 -1
  167. package/dist/schema/column.d.ts.map +1 -1
  168. package/dist/schema/column.js +1 -1
  169. package/dist/schema/column.js.map +1 -1
  170. package/dist/schema/define-schema.js.map +1 -1
  171. package/dist/schema/index.d.ts +2 -2
  172. package/dist/schema/index.d.ts.map +1 -1
  173. package/dist/schema/index.js +1 -1
  174. package/dist/schema/index.js.map +1 -1
  175. package/dist/schema/relation-types.d.ts +1 -0
  176. package/dist/schema/relation-types.d.ts.map +1 -1
  177. package/dist/schema/types.d.ts +12 -0
  178. package/dist/schema/types.d.ts.map +1 -1
  179. package/dist/sql/builder.d.ts.map +1 -1
  180. package/dist/sql/template.d.ts +7 -0
  181. package/dist/sql/template.d.ts.map +1 -1
  182. package/dist/sql/template.js +89 -3
  183. package/dist/sql/template.js.map +1 -1
  184. package/dist/utils/case.d.ts +4 -0
  185. package/dist/utils/case.d.ts.map +1 -1
  186. package/dist/utils/case.js +11 -0
  187. package/dist/utils/case.js.map +1 -1
  188. package/dist/utils/uuid.js.map +1 -1
  189. package/package.json +21 -4
@@ -1,15 +1,18 @@
1
1
  import type { ManifestColumn, ManifestRelation, ManifestTable } from "../../dialect/types.js";
2
- export declare function primaryKeyTsNames(table: ManifestTable): string[];
2
+ import { type TableIndex } from "./table-index.js";
3
+ export declare function primaryKeyTsNames(table: ManifestTable, tableIndex?: TableIndex): string[];
3
4
  export declare function primaryKeySqlName(table: ManifestTable, index?: number): string;
4
- export type ScalarPrimaryKeyOperation = "findById" | "updateById" | "deleteById";
5
- export declare function requireScalarPrimaryKey(table: ManifestTable, operation?: ScalarPrimaryKeyOperation): {
5
+ export type ScalarPrimaryKeyOperation = "findById" | "updateById" | "deleteById" | "cursorPaginate";
6
+ export declare function requireScalarPrimaryKey(table: ManifestTable, operation?: ScalarPrimaryKeyOperation, tableIndex?: TableIndex): {
6
7
  tsName: string;
7
8
  sqlName: string;
8
9
  };
9
10
  export declare function rowScalarPkValue(row: Record<string, unknown>, table: ManifestTable): string;
10
- export declare function rowPkKey(row: Record<string, unknown>, table: ManifestTable): string;
11
+ export declare function resolvePkWhere(table: ManifestTable, id: string | Record<string, unknown>, tableIndex?: TableIndex): Record<string, unknown>;
12
+ export declare function rowPkKey(row: Record<string, unknown>, table: ManifestTable, tableIndex?: TableIndex): string;
11
13
  export declare function targetRelationPkSql(targetTable: ManifestTable, relation?: ManifestRelation): string;
12
- export declare function resolveFkTargetSqlColumn(targetTable: ManifestTable, colRef: string | undefined): string;
14
+ export declare function resolveFkTargetSqlColumn(targetTable: ManifestTable, colRef: string | undefined, tableIndex?: TableIndex): string;
13
15
  export declare function defaultPrimaryKeyValue(table: ManifestTable, col: ManifestColumn): string;
14
- export declare function fillMissingPrimaryKeys(table: ManifestTable, data: Record<string, unknown>): void;
16
+ export declare function scalarPkAvailable(table: ManifestTable, data: Record<string, unknown>, tableIndex?: TableIndex): boolean;
17
+ export declare function fillMissingPrimaryKeys(table: ManifestTable, data: Record<string, unknown>, tableIndex?: TableIndex): void;
15
18
  //# sourceMappingURL=primary-key.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"primary-key.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/primary-key.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,MAAM,wBAAwB,CAAC;AAKhC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,CAOhE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,SAAI,GAAG,MAAM,CAQzE;AAED,MAAM,MAAM,yBAAyB,GAClC,UAAU,GACV,YAAY,GACZ,YAAY,CAAC;AAiBhB,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,aAAa,EACpB,SAAS,CAAC,EAAE,yBAAyB,GACnC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CAChB,CAwBA;AAED,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,KAAK,EAAE,aAAa,GAClB,MAAM,CAOR;AAED,wBAAgB,QAAQ,CACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,KAAK,EAAE,aAAa,GAClB,MAAM,CAMR;AAED,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,aAAa,EAC1B,QAAQ,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAKR;AAED,wBAAgB,wBAAwB,CACvC,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,CAQR;AAOD,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,cAAc,GACjB,MAAM,CAKR;AAED,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,IAAI,CAQN"}
1
+ {"version":3,"file":"primary-key.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/primary-key.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAGN,KAAK,UAAU,EACf,MAAM,kBAAkB,CAAC;AAI1B,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,aAAa,EACpB,UAAU,CAAC,EAAE,UAAU,GACrB,MAAM,EAAE,CAOV;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,SAAI,GAAG,MAAM,CAQzE;AAED,MAAM,MAAM,yBAAyB,GAClC,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,gBAAgB,CAAC;AAEpB,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,aAAa,EACpB,SAAS,CAAC,EAAE,yBAAyB,EACrC,UAAU,CAAC,EAAE,UAAU,GACrB;IACF,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CAChB,CAmBA;AAED,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,KAAK,EAAE,aAAa,GAClB,MAAM,CAUR;AAED,wBAAgB,cAAc,CAC7B,KAAK,EAAE,aAAa,EACpB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,UAAU,CAAC,EAAE,UAAU,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBzB;AAED,wBAAgB,QAAQ,CACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,KAAK,EAAE,aAAa,EACpB,UAAU,CAAC,EAAE,UAAU,GACrB,MAAM,CAMR;AAED,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,aAAa,EAC1B,QAAQ,CAAC,EAAE,gBAAgB,GACzB,MAAM,CAKR;AAED,wBAAgB,wBAAwB,CACvC,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,UAAU,CAAC,EAAE,UAAU,GACrB,MAAM,CAQR;AAOD,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,cAAc,GACjB,MAAM,CAKR;AAED,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,CAAC,EAAE,UAAU,GACrB,OAAO,CAUT;AAED,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,CAAC,EAAE,UAAU,GACrB,IAAI,CAoBN"}
@@ -1,9 +1,10 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { generateUuid, resolveUuidVersion } from "../../utils/uuid.js";
3
+ import { columnBySqlName, columnByTsName, } from "./table-index.js";
3
4
  const PK_KEY_SEP = "\0";
4
- export function primaryKeyTsNames(table) {
5
+ export function primaryKeyTsNames(table, tableIndex) {
5
6
  return table.primaryKey
6
- .map((sqlName) => table.columns.find((c) => c.sqlName === sqlName)?.tsName)
7
+ .map((sqlName) => columnBySqlName(tableIndex, table, sqlName)?.tsName)
7
8
  .filter((name) => name !== undefined);
8
9
  }
9
10
  export function primaryKeySqlName(table, index = 0) {
@@ -13,47 +14,49 @@ export function primaryKeySqlName(table, index = 0) {
13
14
  }
14
15
  return sqlName;
15
16
  }
16
- function compositePkAlternative(operation) {
17
- switch (operation) {
18
- case "findById":
19
- return "findFirst({ where: ... })";
20
- case "updateById":
21
- return "update({ where: ..., data: ... })";
22
- case "deleteById":
23
- return "delete({ where: ... })";
24
- default: {
25
- const _exhaustive = operation;
26
- return _exhaustive;
27
- }
28
- }
29
- }
30
- export function requireScalarPrimaryKey(table, operation) {
17
+ export function requireScalarPrimaryKey(table, operation, tableIndex) {
31
18
  if (table.primaryKey.length !== 1) {
32
- if (operation) {
33
- throw new Error(`${operation} requires a single-column primary key on table "${table.accessor}". For composite primary keys, use ${compositePkAlternative(operation)} instead.`);
34
- }
35
19
  throw new Error(`Operation requires a single-column primary key on table "${table.accessor}"`);
36
20
  }
37
21
  const sqlName = table.primaryKey[0];
38
22
  if (!sqlName) {
39
23
  throw new Error(`Primary key column not found for table "${table.accessor}"`);
40
24
  }
41
- const col = table.columns.find((c) => c.sqlName === sqlName);
25
+ const col = columnBySqlName(tableIndex, table, sqlName);
42
26
  if (!col) {
43
27
  throw new Error(`Primary key column not found for table "${table.accessor}"`);
44
28
  }
45
29
  return { tsName: col.tsName, sqlName: col.sqlName };
46
30
  }
47
31
  export function rowScalarPkValue(row, table) {
48
- const { tsName } = requireScalarPrimaryKey(table);
49
- const val = row[tsName];
50
- if (val == null) {
51
- throw new Error(`Missing primary key "${tsName}" on row`);
32
+ if (table.primaryKey.length === 1) {
33
+ const { tsName } = requireScalarPrimaryKey(table);
34
+ const val = row[tsName];
35
+ if (val == null) {
36
+ throw new Error(`Missing primary key "${tsName}" on row`);
37
+ }
38
+ return String(val);
39
+ }
40
+ return rowPkKey(row, table);
41
+ }
42
+ export function resolvePkWhere(table, id, tableIndex) {
43
+ if (typeof id === "object" && id !== null) {
44
+ const pkTsNames = primaryKeyTsNames(table, tableIndex);
45
+ for (const tsName of pkTsNames) {
46
+ if (!(tsName in id)) {
47
+ throw new Error(`Missing primary key column "${tsName}" for table "${table.accessor}". The object must include all PK columns: ${pkTsNames.join(", ")}`);
48
+ }
49
+ }
50
+ return id;
51
+ }
52
+ if (table.primaryKey.length !== 1) {
53
+ throw new Error(`Table "${table.accessor}" has a composite primary key. Pass an object with PK columns (${primaryKeyTsNames(table, tableIndex).join(", ")}) instead of a string.`);
52
54
  }
53
- return String(val);
55
+ const { tsName } = requireScalarPrimaryKey(table, undefined, tableIndex);
56
+ return { [tsName]: id };
54
57
  }
55
- export function rowPkKey(row, table) {
56
- const tsNames = primaryKeyTsNames(table);
58
+ export function rowPkKey(row, table, tableIndex) {
59
+ const tsNames = primaryKeyTsNames(table, tableIndex);
57
60
  if (tsNames.length === 0) {
58
61
  throw new Error(`No primary key defined for table "${table.accessor}"`);
59
62
  }
@@ -65,12 +68,12 @@ export function targetRelationPkSql(targetTable, relation) {
65
68
  }
66
69
  return primaryKeySqlName(targetTable);
67
70
  }
68
- export function resolveFkTargetSqlColumn(targetTable, colRef) {
71
+ export function resolveFkTargetSqlColumn(targetTable, colRef, tableIndex) {
69
72
  if (!colRef) {
70
73
  return primaryKeySqlName(targetTable);
71
74
  }
72
- const col = targetTable.columns.find((c) => c.tsName === colRef) ??
73
- targetTable.columns.find((c) => c.sqlName === colRef);
75
+ const col = columnByTsName(tableIndex, targetTable, colRef) ??
76
+ columnBySqlName(tableIndex, targetTable, colRef);
74
77
  return col?.sqlName ?? colRef;
75
78
  }
76
79
  function generateTextId(tableAccessor) {
@@ -83,11 +86,38 @@ export function defaultPrimaryKeyValue(table, col) {
83
86
  }
84
87
  return generateTextId(table.accessor);
85
88
  }
86
- export function fillMissingPrimaryKeys(table, data) {
87
- for (const col of table.columns) {
88
- if (!col.primary)
89
- continue;
89
+ export function scalarPkAvailable(table, data, tableIndex) {
90
+ if (table.primaryKey.length === 0)
91
+ return false;
92
+ for (const sqlName of table.primaryKey) {
93
+ const col = columnBySqlName(tableIndex, table, sqlName);
94
+ if (!col)
95
+ return false;
90
96
  if (col.kind === "serial" || col.generated)
97
+ return false;
98
+ const current = data[col.tsName];
99
+ if (current === undefined || current === null)
100
+ return false;
101
+ }
102
+ return true;
103
+ }
104
+ export function fillMissingPrimaryKeys(table, data, tableIndex) {
105
+ let needsFill = false;
106
+ for (const sqlName of table.primaryKey) {
107
+ const col = columnBySqlName(tableIndex, table, sqlName);
108
+ if (!col || col.kind === "serial" || col.generated)
109
+ continue;
110
+ const current = data[col.tsName];
111
+ if (current === undefined || current === null) {
112
+ needsFill = true;
113
+ break;
114
+ }
115
+ }
116
+ if (!needsFill)
117
+ return;
118
+ for (const sqlName of table.primaryKey) {
119
+ const col = columnBySqlName(tableIndex, table, sqlName);
120
+ if (!col || col.kind === "serial" || col.generated)
91
121
  continue;
92
122
  const current = data[col.tsName];
93
123
  if (current !== undefined && current !== null)
@@ -1 +1 @@
1
- {"version":3,"file":"primary-key.js","sourceRoot":"","sources":["../../../src/runtime/query/primary-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACrD,OAAO,KAAK,CAAC,UAAU;SACrB,GAAG,CACH,CAAC,OAAO,EAAE,EAAE,CACX,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,MAAM,CACzD;SACA,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAoB,EAAE,KAAK,GAAG,CAAC;IAChE,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACd,qBAAqB,KAAK,yBAAyB,KAAK,CAAC,QAAQ,GAAG,CACpE,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAOD,SAAS,sBAAsB,CAAC,SAAoC;IACnE,QAAQ,SAAS,EAAE,CAAC;QACnB,KAAK,UAAU;YACd,OAAO,2BAA2B,CAAC;QACpC,KAAK,YAAY;YAChB,OAAO,mCAAmC,CAAC;QAC5C,KAAK,YAAY;YAChB,OAAO,wBAAwB,CAAC;QACjC,OAAO,CAAC,CAAC,CAAC;YACT,MAAM,WAAW,GAAU,SAAS,CAAC;YACrC,OAAO,WAAW,CAAC;QACpB,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,KAAoB,EACpB,SAAqC;IAKrC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,GAAG,SAAS,mDAAmD,KAAK,CAAC,QAAQ,sCAAsC,sBAAsB,CAAC,SAAS,CAAC,WAAW,CAC/J,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CACd,4DAA4D,KAAK,CAAC,QAAQ,GAAG,CAC7E,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACd,2CAA2C,KAAK,CAAC,QAAQ,GAAG,CAC5D,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACd,2CAA2C,KAAK,CAAC,QAAQ,GAAG,CAC5D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC/B,GAA4B,EAC5B,KAAoB;IAEpB,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,UAAU,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,QAAQ,CACvB,GAA4B,EAC5B,KAAoB;IAEpB,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAClC,WAA0B,EAC1B,QAA2B;IAE3B,IAAI,QAAQ,EAAE,YAAY,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC9B,CAAC;IACD,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,WAA0B,EAC1B,MAA0B;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,GAAG,GACR,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;QACpD,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IACvD,OAAO,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC;AAC/B,CAAC;AAED,SAAS,cAAc,CAAC,aAAqB;IAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,GAAG,MAAM,IAAI,UAAU,EAAE,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,KAAoB,EACpB,GAAmB;IAEnB,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,KAAoB,EACpB,IAA6B;IAE7B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,SAAS;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS;YAAE,SAAS;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QACxD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"primary-key.js","sourceRoot":"","sources":["../../../src/runtime/query/primary-key.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { Dialect, Manifest, ManifestRelation, ManifestTable } from "../../dialect/types.js";
2
+ import { type OrderByInput } from "./compile.js";
3
+ import type { QueryRuntime } from "./execute.js";
4
+ import type { WithInput } from "./find.js";
5
+ import { type ManifestIndex } from "./table-index.js";
6
+ export type RelationCountSpec = true | {
7
+ where?: Record<string, unknown>;
8
+ };
9
+ export type InlineRelationSpec = {
10
+ select?: readonly string[] | Record<string, boolean | undefined>;
11
+ orderBy?: OrderByInput;
12
+ limit?: number;
13
+ with?: Record<string, WithInput>;
14
+ };
15
+ export type InlineChainNode = {
16
+ relationName: string;
17
+ relation: ManifestRelation;
18
+ targetTable: ManifestTable;
19
+ nestedSpec?: InlineRelationSpec;
20
+ child?: InlineChainNode;
21
+ };
22
+ export type InlineJsonAggPlan = {
23
+ relationName: string;
24
+ chain: InlineChainNode;
25
+ };
26
+ export type InlineCountPlan = {
27
+ relationName: string;
28
+ spec: RelationCountSpec;
29
+ };
30
+ export type CountAggregatePlan = {
31
+ joins: string[];
32
+ selectCols: string[];
33
+ groupByCols: string[];
34
+ inlineCounts: InlineCountPlan[];
35
+ };
36
+ export type HasManyAggregatePlan = {
37
+ joins: string[];
38
+ selectCols: string[];
39
+ groupByCols: string[];
40
+ inlineJsonAgg: InlineJsonAggPlan[];
41
+ };
42
+ export type RelationLoadPlan = {
43
+ joins: string[];
44
+ joinSelectCols: string[];
45
+ joinedRelations: Set<string>;
46
+ inlineJsonAgg: InlineJsonAggPlan[];
47
+ inlineCounts: InlineCountPlan[];
48
+ batchWith: Record<string, WithInput>;
49
+ countAggregate?: CountAggregatePlan;
50
+ hasManyAggregate?: HasManyAggregatePlan;
51
+ };
52
+ export type RelationPlanOptions = {
53
+ useHasManyAggregate?: boolean;
54
+ };
55
+ export declare function inlineRelationColumnAlias(relationName: string): string;
56
+ export declare function inlineCountColumnAlias(relationName: string): string;
57
+ export declare function buildInlineJsonAggSelectCol(parentTable: ManifestTable, chain: InlineChainNode, dialect: Dialect, manifestIndex?: ManifestIndex): string;
58
+ export declare function buildInlineCountSelectCol(manifest: Manifest, parentTable: ManifestTable, relationName: string, spec: RelationCountSpec, dialect: Dialect, manifestIndex?: ManifestIndex): string;
59
+ export declare function planRelationLoad(manifest: Manifest, parentTable: ManifestTable, withSpec: Record<string, WithInput> | undefined, dialect: Dialect, manifestIndex?: ManifestIndex, options?: RelationPlanOptions): RelationLoadPlan;
60
+ export declare function hydrateRowsWithPlan(runtime: QueryRuntime, parentTable: ManifestTable, rawRows: Record<string, unknown>[], plan: RelationLoadPlan): Record<string, unknown>[];
61
+ export declare function buildPlanExtraSelectCols(manifest: Manifest, parentTable: ManifestTable, plan: RelationLoadPlan, dialect: Dialect, manifestIndex?: ManifestIndex): string[];
62
+ export declare function buildAggregateGroupBy(plan: RelationLoadPlan): string;
63
+ /** @deprecated Use buildAggregateGroupBy */
64
+ export declare function buildCountAggregateGroupBy(plan: RelationLoadPlan): string;
65
+ export declare function compileCountOrderBy(manifest: Manifest, parentTable: ManifestTable, orderBy: Record<string, unknown> | undefined, plan: RelationLoadPlan, manifestIndex?: ManifestIndex): string;
66
+ export declare function hasPlanMainQueryExtras(plan: RelationLoadPlan): boolean;
67
+ export declare function withShapeSignature(withSpec: Record<string, WithInput>): string;
68
+ export declare function planIsFullyInline(plan: RelationLoadPlan): boolean;
69
+ export declare function getCachedRelationPlan(manifest: Manifest, table: ManifestTable, withSpec: Record<string, WithInput>, dialect: Dialect, manifestIndex?: ManifestIndex, options?: RelationPlanOptions): RelationLoadPlan;
70
+ export declare function getCachedFindByIdWithQuery(manifest: Manifest, table: ManifestTable, withSpec: Record<string, WithInput>, dialect: Dialect, manifestIndex?: ManifestIndex): {
71
+ sql: string;
72
+ plan: RelationLoadPlan;
73
+ } | null;
74
+ //# sourceMappingURL=relation-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-planner.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/relation-planner.ts"],"names":[],"mappings":"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"}