neoorm 0.1.5 → 0.2.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 (132) hide show
  1. package/README.md +206 -21
  2. package/dist/bin/neoorm.js +70 -4
  3. package/dist/bin/neoorm.js.map +1 -1
  4. package/dist/codegen/diff-manifest.d.ts +3 -0
  5. package/dist/codegen/diff-manifest.d.ts.map +1 -1
  6. package/dist/codegen/diff-manifest.js +15 -0
  7. package/dist/codegen/diff-manifest.js.map +1 -1
  8. package/dist/codegen/emit-includes.d.ts.map +1 -1
  9. package/dist/codegen/emit-includes.js +7 -1
  10. package/dist/codegen/emit-includes.js.map +1 -1
  11. package/dist/codegen/emit-models.d.ts.map +1 -1
  12. package/dist/codegen/emit-models.js +28 -6
  13. package/dist/codegen/emit-models.js.map +1 -1
  14. package/dist/codegen/generate.d.ts +7 -3
  15. package/dist/codegen/generate.d.ts.map +1 -1
  16. package/dist/codegen/generate.js +17 -7
  17. package/dist/codegen/generate.js.map +1 -1
  18. package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
  19. package/dist/codegen/schema-to-manifest.js +11 -0
  20. package/dist/codegen/schema-to-manifest.js.map +1 -1
  21. package/dist/dialect/types.d.ts +1 -0
  22. package/dist/dialect/types.d.ts.map +1 -1
  23. package/dist/index.d.ts +8 -3
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +4 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/init/scaffold.d.ts +19 -0
  28. package/dist/init/scaffold.d.ts.map +1 -0
  29. package/dist/init/scaffold.js +92 -0
  30. package/dist/init/scaffold.js.map +1 -0
  31. package/dist/init/templates.d.ts +4 -0
  32. package/dist/init/templates.d.ts.map +1 -0
  33. package/dist/init/templates.js +44 -0
  34. package/dist/init/templates.js.map +1 -0
  35. package/dist/migrate/runner.d.ts +5 -0
  36. package/dist/migrate/runner.d.ts.map +1 -1
  37. package/dist/migrate/runner.js +67 -1
  38. package/dist/migrate/runner.js.map +1 -1
  39. package/dist/plugins/builtin.d.ts.map +1 -1
  40. package/dist/plugins/builtin.js +6 -0
  41. package/dist/plugins/builtin.js.map +1 -1
  42. package/dist/plugins/json/operators.d.ts +3 -0
  43. package/dist/plugins/json/operators.d.ts.map +1 -0
  44. package/dist/plugins/json/operators.js +65 -0
  45. package/dist/plugins/json/operators.js.map +1 -0
  46. package/dist/plugins/types.d.ts +1 -0
  47. package/dist/plugins/types.d.ts.map +1 -1
  48. package/dist/runtime/client.d.ts +30 -3
  49. package/dist/runtime/client.d.ts.map +1 -1
  50. package/dist/runtime/client.js +46 -27
  51. package/dist/runtime/client.js.map +1 -1
  52. package/dist/runtime/errors.d.ts +20 -0
  53. package/dist/runtime/errors.d.ts.map +1 -0
  54. package/dist/runtime/errors.js +68 -0
  55. package/dist/runtime/errors.js.map +1 -0
  56. package/dist/runtime/pg-error.d.ts +19 -0
  57. package/dist/runtime/pg-error.d.ts.map +1 -0
  58. package/dist/runtime/pg-error.js +110 -0
  59. package/dist/runtime/pg-error.js.map +1 -0
  60. package/dist/runtime/query/aggregate.d.ts +11 -0
  61. package/dist/runtime/query/aggregate.d.ts.map +1 -0
  62. package/dist/runtime/query/aggregate.js +44 -0
  63. package/dist/runtime/query/aggregate.js.map +1 -0
  64. package/dist/runtime/query/compile.d.ts +15 -5
  65. package/dist/runtime/query/compile.d.ts.map +1 -1
  66. package/dist/runtime/query/compile.js +72 -13
  67. package/dist/runtime/query/compile.js.map +1 -1
  68. package/dist/runtime/query/count.d.ts +3 -3
  69. package/dist/runtime/query/count.d.ts.map +1 -1
  70. package/dist/runtime/query/count.js +7 -4
  71. package/dist/runtime/query/count.js.map +1 -1
  72. package/dist/runtime/query/create.d.ts +7 -4
  73. package/dist/runtime/query/create.d.ts.map +1 -1
  74. package/dist/runtime/query/create.js +33 -16
  75. package/dist/runtime/query/create.js.map +1 -1
  76. package/dist/runtime/query/cursor-codec.d.ts +3 -0
  77. package/dist/runtime/query/cursor-codec.d.ts.map +1 -0
  78. package/dist/runtime/query/cursor-codec.js +27 -0
  79. package/dist/runtime/query/cursor-codec.js.map +1 -0
  80. package/dist/runtime/query/cursor.d.ts +22 -0
  81. package/dist/runtime/query/cursor.d.ts.map +1 -0
  82. package/dist/runtime/query/cursor.js +84 -0
  83. package/dist/runtime/query/cursor.js.map +1 -0
  84. package/dist/runtime/query/delete.d.ts +4 -4
  85. package/dist/runtime/query/delete.d.ts.map +1 -1
  86. package/dist/runtime/query/delete.js +11 -7
  87. package/dist/runtime/query/delete.js.map +1 -1
  88. package/dist/runtime/query/execute.d.ts +16 -0
  89. package/dist/runtime/query/execute.d.ts.map +1 -0
  90. package/dist/runtime/query/execute.js +74 -0
  91. package/dist/runtime/query/execute.js.map +1 -0
  92. package/dist/runtime/query/find.d.ts +7 -5
  93. package/dist/runtime/query/find.d.ts.map +1 -1
  94. package/dist/runtime/query/find.js +134 -19
  95. package/dist/runtime/query/find.js.map +1 -1
  96. package/dist/runtime/query/paginate.d.ts +17 -0
  97. package/dist/runtime/query/paginate.d.ts.map +1 -0
  98. package/dist/runtime/query/paginate.js +35 -0
  99. package/dist/runtime/query/paginate.js.map +1 -0
  100. package/dist/runtime/query/relation-writes.d.ts +5 -4
  101. package/dist/runtime/query/relation-writes.d.ts.map +1 -1
  102. package/dist/runtime/query/relation-writes.js +117 -38
  103. package/dist/runtime/query/relation-writes.js.map +1 -1
  104. package/dist/runtime/query/update.d.ts +4 -4
  105. package/dist/runtime/query/update.d.ts.map +1 -1
  106. package/dist/runtime/query/update.js +63 -21
  107. package/dist/runtime/query/update.js.map +1 -1
  108. package/dist/runtime/query/updated-at.d.ts +6 -0
  109. package/dist/runtime/query/updated-at.d.ts.map +1 -0
  110. package/dist/runtime/query/updated-at.js +21 -0
  111. package/dist/runtime/query/updated-at.js.map +1 -0
  112. package/dist/runtime/query/upsert.d.ts +2 -2
  113. package/dist/runtime/query/upsert.d.ts.map +1 -1
  114. package/dist/runtime/query/upsert.js +12 -8
  115. package/dist/runtime/query/upsert.js.map +1 -1
  116. package/dist/runtime/types.d.ts +19 -10
  117. package/dist/runtime/types.d.ts.map +1 -1
  118. package/dist/schema/column-where.d.ts +14 -1
  119. package/dist/schema/column-where.d.ts.map +1 -1
  120. package/dist/schema/column.d.ts +4 -0
  121. package/dist/schema/column.d.ts.map +1 -1
  122. package/dist/schema/column.js +6 -0
  123. package/dist/schema/column.js.map +1 -1
  124. package/dist/schema/index.d.ts +1 -1
  125. package/dist/schema/index.d.ts.map +1 -1
  126. package/dist/schema/nested-relation-types.d.ts +1 -0
  127. package/dist/schema/nested-relation-types.d.ts.map +1 -1
  128. package/dist/schema/relation-types.d.ts +42 -0
  129. package/dist/schema/relation-types.d.ts.map +1 -1
  130. package/dist/schema/types.d.ts +60 -3
  131. package/dist/schema/types.d.ts.map +1 -1
  132. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export type QueryOperation = "select" | "insert" | "update" | "delete" | "upsert" | "raw";
