@spinajs/orm-sql 2.0.486 → 2.0.488

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.
@@ -1,4 +1,4 @@
1
- import { LimitBuilder, DropTableQueryBuilder, AlterColumnQueryBuilder, TableCloneQueryCompiler, OnDuplicateQueryBuilder, IJoinCompiler, DeleteQueryBuilder, IColumnsBuilder, IColumnsCompiler, ICompilerOutput, LimitQueryCompiler, IGroupByCompiler, InsertQueryBuilder, IWhereBuilder, IWhereCompiler, OrderByBuilder, QueryBuilder, SelectQueryBuilder, UpdateQueryBuilder, SelectQueryCompiler, TableQueryCompiler, TableQueryBuilder, ColumnQueryBuilder, ColumnQueryCompiler, IQueryBuilder, OrderByQueryCompiler, OnDuplicateQueryCompiler, IJoinBuilder, IndexQueryCompiler, IndexQueryBuilder, IRecursiveCompiler, IWithRecursiveBuilder, ForeignKeyBuilder, ForeignKeyQueryCompiler, IGroupByBuilder, AlterTableQueryBuilder, CloneTableQueryBuilder, AlterTableQueryCompiler, AlterColumnQueryCompiler, TableAliasCompiler, DropTableCompiler, DropEventQueryBuilder, TableHistoryQueryCompiler, EventQueryBuilder, EventIntervalDesc, IHavingCompiler, RawSchemaQueryCompiler, RawSchemaQueryBuilder, DropViewQueryBuilder, DropViewCompiler } from '@spinajs/orm';
1
+ import { LimitBuilder, DropTableQueryBuilder, AlterColumnQueryBuilder, TableCloneQueryCompiler, OnDuplicateQueryBuilder, IJoinCompiler, DeleteQueryBuilder, IColumnsBuilder, IColumnsCompiler, ICompilerOutput, LimitQueryCompiler, IGroupByCompiler, InsertQueryBuilder, IWhereBuilder, IWhereCompiler, OrderByBuilder, QueryBuilder, SelectQueryBuilder, UpdateQueryBuilder, SelectQueryCompiler, TableQueryCompiler, TableQueryBuilder, ColumnQueryBuilder, ColumnQueryCompiler, IQueryBuilder, OrderByQueryCompiler, OnDuplicateQueryCompiler, IJoinBuilder, IndexQueryCompiler, IndexQueryBuilder, IRecursiveCompiler, IWithRecursiveBuilder, ForeignKeyBuilder, ForeignKeyQueryCompiler, IGroupByBuilder, AlterTableQueryBuilder, CloneTableQueryBuilder, AlterTableQueryCompiler, AlterColumnQueryCompiler, TableAliasCompiler, DropTableCompiler, DropEventQueryBuilder, TableHistoryQueryCompiler, EventQueryBuilder, EventIntervalDesc, IHavingCompiler, RawSchemaQueryCompiler, RawSchemaQueryBuilder, DropViewQueryBuilder, DropViewCompiler, IdentifierQuoter, CreateDatabaseCompiler, CreateDatabaseQueryBuilder, DropDatabaseCompiler, DropDatabaseQueryBuilder } from '@spinajs/orm';
2
2
  import { Container, IContainer } from '@spinajs/di';
3
3
  /**
4
4
  * Central identifier escaping for the MySQL-flavoured dialect.
@@ -9,9 +9,11 @@ import { Container, IContainer } from '@spinajs/di';
9
9
  * (`` `${name}` ``), so existing generated SQL is unchanged; only names that
10
10
  * actually contain a backtick produce different — and now safe — output.
11
11
  *
12
- * Dialects that quote differently (e.g. `[name]` with `]`-doubling) override
13
- * this by shadowing the relevant compiler/statement, the same way
14
- * {@link SqlTableAliasCompiler} is already overridden per driver.
12
+ * NOTE: compilers and statements no longer call this. They quote through the
13
+ * injected {@link IdentifierQuoter}, which a driver registers for its own dialect —
14
+ * shadowing a compiler could never shadow a function it called internally, which is
15
+ * how MSSQL ended up emitting backticks. This is kept for a DRIVER's own internal
16
+ * SQL ( schema probes, savepoint names ), where the driver already knows its dialect.
15
17
  */
16
18
  export declare function escapeIdentifier(name: string): string;
17
19
  /**
@@ -25,6 +27,16 @@ export declare function escapeIdentifier(name: string): string;
25
27
  * therefore read as a qualifier separator; a table whose name genuinely contains a
26
28
  * dot cannot be expressed through that API (it never could).
27
29
  */
