neoorm 0.8.2 → 0.8.3

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 (122) hide show
  1. package/dist/bin/neoorm.js +22 -50
  2. package/dist/bin/neoorm.js.map +1 -1
  3. package/dist/dialect/mariadb.test.js +31 -6
  4. package/dist/dialect/mariadb.test.js.map +1 -1
  5. package/dist/dialect/mysql-family.d.ts +7 -0
  6. package/dist/dialect/mysql-family.d.ts.map +1 -1
  7. package/dist/dialect/mysql-family.js +25 -3
  8. package/dist/dialect/mysql-family.js.map +1 -1
  9. package/dist/dialect/mysql.test.js +37 -5
  10. package/dist/dialect/mysql.test.js.map +1 -1
  11. package/dist/dialect/postgres.d.ts.map +1 -1
  12. package/dist/dialect/postgres.js +1 -0
  13. package/dist/dialect/postgres.js.map +1 -1
  14. package/dist/dialect/sqlite.d.ts.map +1 -1
  15. package/dist/dialect/sqlite.js +2 -1
  16. package/dist/dialect/sqlite.js.map +1 -1
  17. package/dist/dialect/types.d.ts +2 -0
  18. package/dist/dialect/types.d.ts.map +1 -1
  19. package/dist/init/prompt.d.ts +21 -0
  20. package/dist/init/prompt.d.ts.map +1 -0
  21. package/dist/init/prompt.js +127 -0
  22. package/dist/init/prompt.js.map +1 -0
  23. package/dist/init/scaffold.d.ts +9 -0
  24. package/dist/init/scaffold.d.ts.map +1 -1
  25. package/dist/init/scaffold.js +22 -13
  26. package/dist/init/scaffold.js.map +1 -1
  27. package/dist/init/templates.d.ts +1 -0
  28. package/dist/init/templates.d.ts.map +1 -1
  29. package/dist/init/templates.js +1 -1
  30. package/dist/init/templates.js.map +1 -1
  31. package/dist/init/validate.d.ts +12 -0
  32. package/dist/init/validate.d.ts.map +1 -0
  33. package/dist/init/validate.js +51 -0
  34. package/dist/init/validate.js.map +1 -0
  35. package/dist/runtime/client.d.ts +8 -2
  36. package/dist/runtime/client.d.ts.map +1 -1
  37. package/dist/runtime/client.js +3 -1
  38. package/dist/runtime/client.js.map +1 -1
  39. package/dist/runtime/client.test.js +1 -0
  40. package/dist/runtime/client.test.js.map +1 -1
  41. package/dist/runtime/driver-sqlite.test.js +12 -0
  42. package/dist/runtime/driver-sqlite.test.js.map +1 -1
  43. package/dist/runtime/driver.d.ts.map +1 -1
  44. package/dist/runtime/driver.js +16 -8
  45. package/dist/runtime/driver.js.map +1 -1
  46. package/dist/runtime/executor.d.ts +1 -0
  47. package/dist/runtime/executor.d.ts.map +1 -1
  48. package/dist/runtime/executor.js +12 -5
  49. package/dist/runtime/executor.js.map +1 -1
  50. package/dist/runtime/mariadb-driver.d.ts.map +1 -1
  51. package/dist/runtime/mariadb-driver.js +50 -10
  52. package/dist/runtime/mariadb-driver.js.map +1 -1
  53. package/dist/runtime/mysql-driver.d.ts.map +1 -1
  54. package/dist/runtime/mysql-driver.js +8 -4
  55. package/dist/runtime/mysql-driver.js.map +1 -1
  56. package/dist/runtime/mysql-family-pool.test.js +178 -6
  57. package/dist/runtime/mysql-family-pool.test.js.map +1 -1
  58. package/dist/runtime/query/aggregate.d.ts.map +1 -1
  59. package/dist/runtime/query/aggregate.js +33 -2
  60. package/dist/runtime/query/aggregate.js.map +1 -1
  61. package/dist/runtime/query/compile-aggregate.d.ts +1 -0
  62. package/dist/runtime/query/compile-aggregate.d.ts.map +1 -1
  63. package/dist/runtime/query/compile-aggregate.js +12 -3
  64. package/dist/runtime/query/compile-aggregate.js.map +1 -1
  65. package/dist/runtime/query/compile-where.d.ts.map +1 -1
  66. package/dist/runtime/query/compile-where.js +6 -1
  67. package/dist/runtime/query/compile-where.js.map +1 -1
  68. package/dist/runtime/query/compile-write.d.ts +8 -2
  69. package/dist/runtime/query/compile-write.d.ts.map +1 -1
  70. package/dist/runtime/query/compile-write.js +100 -8
  71. package/dist/runtime/query/compile-write.js.map +1 -1
  72. package/dist/runtime/query/compile.d.ts +2 -2
  73. package/dist/runtime/query/compile.d.ts.map +1 -1
  74. package/dist/runtime/query/compile.js +2 -2
  75. package/dist/runtime/query/compile.js.map +1 -1
  76. package/dist/runtime/query/create.d.ts.map +1 -1
  77. package/dist/runtime/query/create.js +19 -6
  78. package/dist/runtime/query/create.js.map +1 -1
  79. package/dist/runtime/query/delete.d.ts.map +1 -1
  80. package/dist/runtime/query/delete.js +45 -3
  81. package/dist/runtime/query/delete.js.map +1 -1
  82. package/dist/runtime/query/find.d.ts.map +1 -1
  83. package/dist/runtime/query/find.js +43 -15
  84. package/dist/runtime/query/find.js.map +1 -1
  85. package/dist/runtime/query/map-row.d.ts.map +1 -1
  86. package/dist/runtime/query/map-row.js +11 -2
  87. package/dist/runtime/query/map-row.js.map +1 -1
  88. package/dist/runtime/query/mutation-returning.d.ts +3 -1
  89. package/dist/runtime/query/mutation-returning.d.ts.map +1 -1
  90. package/dist/runtime/query/mutation-returning.js +22 -0
  91. package/dist/runtime/query/mutation-returning.js.map +1 -1
  92. package/dist/runtime/query/relation-planner.d.ts +2 -0
  93. package/dist/runtime/query/relation-planner.d.ts.map +1 -1
  94. package/dist/runtime/query/relation-planner.js +8 -2
  95. package/dist/runtime/query/relation-planner.js.map +1 -1
  96. package/dist/runtime/query/relation-writes.d.ts.map +1 -1
  97. package/dist/runtime/query/relation-writes.js +7 -2
  98. package/dist/runtime/query/relation-writes.js.map +1 -1
  99. package/dist/runtime/query/strip.d.ts.map +1 -1
  100. package/dist/runtime/query/strip.js +23 -3
  101. package/dist/runtime/query/strip.js.map +1 -1
  102. package/dist/runtime/query/table-index.d.ts +4 -0
  103. package/dist/runtime/query/table-index.d.ts.map +1 -1
  104. package/dist/runtime/query/table-index.js +13 -1
  105. package/dist/runtime/query/table-index.js.map +1 -1
  106. package/dist/runtime/query/unique.d.ts +6 -0
  107. package/dist/runtime/query/unique.d.ts.map +1 -1
  108. package/dist/runtime/query/unique.js +40 -4
  109. package/dist/runtime/query/unique.js.map +1 -1
  110. package/dist/runtime/query/unique.test.js +15 -1
  111. package/dist/runtime/query/unique.test.js.map +1 -1
  112. package/dist/runtime/query/update.d.ts.map +1 -1
  113. package/dist/runtime/query/update.js +100 -29
  114. package/dist/runtime/query/update.js.map +1 -1
  115. package/dist/runtime/transaction.test.js +22 -1
  116. package/dist/runtime/transaction.test.js.map +1 -1
  117. package/docs/cli.md +6 -4
  118. package/docs/getting-started.md +2 -0
  119. package/docs/mariadb.md +10 -6
  120. package/docs/mysql.md +4 -2
  121. package/docs/queries.md +15 -1
  122. package/package.json +2 -1