2
+ export type QueryErrorContext = {
3
+ operation: QueryOperation;
4
+ tableAccessor?: string;
5
+ tableSqlName?: string;
6
+ columnTsName?: string;
7
+ columnSqlName?: string;
8
+ sql: string;
9
+ pgCode?: string;
10
+ constraint?: string;
11
+ detail?: string;
12
+ migrationHint?: string;
13
+ };
14
+ export declare function formatQueryError(context: QueryErrorContext): string;
15
+ export declare class NeoOrmQueryError extends Error {
16
+ readonly context: QueryErrorContext;
17
+ readonly cause: unknown;
18
+ constructor(context: QueryErrorContext, cause?: unknown);
19
+ }
20
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,KAAK,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,cAAc,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAqBF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA4CnE;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,SAAkB,KAAK,EAAE,OAAO,CAAC;gBAErB,OAAO,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,OAAO;CAMxD"}
@@ -0,0 +1,68 @@
1
+ const OPERATION_LABEL = {
2
+ select: "Select",
3
+ insert: "Insert",
4
+ update: "Update",
5
+ delete: "Delete",
6
+ upsert: "Upsert",
7
+ raw: "Query",
8
+ };
9
+ function operationTarget(context) {
10
+ if (context.tableAccessor) {
11
+ return `"${context.tableAccessor}"`;
12
+ }
13
+ if (context.tableSqlName) {
14
+ return `"${context.tableSqlName}"`;
15
+ }
16
+ return "query";
17
+ }
18
+ export function formatQueryError(context) {
19
+ const label = OPERATION_LABEL[context.operation];
20
+ const target = operationTarget(context);
21
+ const reason = context.detail ?? "database error";
22
+ const lines = [`${label} on ${target} failed: ${reason}`];
23
+ if (context.tableAccessor || context.tableSqlName) {
24
+ const parts = [];
25
+ if (context.tableAccessor)
26
+ parts.push(`accessor: ${context.tableAccessor}`);
27
+ if (context.tableSqlName)
28
+ parts.push(`SQL: "${context.tableSqlName}"`);
29
+ lines.push(` Table: ${parts.join(", ")}`);
30
+ }
31
+ if (context.columnTsName || context.columnSqlName) {
32
+ if (context.columnTsName &&
33
+ context.columnSqlName &&
34
+ context.columnTsName !== context.columnSqlName) {
35
+ lines.push(` Column: ${context.columnTsName} (SQL: "${context.columnSqlName}")`);
36
+ }
37
+ else if (context.columnTsName) {
38
+ lines.push(` Column: ${context.columnTsName}`);
39
+ }
40
+ else if (context.columnSqlName) {
41
+ lines.push(` Column: SQL: "${context.columnSqlName}"`);
42
+ }
43
+ }
44
+ if (context.constraint) {
45
+ lines.push(` Constraint: ${context.constraint}`);
46
+ }
47
+ if (context.pgCode) {
48
+ lines.push(` PostgreSQL code: ${context.pgCode}`);
49
+ }
50
+ if (context.sql) {
51
+ lines.push(` SQL: ${context.sql}`);
52
+ }
53
+ if (context.migrationHint) {
54
+ lines.push(` Migration: ${context.migrationHint}`);
55
+ }
56
+ return lines.join("\n");
57
+ }
58
+ export class NeoOrmQueryError extends Error {
59
+ context;
60
+ cause;
61
+ constructor(context, cause) {
62
+ super(formatQueryError(context));
63
+ this.name = "NeoOrmQueryError";
64
+ this.context = context;
65
+ this.cause = cause;
66
+ }
67
+ }
68
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Manifest } from "../dialect/types.js";
2
+ import type { QueryErrorContext, QueryOperation } from "./errors.js";
3
+ export type PgErrorLike = {
4
+ code?: string;
5
+ message?: string;
6
+ detail?: string;
7
+ table?: string;
8
+ column?: string;
9
+ constraint?: string;
10
+ schema?: string;
11
+ };
12
+ export declare function isPgError(err: unknown): err is PgErrorLike;
13
+ export declare function truncateSql(sql: string, maxLen?: number): string;
14
+ export declare function isSchemaDriftPgCode(code: string | undefined): boolean;
15
+ export declare function enrichPgError(err: PgErrorLike, manifest: Manifest, base: Pick<QueryErrorContext, "operation" | "sql"> & {
16
+ tableAccessor?: string;
17
+ }): QueryErrorContext;
18
+ export declare function emptyReturningContext(operation: Extract<QueryOperation, "insert" | "upsert">, manifest: Manifest, tableAccessor: string, sql: string): QueryErrorContext;
19
+ //# sourceMappingURL=pg-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-error.d.ts","sourceRoot":"","sources":["../../src/runtime/pg-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAO1D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,MAAM,CAM7D;AAyDD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAErE;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9E,iBAAiB,CAwCnB;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC,EACvD,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,GACV,iBAAiB,CAYnB"}
@@ -0,0 +1,110 @@
1
+ export function isPgError(err) {
2
+ return (typeof err === "object" &&
3
+ err !== null &&
4
+ "code" in err &&
5
+ typeof err.code === "string");
6
+ }
7
+ export function truncateSql(sql, maxLen = 240) {
8
+ const collapsed = sql.replace(/\s+/g, " ").trim();
9
+ if (collapsed.length <= maxLen) {
10
+ return collapsed;
11
+ }
12
+ return `${collapsed.slice(0, maxLen - 1)}…`;
13
+ }
14
+ function findTableBySqlName(manifest, sqlName) {
15
+ if (!sqlName)
16
+ return undefined;
17
+ return Object.values(manifest.tables).find((table) => table.sqlName === sqlName);
18
+ }
19
+ function findTableByAccessor(manifest, accessor) {
20
+ if (!accessor)
21
+ return undefined;
22
+ return manifest.tables[accessor];
23
+ }
24
+ function resolveColumnNames(table, sqlColumn) {
25
+ if (!sqlColumn) {
26
+ return {};
27
+ }
28
+ const col = table?.columns.find((c) => c.sqlName === sqlColumn);
29
+ return {
30
+ columnSqlName: sqlColumn,
31
+ columnTsName: col?.tsName ?? sqlColumn,
32
+ };
33
+ }
34
+ function headlineForPgCode(err) {
35
+ switch (err.code) {
36
+ case "23502":
37
+ return err.column
38
+ ? `null value in column "${err.column}" violates not-null constraint`
39
+ : "null value violates not-null constraint";
40
+ case "23505":
41
+ return err.constraint
42
+ ? `duplicate key value violates unique constraint "${err.constraint}"`
43
+ : "duplicate key value violates unique constraint";
44
+ case "23503":
45
+ return err.constraint
46
+ ? `foreign key violation on constraint "${err.constraint}"`
47
+ : "foreign key violation";
48
+ case "23514":
49
+ return err.constraint
50
+ ? `check constraint "${err.constraint}" violated`
51
+ : "check constraint violated";
52
+ case "42P01":
53
+ return err.message ?? "relation does not exist";
54
+ case "42703":
55
+ return err.column
56
+ ? `column "${err.column}" does not exist`
57
+ : (err.message ?? "column does not exist");
58
+ default:
59
+ return err.message ?? "database error";
60
+ }
61
+ }
62
+ const SCHEMA_DRIFT_CODES = new Set(["42P01", "42703", "23503"]);
63
+ export function isSchemaDriftPgCode(code) {
64
+ return code !== undefined && SCHEMA_DRIFT_CODES.has(code);
65
+ }
66
+ export function enrichPgError(err, manifest, base) {
67
+ const table = findTableByAccessor(manifest, base.tableAccessor) ??
68
+ findTableBySqlName(manifest, err.table);
69
+ const { columnTsName, columnSqlName } = resolveColumnNames(table, err.column);
70
+ const context = {
71
+ operation: base.operation,
72
+ sql: truncateSql(base.sql),
73
+ detail: err.detail ? `${headlineForPgCode(err)} (${err.detail})` : headlineForPgCode(err),
74
+ };
75
+ const tableAccessor = base.tableAccessor ?? table?.accessor;
76
+ if (tableAccessor !== undefined) {
77
+ context.tableAccessor = tableAccessor;
78
+ }
79
+ const tableSqlName = table?.sqlName ?? err.table;
80
+ if (tableSqlName !== undefined) {
81
+ context.tableSqlName = tableSqlName;
82
+ }
83
+ if (columnTsName !== undefined) {
84
+ context.columnTsName = columnTsName;
85
+ }
86
+ if (columnSqlName !== undefined) {
87
+ context.columnSqlName = columnSqlName;
88
+ }
89
+ if (err.code !== undefined) {
90
+ context.pgCode = err.code;
91
+ }
92
+ if (err.constraint !== undefined) {
93
+ context.constraint = err.constraint;
94
+ }
95
+ return context;
96
+ }
97
+ export function emptyReturningContext(operation, manifest, tableAccessor, sql) {
98
+ const table = manifest.tables[tableAccessor];
99
+ const context = {
100
+ operation,
101
+ tableAccessor,
102
+ sql: truncateSql(sql),
103
+ detail: `${operation === "insert" ? "INSERT" : "UPSERT"} … RETURNING returned no row`,
104
+ };
105
+ if (table?.sqlName !== undefined) {
106
+ context.tableSqlName = table.sqlName;
107
+ }
108
+ return context;
109
+ }
110
+ //# sourceMappingURL=pg-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-error.js","sourceRoot":"","sources":["../../src/runtime/pg-error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Executor } from "../executor.js";
2
+ import { type QueryRuntime } from "./execute.js";
3
+ export declare function aggregateRecords(executor: Executor, runtime: QueryRuntime, tableAccessor: string, args: {
4
+ where?: Record<string, unknown>;
5
+ _count?: true;
6
+ _avg?: Record<string, true>;
7
+ _sum?: Record<string, true>;
8
+ _min?: Record<string, true>;
9
+ _max?: Record<string, true>;
10
+ }): Promise<Record<string, unknown>>;
11
+ //# sourceMappingURL=aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO/C,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,cAAc,CAAC;AA2B9D,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC7B,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA4BlC"}
@@ -0,0 +1,44 @@
1
+ import { postgresDialect } from "../../dialect/postgres.js";
2
+ import { buildAggregateQuery, compileWhere, } from "./compile.js";
3
+ import { runQueryOne } from "./execute.js";
4
+ function parseAggregateRow(row, selectors) {
5
+ const result = {};
6
+ if (selectors._count) {
7
+ result["_count"] = row["_count"] ?? 0;
8
+ }
9
+ for (const key of ["_avg", "_sum", "_min", "_max"]) {
10
+ const fieldMap = selectors[key];
11
+ if (!fieldMap)
12
+ continue;
13
+ const bucket = {};
14
+ for (const colName of Object.keys(fieldMap)) {
15
+ bucket[colName] = row[`${key}_${colName}`] ?? null;
16
+ }
17
+ if (Object.keys(bucket).length > 0) {
18
+ result[key] = bucket;
19
+ }
20
+ }
21
+ return result;
22
+ }
23
+ export async function aggregateRecords(executor, runtime, tableAccessor, args) {
24
+ const { manifest } = runtime;
25
+ const table = manifest.tables[tableAccessor];
26
+ if (!table)
27
+ throw new Error(`Unknown table: ${tableAccessor}`);
28
+ const selectors = {};
29
+ if (args._count)
30
+ selectors._count = true;
31
+ if (args._avg)
32
+ selectors._avg = args._avg;
33
+ if (args._sum)
34
+ selectors._sum = args._sum;
35
+ if (args._min)
36
+ selectors._min = args._min;
37
+ if (args._max)
38
+ selectors._max = args._max;
39
+ const { sql: whereSql, params } = compileWhere(manifest, table, args.where, postgresDialect);
40
+ const query = buildAggregateQuery(table, selectors, whereSql);
41
+ const row = await runQueryOne(executor, runtime, { operation: "select", tableAccessor }, query, params);
42
+ return parseAggregateRow(row ?? {}, selectors);
43
+ }
44
+ //# sourceMappingURL=aggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/runtime/query/aggregate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,mBAAmB,EACnB,YAAY,GAEb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAqB,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9D,SAAS,iBAAiB,CACxB,GAA4B,EAC5B,SAA6B;IAE7B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAkB,EAClB,OAAqB,EACrB,aAAqB,EACrB,IAOC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,aAAa,EAAE,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,MAAM;QAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;IACzC,IAAI,IAAI,CAAC,IAAI;QAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI;QAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI;QAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI;QAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAE1C,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAC5C,QAAQ,EACR,KAAK,EACL,IAAI,CAAC,KAAK,EACV,eAAe,CAChB,CAAC;IACF,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,MAAM,WAAW,CAC3B,QAAQ,EACR,OAAO,EACP,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,EACtC,KAAK,EACL,MAAM,CACP,CAAC;IAEF,OAAO,iBAAiB,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC"}
@@ -1,26 +1,36 @@
1
- import type { Dialect, Manifest, ManifestTable } from "../../dialect/types.js";
1
+ import type { Dialect, Manifest, ManifestColumn, ManifestTable } from "../../dialect/types.js";
2
2
  export type WhereClause = {
3
3
  sql: string;
4
4
  params: unknown[];
5
5
  };