30
+ /**
31
+ * Backtick quoting — MySQL's rule, which SQLite also accepts.
32
+ *
33
+ * Registered by the MySQL and SQLite drivers, NOT by the shared `SqlDriver`: backticks
34
+ * are not portable ( MSSQL rejects them ), and a driver inheriting another dialect's
35
+ * quoting silently is exactly the failure this service exists to end.
36
+ */
37
+ export declare class BacktickIdentifierQuoter extends IdentifierQuoter {
38
+ quote(name: string): string;
39
+ }
28
40
  export declare function escapeQualifiedIdentifier(name: string): string;
29
41
  /**
30
42
  * Escapes a DDL string *literal* (SET/ENUM member, COMMENT, CHARACTER SET,
@@ -35,6 +47,7 @@ export declare function escapeQualifiedIdentifier(name: string): string;
35
47
  */
36
48
  export declare function escapeStringLiteral(value: string): string;
37
49
  export declare class SqlTableAliasCompiler implements TableAliasCompiler {
50
+ Quoter: IdentifierQuoter;
38
51
  compile(builder: IQueryBuilder, tbl?: string): string;
39
52
  }
40
53
  export declare abstract class SqlQueryCompiler<T extends QueryBuilder> extends SelectQueryCompiler {
@@ -45,6 +58,7 @@ export declare abstract class SqlQueryCompiler<T extends QueryBuilder> extends S
45
58
  abstract compile(): ICompilerOutput;
46
59
  }