@@ -3,7 +3,7 @@ import { postgresDialect } from "../../dialect/postgres.js";
3
3
  import { compileError } from "../compile-error.js";
4
4
  import { queryCompileError } from "../error-builders.js";
5
5
  import { QueryErrorCode } from "../error-codes.js";
6
- import { buildSelectColumns, buildUpdateQuery, compileWhere, dataToUpdateAssignments, getCachedUpdateManyQuery, getCachedWhereClause, isImpossibleWhere, } from "./compile.js";
6
+ import { buildPkEqualityWhereSql, buildReturningPkColumns, buildSelectColumns, buildUpdateQuery, compileWhere, dataToUpdateAssignments, getCachedUpdateByPkQuery, getCachedUpdateManyQuery, getCachedWhereClause, isImpossibleWhere, serializePkEqualityParams, } from "./compile.js";
7
7
  import { runCreate } from "./create.js";
8
8
  import { runExecute, runQuery, runQueryOne, } from "./execute.js";
9
9
  import { loadRelations } from "./find.js";
@@ -11,8 +11,8 @@ import { mapRowsToTs, mapRowToTs } from "./map-row.js";
11
11
  import { fetchRowsByWhere } from "./mutation-returning.js";
12
12
  import { primaryKeySqlName, resolvePkWhere, rowScalarPkValue, } from "./primary-key.js";