6
+ export declare function serializeColumnValue(col: ManifestColumn, value: unknown): unknown;
6
7
  export declare function compileWhere(manifest: Manifest, table: ManifestTable, where: Record<string, unknown> | undefined, dialect: Dialect, startParamIndex?: number): WhereClause;
7
8
  export declare function compileOrderBy(table: ManifestTable, orderBy: Record<string, string> | undefined): string;
8
9
  export declare function normalizeSelectColumns(select?: readonly string[] | Record<string, boolean | undefined>): readonly string[] | undefined;
9
10
  export declare function buildSelectColumns(table: ManifestTable, select?: readonly string[]): string;
10
11
  export declare function buildFindByIdQuery(table: ManifestTable): string;
11
- export declare function buildFindManyQuery(table: ManifestTable, whereSql: string, orderSql: string, limit?: number, offset?: number): string;
12
+ export declare function buildFindManyQuery(table: ManifestTable, whereSql: string, orderSql: string, limit?: number, offset?: number, distinctOn?: readonly string[]): string;
13
+ export declare function buildPaginateQuery(table: ManifestTable, whereSql: string, orderSql: string, take: number): string;
12
14
  export declare function buildCountQuery(table: ManifestTable, whereSql: string): string;
13
- export declare function buildUpsertQuery(table: ManifestTable, insertKeys: string[], updateKeys: string[], conflictSqlColumns: readonly string[]): string;
15
+ export type AggregateSelectors = {
16
+ _count?: true;
17
+ _avg?: Record<string, true>;
18
+ _sum?: Record<string, true>;
19
+ _min?: Record<string, true>;
20
+ _max?: Record<string, true>;
21
+ };
22
+ export declare function buildAggregateQuery(table: ManifestTable, selectors: AggregateSelectors, whereSql: string): string;
23
+ export declare function buildUpsertQuery(table: ManifestTable, insertKeys: string[], updateKeys: string[], conflictSqlColumns: readonly string[], exprSets?: string[]): string;
14
24
  export declare function buildInsertQuery(table: ManifestTable, dataKeys: string[]): string;