47
60
  export declare class SqlOrderByQueryCompiler extends OrderByQueryCompiler {
61
+ Quoter: IdentifierQuoter;
48
62
  protected _builder: OrderByBuilder;
49
63
  constructor(builder: OrderByBuilder);
50
64
  compile(): ICompilerOutput;
@@ -54,6 +68,7 @@ export declare class SqlWithRecursiveCompiler implements IRecursiveCompiler {
54
68
  }
55
69
  export declare class SqlForeignKeyQueryCompiler implements ForeignKeyQueryCompiler {
56
70
  protected _builder: ForeignKeyBuilder;
71
+ Quoter: IdentifierQuoter;
57
72
  constructor(_builder: ForeignKeyBuilder);
58
73
  compile(): ICompilerOutput;
59
74
  }
@@ -104,6 +119,7 @@ export interface SqlUpdateQueryCompiler extends IWhereCompiler {
104
119
  }
105
120
  export declare class SqlUpdateQueryCompiler extends SqlQueryCompiler<UpdateQueryBuilder<unknown>> {
106
121
  protected _container: IContainer;
122
+ Quoter: IdentifierQuoter;
107
123
  this: this;
108
124
  constructor(_container: IContainer, builder: UpdateQueryBuilder<unknown>);
109
125
  compile(): ICompilerOutput;
@@ -126,6 +142,7 @@ export declare class SqlDeleteQueryCompiler extends SqlQueryCompiler<DeleteQuery
126
142
  protected from(): string;
127
143
  }
128
144
  export declare class SqlOnDuplicateQueryCompiler implements OnDuplicateQueryCompiler {
145
+ Quoter: IdentifierQuoter;
129
146
  protected _builder: OnDuplicateQueryBuilder;
130
147
  constructor(builder: OnDuplicateQueryBuilder);
131
148
  compile(): {
@@ -134,11 +151,13 @@ export declare class SqlOnDuplicateQueryCompiler implements OnDuplicateQueryComp
134
151
  };
135
152
  }
136
153
  export declare class SqlIndexQueryCompiler extends IndexQueryCompiler {
154
+ Quoter: IdentifierQuoter;
137
155
  protected _builder: IndexQueryBuilder;
138
156
  constructor(builder: IndexQueryBuilder);
139
157
  compile(): ICompilerOutput;
140
158
  }
141
159
  export declare class SqlInsertQueryCompiler extends SqlQueryCompiler<InsertQueryBuilder> {
160
+ Quoter: IdentifierQuoter;
142
161
  this: this;
143
162
  constructor(_container: IContainer, builder: InsertQueryBuilder);
144
163
  compile(): {
@@ -177,6 +196,28 @@ export declare class SqlDropViewQueryCompiler extends DropViewCompiler {
177
196
  constructor(container: Container, builder: DropViewQueryBuilder);
178
197
  compile(): ICompilerOutput;
179
198
  }
199
+ /**
200
+ * CHARACTER SET and COLLATE take a *name* - not a quotable identifier and not a bindable
201
+ * value, no engine here accepts a placeholder in that position. Nothing is left to escape
202
+ * with, so the name is validated instead: charset and collation names are alphanumeric
203
+ * plus underscore in every one of these engines, and anything else is refused rather than
204
+ * interpolated.
205
+ */
206
+ export declare function assertCharsetName(name: string, clause: string): string;
207
+ export declare class SqlCreateDatabaseQueryCompiler extends CreateDatabaseCompiler {
208
+ protected container: Container;
209
+ protected builder: CreateDatabaseQueryBuilder;
210
+ Quoter: IdentifierQuoter;
211
+ constructor(container: Container, builder: CreateDatabaseQueryBuilder);
212
+ compile(): ICompilerOutput;
213
+ }
214
+ export declare class SqlDropDatabaseQueryCompiler extends DropDatabaseCompiler {
215
+ protected container: Container;
216
+ protected builder: DropDatabaseQueryBuilder;
217
+ Quoter: IdentifierQuoter;
218
+ constructor(container: Container, builder: DropDatabaseQueryBuilder);
219
+ compile(): ICompilerOutput;
220
+ }
180
221
  export interface SqlAlterTableQueryCompiler {
181
222
  }
182
223
  export declare class SqlAlterTableQueryCompiler extends AlterTableQueryCompiler {
@@ -191,6 +232,7 @@ export interface SqlTableCloneQueryCompiler {
191
232
  export declare class SqlTableCloneQueryCompiler extends TableCloneQueryCompiler {
192
233
  protected container: Container;
193
234
  protected builder: CloneTableQueryBuilder;
235
+ Quoter: IdentifierQuoter;
194
236
  this: this;
195
237
  constructor(container: Container, builder: CloneTableQueryBuilder);
196
238
  compile(): ICompilerOutput[];
@@ -215,6 +257,7 @@ export interface SqlTableQueryCompiler {
215
257
  export declare class SqlTableQueryCompiler extends TableQueryCompiler {
216
258
  protected container: Container;
217
259
  protected builder: TableQueryBuilder;
260
+ Quoter: IdentifierQuoter;
218
261
  constructor(container: Container, builder: TableQueryBuilder);
219
262
  compile(): ICompilerOutput[];
220
263
  protected _columns(): string;
@@ -224,6 +267,7 @@ export declare class SqlTableQueryCompiler extends TableQueryCompiler {
224
267
  }
225
268
  export declare class SqlColumnQueryCompiler implements ColumnQueryCompiler {
226
269
  protected builder: ColumnQueryBuilder;
270
+ Quoter: IdentifierQuoter;
227
271
  protected _statementsMappings: {
228
272
  set: (builder: ColumnQueryBuilder) => string;
229
273
  string: (builder: ColumnQueryBuilder) => string;
@@ -268,6 +312,7 @@ export interface SqlAlterColumnQueryCompiler {
268
312
  export declare class SqlAlterColumnQueryCompiler extends AlterColumnQueryCompiler {
269
313
  protected container: Container;
270
314
  protected builder: AlterColumnQueryBuilder;
315
+ Quoter: IdentifierQuoter;
271
316
  constructor(container: Container, builder: AlterColumnQueryBuilder);
272
317
  /**
273
318
  * Renders the column body using the DRIVER's own column compiler, resolved
@@ -1 +1 @@
1
- {"version":3,"file":"compilers.d.ts","sourceRoot":"","sources":["../../src/compilers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compilers.d.ts","sourceRoot":"","sources":["../../src/compilers.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.SqlRawSchemaQueryCompiler = exports.SqlDropEventQueryCompiler = exports.SqlEventQueryCompiler = exports.SqlAlterColumnQueryCompiler = exports.SqlColumnQueryCompiler = exports.SqlTableQueryCompiler = exports.SqlTableHistoryQueryCompiler = exports.SqlTruncateTableQueryCompiler = exports.SqlTableCloneQueryCompiler = exports.SqlAlterTableQueryCompiler = exports.SqlDropViewQueryCompiler = exports.SqlDropTableQueryCompiler = exports.SqlInsertQueryCompiler = exports.SqlIndexQueryCompiler = exports.SqlOnDuplicateQueryCompiler = exports.SqlDeleteQueryCompiler = exports.SqlUpdateQueryCompiler = exports.SqlSelectQueryCompiler = exports.SqlJoinCompiler = exports.SqlHavingCompiler = exports.SqlWhereCompiler = exports.SqlColumnsCompiler = exports.SqlGroupByCompiler = exports.SqlLimitQueryCompiler = exports.SqlForeignKeyQueryCompiler = exports.SqlWithRecursiveCompiler = exports.SqlOrderByQueryCompiler = exports.SqlQueryCompiler = exports.SqlTableAliasCompiler = void 0;
15
+ exports.SqlRawSchemaQueryCompiler = exports.SqlDropEventQueryCompiler = exports.SqlEventQueryCompiler = exports.SqlAlterColumnQueryCompiler = exports.SqlColumnQueryCompiler = exports.SqlTableQueryCompiler = exports.SqlTableHistoryQueryCompiler = exports.SqlTruncateTableQueryCompiler = exports.SqlTableCloneQueryCompiler = exports.SqlAlterTableQueryCompiler = exports.SqlDropDatabaseQueryCompiler = exports.SqlCreateDatabaseQueryCompiler = exports.SqlDropViewQueryCompiler = exports.SqlDropTableQueryCompiler = exports.SqlInsertQueryCompiler = exports.SqlIndexQueryCompiler = exports.SqlOnDuplicateQueryCompiler = exports.SqlDeleteQueryCompiler = exports.SqlUpdateQueryCompiler = exports.SqlSelectQueryCompiler = exports.SqlJoinCompiler = exports.SqlHavingCompiler = exports.SqlWhereCompiler = exports.SqlColumnsCompiler = exports.SqlGroupByCompiler = exports.SqlLimitQueryCompiler = exports.SqlForeignKeyQueryCompiler = exports.SqlWithRecursiveCompiler = exports.SqlOrderByQueryCompiler = exports.SqlQueryCompiler = exports.SqlTableAliasCompiler = exports.BacktickIdentifierQuoter = void 0;
16
16
  exports.escapeIdentifier = escapeIdentifier;
17
17
  exports.escapeQualifiedIdentifier = escapeQualifiedIdentifier;
18
18
  exports.escapeStringLiteral = escapeStringLiteral;
19
+ exports.assertCharsetName = assertCharsetName;
19
20
  /* eslint-disable @typescript-eslint/no-unsafe-call */
20
21
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
21
22
  /* eslint-disable @typescript-eslint/no-empty-interface */
@@ -34,9 +35,11 @@ const lodash_1 = __importDefault(require("lodash"));
34
35
  * (`` `${name}` ``), so existing generated SQL is unchanged; only names that
35
36
  * actually contain a backtick produce different — and now safe — output.
36
37
  *
37
- * Dialects that quote differently (e.g. `[name]` with `]`-doubling) override
38
- * this by shadowing the relevant compiler/statement, the same way
39
- * {@link SqlTableAliasCompiler} is already overridden per driver.
38
+ * NOTE: compilers and statements no longer call this. They quote through the
39
+ * injected {@link IdentifierQuoter}, which a driver registers for its own dialect —
40
+ * shadowing a compiler could never shadow a function it called internally, which is
41
+ * how MSSQL ended up emitting backticks. This is kept for a DRIVER's own internal
42
+ * SQL ( schema probes, savepoint names ), where the driver already knows its dialect.
40
43
  */
41
44
  function escapeIdentifier(name) {
42
45
  return '`' + String(name).replace(/`/g, '``') + '`';
@@ -52,6 +55,22 @@ function escapeIdentifier(name) {
52
55
  * therefore read as a qualifier separator; a table whose name genuinely contains a
53
56
  * dot cannot be expressed through that API (it never could).
54
57
  */
58
+ /**
59
+ * Backtick quoting — MySQL's rule, which SQLite also accepts.
60
+ *
61
+ * Registered by the MySQL and SQLite drivers, NOT by the shared `SqlDriver`: backticks
62
+ * are not portable ( MSSQL rejects them ), and a driver inheriting another dialect's
63
+ * quoting silently is exactly the failure this service exists to end.
64
+ */
65
+ let BacktickIdentifierQuoter = class BacktickIdentifierQuoter extends orm_1.IdentifierQuoter {
66
+ quote(name) {
67
+ return escapeIdentifier(name);
68
+ }
69
+ };
70
+ exports.BacktickIdentifierQuoter = BacktickIdentifierQuoter;
71
+ exports.BacktickIdentifierQuoter = BacktickIdentifierQuoter = __decorate([
72
+ (0, di_1.NewInstance)()
73
+ ], BacktickIdentifierQuoter);
55
74
  function escapeQualifiedIdentifier(name) {
56
75
  return String(name)
57
76
  .split('.')
@@ -72,16 +91,20 @@ let SqlTableAliasCompiler = class SqlTableAliasCompiler {
72
91
  compile(builder, tbl) {
73
92
  let table = '';
74
93
  if (builder.Database) {
75
- table += `${escapeIdentifier(builder.Database)}.`;
94
+ table += `${this.Quoter.quote(builder.Database)}.`;
76
95
  }
77
- table += escapeIdentifier(tbl ? tbl : builder.Table);
96
+ table += this.Quoter.quote(tbl ? tbl : builder.Table);
78
97
  if (builder.TableAlias) {
79
- table += ` as ${escapeIdentifier(builder.TableAlias)}`;
98
+ table += ` as ${this.Quoter.quote(builder.TableAlias)}`;
80
99
  }
81
100
  return table;
82
101
  }
83
102
  };
84
103
  exports.SqlTableAliasCompiler = SqlTableAliasCompiler;
104
+ __decorate([
105
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
106
+ __metadata("design:type", orm_1.IdentifierQuoter)
107
+ ], SqlTableAliasCompiler.prototype, "Quoter", void 0);
85
108
  exports.SqlTableAliasCompiler = SqlTableAliasCompiler = __decorate([
86
109
  (0, di_1.NewInstance)()
87
110
  ], SqlTableAliasCompiler);
@@ -122,7 +145,7 @@ let SqlOrderByQueryCompiler = class SqlOrderByQueryCompiler extends orm_1.OrderB
122
145
  let stmt = '';
123
146
  const bindings = [];
124
147
  if (sorts.length > 0) {
125
- stmt = ` ORDER BY ${sorts.map((s) => `${escapeIdentifier(s.column)} ${s.order}`).join(', ')}`;
148
+ stmt = ` ORDER BY ${sorts.map((s) => `${this.Quoter.quote(s.column)} ${s.order}`).join(', ')}`;
126
149
  }
127
150
  return {
128
151
  bindings,
@@ -131,6 +154,10 @@ let SqlOrderByQueryCompiler = class SqlOrderByQueryCompiler extends orm_1.OrderB
131
154
  }
132
155
  };
133
156
  exports.SqlOrderByQueryCompiler = SqlOrderByQueryCompiler;
157
+ __decorate([
158
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
159
+ __metadata("design:type", orm_1.IdentifierQuoter)
160
+ ], SqlOrderByQueryCompiler.prototype, "Quoter", void 0);
134
161
  exports.SqlOrderByQueryCompiler = SqlOrderByQueryCompiler = __decorate([
135
162
  (0, di_1.NewInstance)(),
136
163
  __metadata("design:paramtypes", [orm_1.OrderByBuilder])
@@ -163,7 +190,7 @@ let SqlForeignKeyQueryCompiler = class SqlForeignKeyQueryCompiler {
163
190
  }
164
191
  }
165
192
  compile() {
166
- const exprr = `FOREIGN KEY (${escapeIdentifier(this._builder.ForeignKeyField)}) REFERENCES ${escapeQualifiedIdentifier(this._builder.Table)}(${escapeIdentifier(this._builder.PrimaryKey)}) ON DELETE ${this._builder.OnDeleteAction} ON UPDATE ${this._builder.OnUpdateAction}`;
193
+ const exprr = `FOREIGN KEY (${this.Quoter.quote(this._builder.ForeignKeyField)}) REFERENCES ${this.Quoter.quoteQualified(this._builder.Table)}(${this.Quoter.quote(this._builder.PrimaryKey)}) ON DELETE ${this._builder.OnDeleteAction} ON UPDATE ${this._builder.OnUpdateAction}`;
167
194
  return {
168
195
  bindings: [],
169
196
  expression: exprr,
@@ -171,6 +198,10 @@ let SqlForeignKeyQueryCompiler = class SqlForeignKeyQueryCompiler {
171
198
  }
172
199
  };
173
200
  exports.SqlForeignKeyQueryCompiler = SqlForeignKeyQueryCompiler;
201
+ __decorate([
202
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
203
+ __metadata("design:type", orm_1.IdentifierQuoter)
204
+ ], SqlForeignKeyQueryCompiler.prototype, "Quoter", void 0);
174
205
  exports.SqlForeignKeyQueryCompiler = SqlForeignKeyQueryCompiler = __decorate([
175
206
  (0, di_1.NewInstance)(),
176
207
  __metadata("design:paramtypes", [orm_1.ForeignKeyBuilder])
@@ -413,7 +444,7 @@ let SqlUpdateQueryCompiler = class SqlUpdateQueryCompiler extends SqlQueryCompil
413
444
  const exprr = [];
414
445
  for (const prop of Object.keys(this._builder.Value)) {
415
446
  const v = this._builder.Value[`${prop}`];
416
- exprr.push(`${escapeIdentifier(prop)} = ?`);
447
+ exprr.push(`${this.Quoter.quote(prop)} = ?`);
417
448
  bindings = bindings.concat(this.tryConvertValue(v));
418
449
  }
419
450
  return {
@@ -426,6 +457,10 @@ let SqlUpdateQueryCompiler = class SqlUpdateQueryCompiler extends SqlQueryCompil
426
457
  }
427
458
  };
428
459
  exports.SqlUpdateQueryCompiler = SqlUpdateQueryCompiler;
460
+ __decorate([
461
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
462
+ __metadata("design:type", orm_1.IdentifierQuoter)
463
+ ], SqlUpdateQueryCompiler.prototype, "Quoter", void 0);
429
464
  __decorate([
430
465
  (0, typescript_mix_1.use)(SqlWhereCompiler, orm_1.TableAliasCompiler),
431
466
  __metadata("design:type", Object)
@@ -484,7 +519,7 @@ let SqlOnDuplicateQueryCompiler = class SqlOnDuplicateQueryCompiler {
484
519
  // re-binding one specific row's value. Binding `parent.Values[0]`
485
520
  // applied the FIRST row's values to every conflicting row in a
486
521
  // multi row upsert.
487
- return `${escapeIdentifier(c)} = VALUES(${escapeIdentifier(c)})`;
522
+ return `${this.Quoter.quote(c)} = VALUES(${this.Quoter.quote(c)})`;
488
523
  }
489
524
  else {
490
525
  return c.Query;
@@ -504,6 +539,10 @@ let SqlOnDuplicateQueryCompiler = class SqlOnDuplicateQueryCompiler {
504
539
  }
505
540
  };
506
541
  exports.SqlOnDuplicateQueryCompiler = SqlOnDuplicateQueryCompiler;
542
+ __decorate([
543
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
544
+ __metadata("design:type", orm_1.IdentifierQuoter)
545
+ ], SqlOnDuplicateQueryCompiler.prototype, "Quoter", void 0);
507
546
  exports.SqlOnDuplicateQueryCompiler = SqlOnDuplicateQueryCompiler = __decorate([
508
547
  (0, di_1.NewInstance)(),
509
548
  __metadata("design:paramtypes", [orm_1.OnDuplicateQueryBuilder])
@@ -516,11 +555,15 @@ let SqlIndexQueryCompiler = class SqlIndexQueryCompiler extends orm_1.IndexQuery
516
555
  compile() {
517
556
  return {
518
557
  bindings: [],
519
- expression: `CREATE ${this._builder.Unique ? 'UNIQUE ' : ''}INDEX ${escapeIdentifier(this._builder.Name)} ON ${escapeIdentifier(this._builder.Table)} (${this._builder.Columns.map((c) => escapeIdentifier(c)).join(',')});`,
558
+ expression: `CREATE ${this._builder.Unique ? 'UNIQUE ' : ''}INDEX ${this.Quoter.quote(this._builder.Name)} ON ${this.Quoter.quote(this._builder.Table)} (${this._builder.Columns.map((c) => this.Quoter.quote(c)).join(',')});`,
520
559
  };
521
560
  }
522
561
  };
523
562
  exports.SqlIndexQueryCompiler = SqlIndexQueryCompiler;
563
+ __decorate([
564
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
565
+ __metadata("design:type", orm_1.IdentifierQuoter)
566
+ ], SqlIndexQueryCompiler.prototype, "Quoter", void 0);
524
567
  exports.SqlIndexQueryCompiler = SqlIndexQueryCompiler = __decorate([
525
568
  (0, di_1.NewInstance)(),
526
569
  __metadata("design:paramtypes", [orm_1.IndexQueryBuilder])
@@ -621,7 +664,7 @@ let SqlInsertQueryCompiler = class SqlInsertQueryCompiler extends SqlQueryCompil
621
664
  .map((c) => {
622
665
  // RawQuery columns carry raw SQL - preserve the existing (unescaped)
623
666
  // backtick wrapping. String columns go through the identifier escaper.
624
- return c instanceof orm_1.RawQuery ? `\`${c.Query}\`` : escapeIdentifier(c);
667
+ return c instanceof orm_1.RawQuery ? `\`${c.Query}\`` : this.Quoter.quote(c);
625
668
  });
626
669
  if (columns.length === 0) {
627
670
  throw new exceptions_1.InvalidArgument('invalid column count');
@@ -633,6 +676,10 @@ let SqlInsertQueryCompiler = class SqlInsertQueryCompiler extends SqlQueryCompil
633
676
  }
634
677
  };
635
678
  exports.SqlInsertQueryCompiler = SqlInsertQueryCompiler;
679
+ __decorate([
680
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
681
+ __metadata("design:type", orm_1.IdentifierQuoter)
682
+ ], SqlInsertQueryCompiler.prototype, "Quoter", void 0);
636
683
  __decorate([
637
684
  (0, typescript_mix_1.use)(orm_1.TableAliasCompiler),
638
685
  __metadata("design:type", Object)
@@ -684,6 +731,69 @@ exports.SqlDropViewQueryCompiler = SqlDropViewQueryCompiler = __decorate([
684
731
  (0, di_1.Inject)(di_1.Container),
685
732
  __metadata("design:paramtypes", [di_1.Container, orm_1.DropViewQueryBuilder])
686
733
  ], SqlDropViewQueryCompiler);
734
+ /**
735
+ * CHARACTER SET and COLLATE take a *name* - not a quotable identifier and not a bindable
736
+ * value, no engine here accepts a placeholder in that position. Nothing is left to escape
737
+ * with, so the name is validated instead: charset and collation names are alphanumeric
738
+ * plus underscore in every one of these engines, and anything else is refused rather than
739
+ * interpolated.
740
+ */
741
+ function assertCharsetName(name, clause) {
742
+ if (!/^[A-Za-z0-9_]+$/.test(name)) {
743
+ throw new exceptions_1.InvalidArgument(`invalid ${clause} name "${name}", only alphanumeric characters and underscore are allowed`);
744
+ }
745
+ return name;
746
+ }
747
+ let SqlCreateDatabaseQueryCompiler = class SqlCreateDatabaseQueryCompiler extends orm_1.CreateDatabaseCompiler {
748
+ constructor(container, builder) {
749
+ super();
750
+ this.container = container;
751
+ this.builder = builder;
752
+ }
753
+ compile() {
754
+ const exists = this.builder.Exists ? ' IF NOT EXISTS' : '';
755
+ const charset = this.builder.Charset ? ` CHARACTER SET ${assertCharsetName(this.builder.Charset, 'character set')}` : '';
756
+ const collation = this.builder.Collation ? ` COLLATE ${assertCharsetName(this.builder.Collation, 'collation')}` : '';
757
+ return {
758
+ bindings: [],
759
+ expression: `CREATE DATABASE${exists} ${this.Quoter.quote(this.builder.Name)}${charset}${collation}`,
760
+ };
761
+ }
762
+ };
763
+ exports.SqlCreateDatabaseQueryCompiler = SqlCreateDatabaseQueryCompiler;
764
+ __decorate([
765
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
766
+ __metadata("design:type", orm_1.IdentifierQuoter)
767
+ ], SqlCreateDatabaseQueryCompiler.prototype, "Quoter", void 0);
768
+ exports.SqlCreateDatabaseQueryCompiler = SqlCreateDatabaseQueryCompiler = __decorate([
769
+ (0, di_1.NewInstance)(),
770
+ (0, di_1.Inject)(di_1.Container),
771
+ __metadata("design:paramtypes", [di_1.Container, orm_1.CreateDatabaseQueryBuilder])
772
+ ], SqlCreateDatabaseQueryCompiler);
773
+ let SqlDropDatabaseQueryCompiler = class SqlDropDatabaseQueryCompiler extends orm_1.DropDatabaseCompiler {
774
+ constructor(container, builder) {
775
+ super();
776
+ this.container = container;
777
+ this.builder = builder;
778
+ }
779
+ compile() {
780
+ const exists = this.builder.Exists ? ' IF EXISTS' : '';
781
+ return {
782
+ bindings: [],
783
+ expression: `DROP DATABASE${exists} ${this.Quoter.quote(this.builder.Name)}`,
784
+ };
785
+ }
786
+ };
787
+ exports.SqlDropDatabaseQueryCompiler = SqlDropDatabaseQueryCompiler;
788
+ __decorate([
789
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
790
+ __metadata("design:type", orm_1.IdentifierQuoter)
791
+ ], SqlDropDatabaseQueryCompiler.prototype, "Quoter", void 0);
792
+ exports.SqlDropDatabaseQueryCompiler = SqlDropDatabaseQueryCompiler = __decorate([
793
+ (0, di_1.NewInstance)(),
794
+ (0, di_1.Inject)(di_1.Container),
795
+ __metadata("design:paramtypes", [di_1.Container, orm_1.DropDatabaseQueryBuilder])
796
+ ], SqlDropDatabaseQueryCompiler);
687
797
  let SqlAlterTableQueryCompiler = class SqlAlterTableQueryCompiler extends orm_1.AlterTableQueryCompiler {
688
798
  constructor(container, builder) {
689
799
  super();
@@ -761,7 +871,7 @@ let SqlTableCloneQueryCompiler = class SqlTableCloneQueryCompiler extends orm_1.
761
871
  // if no filter is provided, copy all the data
762
872
  expression: `SELECT * FROM ${_tblName}`,
763
873
  };
764
- const fExprr = `INSERT INTO ${escapeIdentifier(this.builder.Table)} ${fOut.expression}`;
874
+ const fExprr = `INSERT INTO ${this.Quoter.quote(this.builder.Table)} ${fOut.expression}`;
765
875
  return [
766
876
  out1,
767
877
  {
@@ -777,6 +887,10 @@ let SqlTableCloneQueryCompiler = class SqlTableCloneQueryCompiler extends orm_1.
777
887
  }
778
888
  };
779
889
  exports.SqlTableCloneQueryCompiler = SqlTableCloneQueryCompiler;
890
+ __decorate([
891
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
892
+ __metadata("design:type", orm_1.IdentifierQuoter)
893
+ ], SqlTableCloneQueryCompiler.prototype, "Quoter", void 0);
780
894
  __decorate([
781
895
  (0, typescript_mix_1.use)(orm_1.TableAliasCompiler),
782
896
  __metadata("design:type", Object)
@@ -943,7 +1057,7 @@ let SqlTableQueryCompiler = class SqlTableQueryCompiler extends orm_1.TableQuery
943
1057
  }
944
1058
  _primaryKeys() {
945
1059
  const _keys = this.builder.Columns.filter((x) => x.PrimaryKey)
946
- .map((c) => escapeIdentifier(c.Name))
1060
+ .map((c) => this.Quoter.quote(c.Name))
947
1061
  .join(',');
948
1062
  if (!lodash_1.default.isEmpty(_keys)) {
949
1063
  return `PRIMARY KEY (${_keys})`;
@@ -955,6 +1069,10 @@ let SqlTableQueryCompiler = class SqlTableQueryCompiler extends orm_1.TableQuery
955
1069
  }
956
1070
  };
957
1071
  exports.SqlTableQueryCompiler = SqlTableQueryCompiler;
1072
+ __decorate([
1073
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
1074
+ __metadata("design:type", orm_1.IdentifierQuoter)
1075
+ ], SqlTableQueryCompiler.prototype, "Quoter", void 0);
958
1076
  exports.SqlTableQueryCompiler = SqlTableQueryCompiler = __decorate([
959
1077
  (0, di_1.NewInstance)(),
960
1078
  (0, di_1.Inject)(di_1.Container),
@@ -1009,7 +1127,7 @@ let SqlColumnQueryCompiler = class SqlColumnQueryCompiler {
1009
1127
  }
1010
1128
  compile() {
1011
1129
  const _stmt = [];
1012
- _stmt.push(escapeIdentifier(this.builder.Name));
1130
+ _stmt.push(this.Quoter.quote(this.builder.Name));
1013
1131
  _stmt.push(this._statementsMappings[this.builder.Type](this.builder));
1014
1132
  if (this.builder.Unsigned) {
1015
1133
  _stmt.push(this._statementsMappings.unsigned());
@@ -1058,6 +1176,10 @@ let SqlColumnQueryCompiler = class SqlColumnQueryCompiler {
1058
1176
  }
1059
1177
  };
1060
1178
  exports.SqlColumnQueryCompiler = SqlColumnQueryCompiler;
1179
+ __decorate([
1180
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
1181
+ __metadata("design:type", orm_1.IdentifierQuoter)
1182
+ ], SqlColumnQueryCompiler.prototype, "Quoter", void 0);
1061
1183
  exports.SqlColumnQueryCompiler = SqlColumnQueryCompiler = __decorate([
1062
1184
  (0, di_1.NewInstance)(),
1063
1185
  __metadata("design:paramtypes", [orm_1.ColumnQueryBuilder])
@@ -1101,13 +1223,13 @@ let SqlAlterColumnQueryCompiler = class SqlAlterColumnQueryCompiler extends orm_
1101
1223
  _add(definition) {
1102
1224
  // escapeIdentifier, not raw backticks: an identifier containing a backtick would
1103
1225
  // otherwise terminate the quote and splice arbitrary SQL into the DDL ( A3 ).
1104
- return `ADD ${definition} ${this.builder.AfterColumn ? `AFTER ${escapeIdentifier(this.builder.AfterColumn)}` : ''}`;
1226
+ return `ADD ${definition} ${this.builder.AfterColumn ? `AFTER ${this.Quoter.quote(this.builder.AfterColumn)}` : ''}`;
1105
1227
  }
1106
1228
  _modify(definition) {
1107
1229
  return `MODIFY ${definition}`;
1108
1230
  }
1109
1231
  _rename() {
1110
- return `RENAME COLUMN ${escapeIdentifier(this.builder.OldName)} TO ${escapeIdentifier(this.builder.Name)}`;
1232
+ return `RENAME COLUMN ${this.Quoter.quote(this.builder.OldName)} TO ${this.Quoter.quote(this.builder.Name)}`;
1111
1233
  }
1112
1234
  compile() {
1113
1235
  // rename never renders a column body, so it must not resolve one
@@ -1137,6 +1259,10 @@ let SqlAlterColumnQueryCompiler = class SqlAlterColumnQueryCompiler extends orm_
1137
1259
  }
1138
1260
  };
1139
1261
  exports.SqlAlterColumnQueryCompiler = SqlAlterColumnQueryCompiler;
1262
+ __decorate([
1263
+ (0, di_1.Autoinject)(orm_1.IdentifierQuoter),
1264
+ __metadata("design:type", orm_1.IdentifierQuoter)
1265
+ ], SqlAlterColumnQueryCompiler.prototype, "Quoter", void 0);
1140
1266
  exports.SqlAlterColumnQueryCompiler = SqlAlterColumnQueryCompiler = __decorate([
1141
1267
  (0, di_1.NewInstance)(),
1142
1268
  (0, di_1.Inject)(di_1.Container),