13
13
  import { applyToOnePreWrites, executeRelationWrites, hasPostRelationWrites, relationWritesNeedTransaction, splitScalarsAndRelationWrites, } from "./relation-writes.js";
14
- import { getTableIndex, relationByName, requireTable } from "./table-index.js";
15
- import { appendUniquePredicate, assertUniqueWhere } from "./unique.js";
14
+ import { columnBySqlName, getTableIndex, relationByName, requireTable, } from "./table-index.js";
15
+ import { appendUniquePredicate, assertUniqueWhere, tryPkEqualityValues, } from "./unique.js";
16
16
  import { stripUpdatedAtFromData, updatedAtSetExpressions, } from "./updated-at.js";
17
17
  function dataHasRelationKeys(tableIndex, table, data) {
18
18
  for (const key of Object.keys(data)) {
@@ -21,6 +21,38 @@ function dataHasRelationKeys(tableIndex, table, data) {
21
21
  }
22
22
  return false;
23
23
  }
24
+ async function executePkEqualityUpdate(executor, runtime, tableAccessor, table, tableIndex, keys, ops, values, exprSets, pkValues, needsReturning, returning) {
25
+ const dialect = runtime.dialect ?? postgresDialect;
26
+ const pkParams = serializePkEqualityParams(table, pkValues, runtime.tableIndex, dialect);
27
+ const params = [...values, ...pkParams];
28
+ let query = getCachedUpdateByPkQuery(tableIndex, table, keys, exprSets, runtime.tableIndex, dialect, ops);
29
+ if (!needsReturning) {
30
+ const { rowCount } = await runExecute(executor, runtime, { operation: "update", tableAccessor }, query, params);
31
+ if (rowCount === 0)
32
+ return null;
33
+ return {};
34
+ }
35
+ if (dialect.supportsUpdateReturning) {
36
+ const returningCols = returning === "full"
37
+ ? buildSelectColumns(table, undefined, runtime.tableIndex, undefined, undefined, dialect)
38
+ : buildReturningPkColumns(table, runtime.tableIndex, dialect);
39
+ query = `${query} RETURNING ${returningCols}`;
40
+ const row = await runQueryOne(executor, runtime, { operation: "update", tableAccessor }, query, params);
41
+ if (!row)
42
+ return null;
43
+ return mapRowToTs(tableIndex, table, row);
44
+ }
45
+ const pkWhereSql = buildPkEqualityWhereSql(table, 1, runtime.tableIndex, dialect);
46
+ const preRows = await fetchRowsByWhere(executor, runtime, table, tableAccessor, pkWhereSql, pkParams, "select");
47
+ if (preRows.length === 0)
48
+ return null;
49
+ await runExecute(executor, runtime, { operation: "update", tableAccessor }, query, params);
50
+ if (returning !== "full") {
51
+ return preRows[0] ?? {};
52
+ }
53
+ const reloaded = await fetchRowsByWhere(executor, runtime, table, tableAccessor, pkWhereSql, pkParams, "update");
54
+ return reloaded[0] ?? preRows[0] ?? {};
55
+ }
24
56
  async function runUpdate(executor, runtime, tableAccessor, args) {
25
57
  const dialect = runtime.dialect ?? postgresDialect;
26
58
  const { manifest } = runtime;
@@ -33,16 +65,6 @@ async function runUpdate(executor, runtime, tableAccessor, args) {
33
65
  : splitScalarsAndRelationWrites(manifest, tableAccessor, table, args.data, runtime.tableIndex, "update");
34
66
  const { scalarData, relationWrites } = split;
35
67
  await applyToOnePreWrites(executor, runtime, table, scalarData, relationWrites, runCreate);
36
- const compiledWhere = compileWhere(manifest, table, args.where, dialect, 1, runtime.tableIndex);
37
- const whereSql = appendUniquePredicate(compiledWhere.sql, args.uniquePredicateSql);
38
- const whereParams = compiledWhere.params;
39
- if (!whereSql) {
40
- throw queryCompileError("update", "Update requires a where clause", {
41
- code: QueryErrorCode.where_required,
42
- tableAccessor,
43
- tableSqlName: table.sqlName,
44
- });
45
- }
46
68
  const tableIndex = getTableIndex(runtime.tableIndex, tableAccessor);
47
69
  stripUpdatedAtFromData(table, scalarData, tableIndex);
48
70
  const { keys, ops, values } = dataToUpdateAssignments(table, scalarData, {
@@ -53,6 +75,23 @@ async function runUpdate(executor, runtime, tableAccessor, args) {
53
75
  if (keys.length === 0 && !needsRelationWrites && exprSets.length === 0) {
54
76
  compileError("Update requires at least one scalar field or relation write");
55
77
  }
78
+ const usePkFastPath = args.pkValues !== undefined &&
79
+ !args.uniquePredicateSql &&
80
+ (keys.length > 0 || exprSets.length > 0);
81
+ let whereSql = "";
82
+ let whereParams = [];
83
+ if (!usePkFastPath) {
84
+ const compiledWhere = compileWhere(manifest, table, args.where, dialect, 1, runtime.tableIndex);
85
+ whereSql = appendUniquePredicate(compiledWhere.sql, args.uniquePredicateSql);
86
+ whereParams = compiledWhere.params;
87
+ if (!whereSql) {
88
+ throw queryCompileError("update", "Update requires a where clause", {
89
+ code: QueryErrorCode.where_required,
90
+ tableAccessor,
91
+ tableSqlName: table.sqlName,
92
+ });
93
+ }
94
+ }
56
95
  let result;
57
96
  if (keys.length === 0 && exprSets.length === 0) {
58
97
  const selectSql = `SELECT * FROM ${dialect.tableRef(table)} ${whereSql} LIMIT 1`;
@@ -61,6 +100,13 @@ async function runUpdate(executor, runtime, tableAccessor, args) {
61
100
  return null;
62
101
  result = mapRowToTs(tableIndex, table, row);
63
102
  }
103
+ else if (usePkFastPath && args.pkValues) {
104
+ const needsReturning = Boolean(args.returnUpdated || args.with);
105
+ const returning = args.returnUpdated || args.with ? "full" : "none";
106
+ result = await executePkEqualityUpdate(executor, runtime, tableAccessor, table, tableIndex, keys, ops, values, exprSets, args.pkValues, needsReturning, returning);
107
+ if (result === null)
108
+ return null;
109
+ }
64
110
  else {
65
111
  const needsReturning = args.returnUpdated || args.with || needsRelationWrites;
66
112
  if (!needsReturning) {
@@ -72,7 +118,7 @@ async function runUpdate(executor, runtime, tableAccessor, args) {
72
118
  }
73
119
  else {
74
120
  const returning = args.returnUpdated || args.with ? "full" : "pk";
75
- if (dialect.supportsReturning) {
121
+ if (dialect.supportsUpdateReturning) {
76
122
  const query = buildUpdateQuery(table, keys, whereSql, exprSets, runtime.tableIndex, returning, dialect, ops);
77
123
  const row = await runQueryOne(executor, runtime, { operation: "update", tableAccessor }, query, [...values, ...whereParams]);
78
124
  if (!row)
@@ -99,10 +145,12 @@ async function runUpdate(executor, runtime, tableAccessor, args) {
99
145
  }
100
146
  }
101
147
  }
102
- const recordId = Object.keys(result).length === 0
103
- ? rowScalarPkValue(args.where, table)
104
- : rowScalarPkValue(result, table);
105
- await executeRelationWrites(executor, runtime, tableAccessor, recordId, relationWrites, runCreate, Object.keys(result).length === 0 ? args.where : result);
148
+ if (needsRelationWrites) {
149
+ const recordId = Object.keys(result).length === 0
150
+ ? rowScalarPkValue(args.where, table)
151
+ : rowScalarPkValue(result, table);
152
+ await executeRelationWrites(executor, runtime, tableAccessor, recordId, relationWrites, runCreate, Object.keys(result).length === 0 ? args.where : result);
153
+ }
106
154
  if (args.with) {
107
155
  const [withLoaded] = await loadRelations(executor, runtime, table, [result], args.with);
108
156
  return withLoaded ?? result;
@@ -112,17 +160,40 @@ async function runUpdate(executor, runtime, tableAccessor, args) {
112
160
  export async function updateRecord(executor, runtime, tableAccessor, args) {
113
161
  const { manifest } = runtime;
114
162
  const table = requireTable(manifest, tableAccessor, "select");
115
- const { constraint, where } = assertUniqueWhere(table, args.where, "update", getTableIndex(runtime.tableIndex, tableAccessor));
163
+ const tableIndex = getTableIndex(runtime.tableIndex, tableAccessor);
164
+ const pkValues = tryPkEqualityValues(table, args.where, tableIndex);
116
165
  const split = splitScalarsAndRelationWrites(manifest, tableAccessor, table, args.data, runtime.tableIndex, "update");
117
166
  const needsTransaction = relationWritesNeedTransaction(table, manifest, tableAccessor, split.relationWrites);
118
- const runArgs = {
119
- ...args,
120
- ...split,
121
- where,
122
- ...(constraint.whereSql !== undefined
123
- ? { uniquePredicateSql: constraint.whereSql }
124
- : {}),
125
- };
167
+ let runArgs;
168
+ if (pkValues) {
169
+ const where = {};
170
+ for (let i = 0; i < table.primaryKey.length; i++) {
171
+ const sqlName = table.primaryKey[i];
172
+ if (!sqlName)
173
+ continue;
174
+ const col = columnBySqlName(tableIndex, table, sqlName);
175
+ if (!col)
176
+ continue;
177
+ where[col.tsName] = pkValues[i];
178
+ }
179
+ runArgs = {
180
+ ...args,
181
+ ...split,
182
+ where,
183
+ pkValues,
184
+ };
185
+ }
186
+ else {
187
+ const { constraint, where } = assertUniqueWhere(table, args.where, "update", tableIndex);
188
+ runArgs = {
189
+ ...args,
190
+ ...split,
191
+ where,
192
+ ...(constraint.whereSql !== undefined
193
+ ? { uniquePredicateSql: constraint.whereSql }
194
+ : {}),
195
+ };
196
+ }
126
197
  if (executor.inTransaction || !needsTransaction) {
127
198
  return runUpdate(executor, runtime, tableAccessor, runArgs);
128
199
  }
@@ -165,7 +236,7 @@ async function runUpdateMany(executor, runtime, tableAccessor, args) {
165
236
  if (keys.length > 0 || exprSets.length > 0) {
166
237
  const query = getCachedUpdateManyQuery(tableIndex, table, keys, whereSql, exprSets, runtime.tableIndex, dialect, ops);
167
238
  if (returnRows || needsPostRelationWrites) {
168
- if (dialect.supportsReturning) {
239
+ if (dialect.supportsUpdateReturning) {
169
240
  const returning = returnRows
170
241
  ? selectCols
171
242
  : dialect.quoteIdentifier(primaryKeySqlName(table));
@@ -241,7 +312,7 @@ async function runUpdateManyScalar(executor, runtime, tableAccessor, args) {
241
312
  const { sql: whereSql, params: whereParams } = compiledWhere;
242
313
  const query = getCachedUpdateManyQuery(tableIndex, table, keys, whereSql, exprSets, runtime.tableIndex, dialect, ops);
243
314
  if (returnRows) {
244
- if (dialect.supportsReturning) {
315
+ if (dialect.supportsUpdateReturning) {
245
316
  const rows = await runQuery(executor, runtime, { operation: "update", tableAccessor }, `${query} RETURNING ${buildSelectColumns(table, undefined, runtime.tableIndex, undefined, undefined, dialect)}`, [...values, ...whereParams]);
246
317
  return mapRowsToTs(tableIndex, table, rows);
247
318
  }
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/runtime/query/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/runtime/query/update.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,33 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { QueryErrorCode } from "./error-codes.js";
3
- import { assertNoSavepointOptions, buildBeginSql, buildSqliteBeginSql, } from "./transaction.js";
3
+ import { assertNoSavepointOptions, buildBeginSql, buildMysqlBeginStatements, buildSqliteBeginSql, } from "./transaction.js";
4
4
  describe("buildBeginSql", () => {
5
5
  it("emits Postgres READ ONLY and isolation clauses", () => {
6
6
  expect(buildBeginSql({ readOnly: true })).toBe("BEGIN READ ONLY");
7
7
  expect(buildBeginSql({ isolationLevel: "Serializable" })).toBe("BEGIN ISOLATION LEVEL SERIALIZABLE");
8
8
  });
9
9
  });
10
+ describe("buildMysqlBeginStatements", () => {
11
+ it("emits only START TRANSACTION by default", () => {
12
+ expect(buildMysqlBeginStatements()).toEqual(["START TRANSACTION"]);
13
+ expect(buildMysqlBeginStatements({ readOnly: true })).toEqual([
14
+ "START TRANSACTION READ ONLY",
15
+ ]);
16
+ });
17
+ it("prepends SET TRANSACTION only when isolationLevel is set", () => {
18
+ expect(buildMysqlBeginStatements({ isolationLevel: "Serializable" })).toEqual([
19
+ "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE",
20
+ "START TRANSACTION",
21
+ ]);
22
+ expect(buildMysqlBeginStatements({
23
+ readOnly: true,
24
+ isolationLevel: "RepeatableRead",
25
+ })).toEqual([
26
+ "SET TRANSACTION ISOLATION LEVEL REPEATABLE READ",
27
+ "START TRANSACTION READ ONLY",
28
+ ]);
29
+ });
30
+ });
10
31
  describe("buildSqliteBeginSql", () => {
11
32
  it("does not treat readOnly as BEGIN DEFERRED", () => {
12
33
  expect(buildSqliteBeginSql({ readOnly: true })).toBe("BEGIN");
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.test.js","sourceRoot":"","sources":["../../src/runtime/transaction.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.test.js","sourceRoot":"","sources":["../../src/runtime/transaction.test.ts"],"names":[],"mappings":"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"}
package/docs/cli.md CHANGED
@@ -12,12 +12,14 @@ neoorm init [options]
12
12
 
13
13
  Creates `neoorm.config.ts`, `schema.ts`, and `.env.example` only — no codegen or migrations. Run `neoorm migrate dev` afterwards to generate the client and first migration.
14
14
 
15
+ On a TTY, `neoorm init` opens a Clack wizard (provider, database URL, schema path, output directory). If any scaffold files already exist, it asks before overwriting. Ctrl+C cancels. Flags skip the matching step. In CI / non-TTY, it uses defaults and fails if files already exist unless `--force` is passed.
16
+
15
17
  Options:
16
- - `--provider <provider>` — `postgresql` (default), `sqlite`, `mysql`, or `mariadb`. `postgres` and `pg` are aliases of `postgresql`. If omitted and running interactively, prompts to choose.
18
+ - `--provider <provider>` — `postgresql` (default), `sqlite`, `mysql`, or `mariadb`. `postgres` and `pg` are aliases of `postgresql`. If omitted on a TTY, prompts to choose.
17
19
  - `--database-url <url>` — override database URL / file path (default: `postgresql://postgres:postgres@localhost:5432/myapp` for postgres, `./dev.db` for sqlite, `mysql://root@localhost:3306/myapp` for mysql, `mariadb://root@localhost:3306/myapp` for mariadb)
18
- - `--schema <path>` — schema file path (default: `./schema.ts`)
19
- - `--out <dir>` — generated output directory (default: `./neoorm`)
20
- - `--force` — overwrite existing scaffold files
20
+ - `--schema <path>` — schema file path (default: `./schema.ts`). Must end in `.ts`, `.mts`, or `.cts`.
21
+ - `--out <dir>` — generated output directory (default: `./neoorm`). Cannot be the same path as the schema file.
22
+ - `--force` — overwrite existing scaffold files without confirming
21
23
 
22
24
  ## `neoorm generate`
23
25
 
@@ -153,6 +153,8 @@ Reuse an existing `pg` pool with `createNeoOrmClientFromPool(manifest, pool)`, o
153
153
 
154
154
  Log compiled SQL with `beforeQuery` / `afterQuery` on the same options object (see [Queries](queries.md#logging-sql)).
155
155
 
156
+ PostgreSQL data queries use named prepared statements by default. Set `preparedStatements: false` if you use transaction-mode PgBouncer (named prepares are not supported there).
157
+
156
158
  PostgreSQL pool settings (`ssl`, timeouts, `application_name`, size) go on `pool` and are passed through to `pg.Pool`:
157
159
 
158
160
  ```ts
package/docs/mariadb.md CHANGED
@@ -48,7 +48,7 @@ const db = createNeoOrmClient(manifest, {
48
48
 
49
49
  Wrap an existing `mariadb` pool with `createNeoOrmClientFromMariadb(manifest, pool)`. `$disconnect()` does not call `pool.end()` in that case — you own the pool.
50
50
 
51
- Data queries use connector `execute()` (prepared statements, `prepareCacheLength` 256). Transaction control stays on `query()`. Pools you wrap without `execute` fall back to `query()`.
51
+ Reads (and bulk `VALUES` / `RETURNING` writes) use text `query()` so owned-pool `pipelining: true` is not combined with prepare-then-execute. Singleton `INSERT`/`UPDATE`/`DELETE`/`REPLACE` without `RETURNING` use connector `execute()` (prepared statements, `prepareCacheLength` 256). MariaDB’s binary prepare protocol also rejects `UPDATE`/`DELETE … RETURNING`, so those stay on `query()`. Transaction control stays on `query()`. Pools you wrap without `execute` fall back to `query()`.
52
52
 
53
53
  Owned pools from `createNeoOrmClient` accept the same `pool` object as PostgreSQL for shared fields (`max`, idle timeout, keep-alive). Default `max` is 10. Pipelining is enabled (commands are still awaited in order). PostgreSQL-only keys such as `statement_timeout` are ignored.
54
54
 
@@ -120,18 +120,18 @@ bunx neoorm migrate reset --force
120
120
  | CHECK drop | `DROP CHECK` | `DROP CONSTRAINT` |
121
121
  | CHECK errno | 3819 | 4025 (`ER_CONSTRAINT_FAILED`) |
122
122
  | JSON storage | native JSON | JSON as LONGTEXT + `json_valid()` |
123
- | `RETURNING` | none | INSERT/DELETE RETURNING exist, but UPDATE does not; NeoOrm uses follow-up `SELECT` for all writes |
123
+ | `RETURNING` | none | `INSERT`/`DELETE` `RETURNING`; `UPDATE` uses follow-up `SELECT` (UPDATE `RETURNING` is MariaDB 13+) |
124
124
 
125
125
  ## Differences from PostgreSQL
126
126
 
127
127
  | Feature | PostgreSQL | MariaDB |
128
128
  |---------|------------|---------|
129
129
  | Identifier quoting | `"users"` | `` `users` `` |
130
- | `RETURNING` | native | follow-up `SELECT` (or `insertId` for serial) |
130
+ | `RETURNING` | native | `INSERT`/`DELETE` `RETURNING`; `UPDATE` uses follow-up `SELECT` |
131
131
  | `upsert` | `ON CONFLICT … DO UPDATE` | `ON DUPLICATE KEY UPDATE` + `VALUES(col)` |
132
132
  | `skipDuplicates` | `ON CONFLICT DO NOTHING` | `INSERT IGNORE` |
133
133
  | `findOrCreate` | `xmax = 0` | SELECT → INSERT → retry on unique violation |
134
- | `in` / `notIn` | array bind | `JSON_TABLE` |
134
+ | `in` / `notIn` | array bind | `IN (?, …)` up to 256 values; `JSON_TABLE` above that |
135
135
  | `search` | POSIX `~` | `REGEXP` |
136
136
  | `ilike` | `ILIKE` | `LOWER(col) LIKE LOWER(?)` |
137
137
  | JSON operators | `@>`, `?`, `#>` | `JSON_CONTAINS` / `JSON_EXTRACT` / `JSON_CONTAINS_PATH` |
@@ -142,8 +142,12 @@ bunx neoorm migrate reset --force
142
142
  | `interval` / `inet` / `cidr` / range types | supported | rejected at schema compile |
143
143
  | `datasource.schema` | multi-schema | ignored (URL database) |
144
144
 
145
- MariaDB has no `LATERAL`, so correlated `JSON_ARRAYAGG` derived tables (the MySQL 8 / Postgres inline has-many subquery) cannot see outer columns such as `` `users`.`id` ``. Those includes are loaded with a follow-up `WHERE fk IN (…)` query instead.
145
+ MariaDB has no `LATERAL`, so correlated `JSON_ARRAYAGG` derived tables (the MySQL 8 / Postgres inline has-many subquery) cannot see outer columns such as `` `users`.`id` ``.
146
146
 
147
- `createManyAndReturn` for serial primary keys uses `LAST_INSERT_ID()` plus row count inside a transaction and assumes consecutive autoincrement values.
147
+ Simple has-many includes (`with: { posts: true }`) on `findMany`, `findById`, and `findFirst` use `LEFT JOIN` + `JSON_ARRAYAGG` + `GROUP BY` in one statement. Nested `where`, `take`, `skip`, `orderBy`, or further `with` on that relation still make a single SQL invalid, so those includes are loaded with a follow-up `WHERE fk IN (…)` query.
148
+
149
+ `createMany` is a multi-value `INSERT` plus `affectedRows` and does not use `RETURNING`. `createManyAndReturn` for serial primary keys uses `LAST_INSERT_ID()` plus row count inside a transaction and assumes consecutive autoincrement values.
150
+
151
+ Offset pages (`findMany({ take, skip })`) are `LIMIT`/`OFFSET`; `paginate` stays cursor-based.
148
152
 
149
153
  Everything else — relations, nested writes, cursor pagination, aggregates, `groupBy`, savepoint-based nested transactions — behaves the same as on PostgreSQL.
package/docs/mysql.md CHANGED
@@ -118,7 +118,7 @@ bunx neoorm migrate reset --force
118
118
  | `upsert` | `ON CONFLICT … DO UPDATE` | `INSERT … AS new ON DUPLICATE KEY UPDATE` |
119
119
  | `skipDuplicates` | `ON CONFLICT DO NOTHING` | `INSERT IGNORE` |
120
120
  | `findOrCreate` | `xmax = 0` | SELECT → INSERT → retry on unique violation |
121
- | `in` / `notIn` | array bind | `JSON_TABLE` |
121
+ | `in` / `notIn` | array bind | `IN (?, …)` up to 256 values; `JSON_TABLE` above that |
122
122
  | `search` | POSIX `~` | `REGEXP_LIKE` |
123
123
  | `ilike` | `ILIKE` | `LOWER(col) LIKE LOWER(?)` |
124
124
  | JSON operators | `@>`, `?`, `#>` | `JSON_CONTAINS` / `JSON_EXTRACT` / `JSON_CONTAINS_PATH` |
@@ -129,6 +129,8 @@ bunx neoorm migrate reset --force
129
129
  | `interval` / `inet` / `cidr` / range types | supported | rejected at schema compile |
130
130
  | `datasource.schema` | multi-schema | ignored (URL database) |
131
131
 
132
- `createManyAndReturn` for serial primary keys uses `LAST_INSERT_ID()` plus row count inside a transaction and assumes consecutive autoincrement values.
132
+ `createMany` is a multi-value `INSERT` plus `affectedRows` and does not use `RETURNING`. `createManyAndReturn` for serial primary keys uses `LAST_INSERT_ID()` plus row count inside a transaction and assumes consecutive autoincrement values.
133
+
134
+ Offset pages (`findMany({ take, skip })`) are `LIMIT`/`OFFSET`; `paginate` stays cursor-based.
133
135
 
134
136
  Everything else — relations, nested writes, cursor pagination, aggregates, `groupBy`, savepoint-based nested transactions — behaves the same as on PostgreSQL.
package/docs/queries.md CHANGED
@@ -432,7 +432,21 @@ return user.strip(); // plain object without password
432
432
  return user.strip({ refreshToken: true }); // hidden + extra column keys
433
433
  ```
434
434
 
435
- Every row returned from queries includes a non-enumerable `.strip()` method. `strip()` recurses into nested `with` relations. It returns a plain object (no `.strip` method) suitable for JSON responses.
435
+ `.strip()` is attached when the table has `.hidden()` columns (and on nested `with` rows that do). It is non-enumerable, recurses into nested relations, and returns a plain object (no `.strip` method) suitable for JSON responses.
436
+
437
+ ## Offset pagination
438
+
439
+ Page numbers, admin tables, and **Paginated Read** benchmarks should use `findMany({ take, skip, orderBy })`. That path is `LIMIT`/`OFFSET` on the same cached SELECT as find-all (no extra row, no cursor encoding).
440
+
441
+ ```ts
442
+ const page = await db.posts.findMany({
443
+ orderBy: { id: "asc" },
444
+ take: 20,
445
+ skip: 40,
446
+ });
447
+ ```
448
+
449
+ Do not use `paginate` for that comparison: `paginate` is keyset pagination (`take + 1`, cursors, `hasMore`).
436
450
 
437
451
  ## Cursor pagination
438
452
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neoorm",
3
- "version": "0.8.2",
3
+ "version": "0.8.3",
4
4
  "description": "TypeScript-first PostgreSQL, SQLite, MySQL, and MariaDB ORM with schema DSL, codegen, and typed relations",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -122,6 +122,7 @@
122
122
  }
123
123
  },
124
124
  "dependencies": {
125
+ "@clack/prompts": "^1.8.1",
125
126
  "commander": "^15.0.0",
126
127
  "marked": "^15.0.12",
127
128
  "pg": "^8.22.0",