15
25
  export declare function buildInsertManyValueRows(table: ManifestTable, dataKeys: string[], rows: Array<Array<unknown | undefined>>): {
16
26
  valueRows: string[];
17
27
  values: unknown[];
18
28
  };
19
29
  export declare function buildInsertManyQuery(table: ManifestTable, dataKeys: string[], valueRows: string[]): string;
20
- export declare function buildUpdateQuery(table: ManifestTable, dataKeys: string[], whereSql: string): string;
30
+ export declare function buildUpdateQuery(table: ManifestTable, dataKeys: string[], whereSql: string, exprSets?: string[]): string;
21
31
  export declare function buildDeleteQuery(table: ManifestTable, whereSql: string): string;
22
32
  export declare function buildDeleteManyQuery(table: ManifestTable, whereSql: string): string;
23
- export declare function buildUpdateManyQuery(table: ManifestTable, dataKeys: string[], whereSql: string): string;
33
+ export declare function buildUpdateManyQuery(table: ManifestTable, dataKeys: string[], whereSql: string, exprSets?: string[]): string;
24
34
  export declare function dataToSqlValues(table: ManifestTable, data: Record<string, unknown>, options?: {
25
35
  excludePrimary?: boolean;
26
36
  }): {
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/compile.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ function pluginWhereOperators(col) {
19
19
  return {};
20
20
  return getColumnType(col.kind)?.whereOperators ?? {};
21
21
  }
22
- function serializeColumnValue(col, value) {
22
+ export function serializeColumnValue(col, value) {
23
23
  if (col.kind === "fk")
24
24
  return value;
25
25
  const plugin = getColumnType(col.kind);
@@ -329,9 +329,18 @@ export function buildFindByIdQuery(table) {
329
329
  const selectCols = buildSelectColumns(table);
330
330
  return `SELECT ${selectCols} FROM ${quoteIdentifier(table.sqlName)} WHERE ${sqlCol} = $1`;
331
331
  }
332
- export function buildFindManyQuery(table, whereSql, orderSql, limit, offset) {
332
+ export function buildFindManyQuery(table, whereSql, orderSql, limit, offset, distinctOn) {
333
333
  const selectCols = buildSelectColumns(table);
334
- let sql = `SELECT ${selectCols} FROM ${quoteIdentifier(table.sqlName)}`;
334
+ let sql = "SELECT ";
335
+ if (distinctOn && distinctOn.length > 0) {
336
+ const distinctCols = distinctOn
337
+ .map((tsName) => table.columns.find((c) => c.tsName === tsName))
338
+ .filter((col) => col !== undefined)
339
+ .map((col) => quoteIdentifier(col.sqlName))
340
+ .join(", ");
341
+ sql += `DISTINCT ON (${distinctCols}) `;
342
+ }
343
+ sql += `${selectCols} FROM ${quoteIdentifier(table.sqlName)}`;
335
344
  if (whereSql)
336
345
  sql += ` ${whereSql}`;
337
346
  if (orderSql)
@@ -342,13 +351,58 @@ export function buildFindManyQuery(table, whereSql, orderSql, limit, offset) {
342
351
  sql += ` OFFSET ${offset}`;
343
352
  return sql;
344
353
  }
354
+ export function buildPaginateQuery(table, whereSql, orderSql, take) {
355
+ return buildFindManyQuery(table, whereSql, orderSql, take + 1);
356
+ }
345
357
  export function buildCountQuery(table, whereSql) {
346
358
  let sql = `SELECT COUNT(*)::int AS count FROM ${quoteIdentifier(table.sqlName)}`;
347
359
  if (whereSql)
348
360
  sql += ` ${whereSql}`;
349
361
  return sql;
350
362
  }
351
- export function buildUpsertQuery(table, insertKeys, updateKeys, conflictSqlColumns) {
363
+ function aggregateSqlCol(table, tsName) {
364
+ const col = table.columns.find((c) => c.tsName === tsName);
365
+ if (!col)
366
+ return undefined;
367
+ const sqlCol = quoteIdentifier(col.sqlName);
368
+ if (col.kind === "decimal")
369
+ return `${sqlCol}::numeric`;
370
+ return sqlCol;
371
+ }
372
+ export function buildAggregateQuery(table, selectors, whereSql) {
373
+ const parts = [];
374
+ if (selectors._count) {
375
+ parts.push('COUNT(*)::int AS "_count"');
376
+ }
377
+ for (const colName of Object.keys(selectors._avg ?? {})) {
378
+ const sqlCol = aggregateSqlCol(table, colName);
379
+ if (sqlCol)
380
+ parts.push(`AVG(${sqlCol}) AS "_avg_${colName}"`);
381
+ }
382
+ for (const colName of Object.keys(selectors._sum ?? {})) {
383
+ const sqlCol = aggregateSqlCol(table, colName);
384
+ if (sqlCol)
385
+ parts.push(`SUM(${sqlCol}) AS "_sum_${colName}"`);
386
+ }
387
+ for (const colName of Object.keys(selectors._min ?? {})) {
388
+ const sqlCol = aggregateSqlCol(table, colName);
389
+ if (sqlCol)
390
+ parts.push(`MIN(${sqlCol}) AS "_min_${colName}"`);
391
+ }
392
+ for (const colName of Object.keys(selectors._max ?? {})) {
393
+ const sqlCol = aggregateSqlCol(table, colName);
394
+ if (sqlCol)
395
+ parts.push(`MAX(${sqlCol}) AS "_max_${colName}"`);
396
+ }
397
+ if (parts.length === 0) {
398
+ throw new Error("aggregate requires at least one selector");
399
+ }
400
+ let sql = `SELECT ${parts.join(", ")} FROM ${quoteIdentifier(table.sqlName)}`;
401
+ if (whereSql)
402
+ sql += ` ${whereSql}`;
403
+ return sql;
404
+ }
405
+ export function buildUpsertQuery(table, insertKeys, updateKeys, conflictSqlColumns, exprSets = []) {
352
406
  const insertCols = insertKeys.map((k) => {
353
407
  const col = table.columns.find((c) => c.tsName === k);
354
408
  return quoteIdentifier(col?.sqlName ?? k);
@@ -367,11 +421,14 @@ export function buildUpsertQuery(table, insertKeys, updateKeys, conflictSqlColum
367
421
  const sqlCol = quoteIdentifier(col?.sqlName ?? k);
368
422
  return `${sqlCol} = EXCLUDED.${sqlCol}`;
369
423
  })
370
- : conflictSqlColumns.map((c) => {
371
- const sqlCol = quoteIdentifier(c);
372
- return `${sqlCol} = EXCLUDED.${sqlCol}`;
373
- });
374
- return `INSERT INTO ${quoteIdentifier(table.sqlName)} (${insertCols.join(", ")}) VALUES (${insertPlaceholders}) ON CONFLICT (${conflictCols}) DO UPDATE SET ${updateSets.join(", ")} RETURNING ${selectCols}`;
424
+ : exprSets.length === 0
425
+ ? conflictSqlColumns.map((c) => {
426
+ const sqlCol = quoteIdentifier(c);
427
+ return `${sqlCol} = EXCLUDED.${sqlCol}`;
428
+ })
429
+ : [];
430
+ const allUpdateSets = [...updateSets, ...exprSets];
431
+ return `INSERT INTO ${quoteIdentifier(table.sqlName)} (${insertCols.join(", ")}) VALUES (${insertPlaceholders}) ON CONFLICT (${conflictCols}) DO UPDATE SET ${allUpdateSets.join(", ")} RETURNING ${selectCols}`;
375
432
  }
376
433
  export function buildInsertQuery(table, dataKeys) {
377
434
  const cols = dataKeys.map((k) => {
@@ -418,11 +475,12 @@ export function buildInsertManyQuery(table, dataKeys, valueRows) {
418
475
  const selectCols = buildSelectColumns(table);
419
476
  return `INSERT INTO ${quoteIdentifier(table.sqlName)} (${cols.join(", ")}) VALUES ${valueRows.join(", ")} RETURNING ${selectCols}`;
420
477
  }
421
- export function buildUpdateQuery(table, dataKeys, whereSql) {
422
- const sets = dataKeys.map((k, i) => {
478
+ export function buildUpdateQuery(table, dataKeys, whereSql, exprSets = []) {
479
+ const paramSets = dataKeys.map((k, i) => {
423
480
  const col = table.columns.find((c) => c.tsName === k);
424
481
  return buildSetExpression(col, i + 1);
425
482
  });
483
+ const sets = [...paramSets, ...exprSets];
426
484
  const selectCols = buildSelectColumns(table);
427
485
  const whereOffset = dataKeys.length;
428
486
  let sql = `UPDATE ${quoteIdentifier(table.sqlName)} SET ${sets.join(", ")}`;
@@ -449,11 +507,12 @@ export function buildDeleteManyQuery(table, whereSql) {
449
507
  sql += ` ${whereSql}`;
450
508
  return sql;
451
509
  }
452
- export function buildUpdateManyQuery(table, dataKeys, whereSql) {
453
- const sets = dataKeys.map((k, i) => {
510
+ export function buildUpdateManyQuery(table, dataKeys, whereSql, exprSets = []) {
511
+ const paramSets = dataKeys.map((k, i) => {
454
512
  const col = table.columns.find((c) => c.tsName === k);
455
513
  return buildSetExpression(col, i + 1);
456
514
  });
515
+ const sets = [...paramSets, ...exprSets];
457
516
  const whereOffset = dataKeys.length;
458
517
  let sql = `UPDATE ${quoteIdentifier(table.sqlName)} SET ${sets.join(", ")}`;
459
518
  if (whereSql) {