turbine-orm 0.10.0 → 0.11.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.
@@ -204,6 +204,7 @@ class TurbineClient {
204
204
  warnOnUnlimited: config.warnOnUnlimited,
205
205
  preparedStatements: envDisablePrepared ? false : (config.preparedStatements ?? !config.pool),
206
206
  sqlCache: config.sqlCache ?? true,
207
+ dialect: config.dialect,
207
208
  };
208
209
  // Apply NotFoundError message redaction mode (default: safe — values are
209
210
  // stripped from messages to avoid leaking PII into error logs).
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * turbine-orm — SQL dialect contract
4
+ *
5
+ * Phase-1 seam for future database packages. The current package remains
6
+ * PostgreSQL-native by default, but query generation now depends on this
7
+ * contract for the SQL primitives that vary across MySQL and SQLite.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.postgresDialect = void 0;
11
+ /** PostgreSQL implementation of the dialect contract. */
12
+ exports.postgresDialect = {
13
+ name: 'postgresql',
14
+ supportsReturning: true,
15
+ supportsILike: true,
16
+ jsonPathSupport: 'native',
17
+ emptyJsonArrayLiteral: "'[]'::json",
18
+ nullJsonLiteral: 'NULL',
19
+ paramPlaceholder(index) {
20
+ return `$${index}`;
21
+ },
22
+ quoteIdentifier(name) {
23
+ return `"${name.replace(/"/g, '""')}"`;
24
+ },
25
+ escapeStringLiteral(value) {
26
+ return value.replace(/'/g, "''");
27
+ },
28
+ buildJsonObject(pairs) {
29
+ const args = pairs.map(([key, expr]) => `'${this.escapeStringLiteral(key)}', ${expr}`);
30
+ return `json_build_object(${args.join(', ')})`;
31
+ },
32
+ buildJsonArrayAgg(jsonObjectExpr, orderBy) {
33
+ const suffix = orderBy ? ` ${orderBy}` : '';
34
+ return `COALESCE(json_agg(${jsonObjectExpr}${suffix}), ${this.emptyJsonArrayLiteral})`;
35
+ },
36
+ buildInsensitiveLike(column, paramRef) {
37
+ return `${column} ILIKE ${paramRef}`;
38
+ },
39
+ buildJsonContains(column, paramRef) {
40
+ return `${column} @> ${paramRef}::jsonb`;
41
+ },
42
+ buildJsonPathExtract(column, pathParamRef) {
43
+ return `${column} #>> ${pathParamRef}::text[]`;
44
+ },
45
+ buildCorrelation(leftRef, leftColumns, rightRef, rightColumns) {
46
+ const leftCols = Array.isArray(leftColumns) ? leftColumns : [leftColumns];
47
+ const rightCols = Array.isArray(rightColumns) ? rightColumns : [rightColumns];
48
+ return leftCols
49
+ .map((col, i) => `${leftRef}.${this.quoteIdentifier(col)} = ${rightRef}.${this.quoteIdentifier(rightCols[i])}`)
50
+ .join(' AND ');
51
+ },
52
+ typeToTypeScript(_dialectType, _nullable) {
53
+ // Existing PostgreSQL type mapping remains in schema.ts/generate.ts for now.
54
+ // This hook is the package boundary MySQL/SQLite implementations will fill.
55
+ return 'unknown';
56
+ },
57
+ };
package/dist/cjs/index.js CHANGED
@@ -34,7 +34,7 @@
34
34
  * ```
35
35
  */
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.turbineHttp = exports.schemaToSQLString = exports.schemaToSQL = exports.schemaPush = exports.schemaDiff = exports.table = exports.defineSchema = exports.column = exports.ColumnBuilder = exports.snakeToPascal = exports.snakeToCamel = exports.singularize = exports.pgTypeToTs = exports.pgArrayType = exports.normalizeKeyColumns = exports.isDateType = exports.camelToSnake = exports.QueryInterface = exports.pipelineSupported = exports.executePipeline = exports.introspect = exports.generate = exports.wrapPgError = exports.ValidationError = exports.UniqueConstraintError = exports.TurbineErrorCode = exports.TurbineError = exports.TimeoutError = exports.setErrorMessageMode = exports.SerializationFailureError = exports.RelationError = exports.PipelineError = exports.NotNullViolationError = exports.NotFoundError = exports.MigrationError = exports.getErrorMessageMode = exports.ForeignKeyError = exports.DeadlockError = exports.ConnectionError = exports.CircularRelationError = exports.CheckConstraintError = exports.TurbineClient = exports.TransactionClient = exports.yugabytedb = exports.timescale = exports.postgresql = exports.cockroachdb = exports.alloydb = void 0;
37
+ exports.turbineHttp = exports.schemaToSQLString = exports.schemaToSQL = exports.schemaPush = exports.schemaDiff = exports.table = exports.defineSchema = exports.column = exports.ColumnBuilder = exports.snakeToPascal = exports.snakeToCamel = exports.singularize = exports.pgTypeToTs = exports.pgArrayType = exports.normalizeKeyColumns = exports.isDateType = exports.camelToSnake = exports.QueryInterface = exports.pipelineSupported = exports.executePipeline = exports.introspect = exports.generate = exports.wrapPgError = exports.ValidationError = exports.UniqueConstraintError = exports.TurbineErrorCode = exports.TurbineError = exports.TimeoutError = exports.setErrorMessageMode = exports.SerializationFailureError = exports.RelationError = exports.PipelineError = exports.NotNullViolationError = exports.NotFoundError = exports.MigrationError = exports.getErrorMessageMode = exports.ForeignKeyError = exports.DeadlockError = exports.ConnectionError = exports.CircularRelationError = exports.CheckConstraintError = exports.postgresDialect = exports.TurbineClient = exports.TransactionClient = exports.yugabytedb = exports.timescale = exports.postgresql = exports.cockroachdb = exports.alloydb = void 0;
38
38
  var index_js_1 = require("./adapters/index.js");
39
39
  Object.defineProperty(exports, "alloydb", { enumerable: true, get: function () { return index_js_1.alloydb; } });
40
40
  Object.defineProperty(exports, "cockroachdb", { enumerable: true, get: function () { return index_js_1.cockroachdb; } });
@@ -45,6 +45,8 @@ Object.defineProperty(exports, "yugabytedb", { enumerable: true, get: function (
45
45
  var client_js_1 = require("./client.js");
46
46
  Object.defineProperty(exports, "TransactionClient", { enumerable: true, get: function () { return client_js_1.TransactionClient; } });
47
47
  Object.defineProperty(exports, "TurbineClient", { enumerable: true, get: function () { return client_js_1.TurbineClient; } });
48
+ var dialect_js_1 = require("./dialect.js");
49
+ Object.defineProperty(exports, "postgresDialect", { enumerable: true, get: function () { return dialect_js_1.postgresDialect; } });
48
50
  // Error types
49
51
  var errors_js_1 = require("./errors.js");
50
52
  Object.defineProperty(exports, "CheckConstraintError", { enumerable: true, get: function () { return errors_js_1.CheckConstraintError; } });