@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,9 +12,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
12
12
  /* eslint-disable @typescript-eslint/no-empty-interface */
13
13
  /* eslint-disable prettier/prettier */
14
14
  import { InvalidOperation, InvalidArgument } from '@spinajs/exceptions';
15
- import { LimitBuilder, DropTableQueryBuilder, AlterColumnQueryBuilder, TableCloneQueryCompiler, OnDuplicateQueryBuilder, DeleteQueryBuilder, LimitQueryCompiler, InsertQueryBuilder, OrderByBuilder, SelectQueryBuilder, UpdateQueryBuilder, SelectQueryCompiler, TableQueryCompiler, TableQueryBuilder, ColumnQueryBuilder, ColumnQueryCompiler, RawQuery, OrderByQueryCompiler, OnDuplicateQueryCompiler, IndexQueryCompiler, IndexQueryBuilder, ForeignKeyBuilder, ForeignKeyQueryCompiler, AlterTableQueryBuilder, CloneTableQueryBuilder, AlterTableQueryCompiler, ColumnAlterationType, AlterColumnQueryCompiler, TableAliasCompiler, DropTableCompiler, DropEventQueryBuilder, TableHistoryQueryCompiler, EventQueryBuilder, LazyQueryStatement, WhereBoolean, RawSchemaQueryCompiler, RawSchemaQueryBuilder, DropViewQueryBuilder, DropViewCompiler } from '@spinajs/orm';
15
+ import { LimitBuilder, DropTableQueryBuilder, AlterColumnQueryBuilder, TableCloneQueryCompiler, OnDuplicateQueryBuilder, DeleteQueryBuilder, LimitQueryCompiler, InsertQueryBuilder, OrderByBuilder, SelectQueryBuilder, UpdateQueryBuilder, SelectQueryCompiler, TableQueryCompiler, TableQueryBuilder, ColumnQueryBuilder, ColumnQueryCompiler, RawQuery, OrderByQueryCompiler, OnDuplicateQueryCompiler, IndexQueryCompiler, IndexQueryBuilder, ForeignKeyBuilder, ForeignKeyQueryCompiler, AlterTableQueryBuilder, CloneTableQueryBuilder, AlterTableQueryCompiler, ColumnAlterationType, AlterColumnQueryCompiler, TableAliasCompiler, DropTableCompiler, DropEventQueryBuilder, TableHistoryQueryCompiler, EventQueryBuilder, LazyQueryStatement, WhereBoolean, RawSchemaQueryCompiler, RawSchemaQueryBuilder, DropViewQueryBuilder, DropViewCompiler, IdentifierQuoter, CreateDatabaseCompiler, CreateDatabaseQueryBuilder, DropDatabaseCompiler, DropDatabaseQueryBuilder } from '@spinajs/orm';
16
16
  import { use } from 'typescript-mix';
17
- import { NewInstance, Inject, Container } from '@spinajs/di';
17
+ import { NewInstance, Inject, Container, Autoinject } from '@spinajs/di';
18
18
  import _ from 'lodash';
19
19
  /**
20
20
  * Central identifier escaping for the MySQL-flavoured dialect.
@@ -25,9 +25,11 @@ import _ from 'lodash';
25
25
  * (`` `${name}` ``), so existing generated SQL is unchanged; only names that
26
26
  * actually contain a backtick produce different — and now safe — output.
27
27
  *
28
- * Dialects that quote differently (e.g. `[name]` with `]`-doubling) override
29
- * this by shadowing the relevant compiler/statement, the same way
30
- * {@link SqlTableAliasCompiler} is already overridden per driver.
28
+ * NOTE: compilers and statements no longer call this. They quote through the
29
+ * injected {@link IdentifierQuoter}, which a driver registers for its own dialect —
30
+ * shadowing a compiler could never shadow a function it called internally, which is
31
+ * how MSSQL ended up emitting backticks. This is kept for a DRIVER's own internal
32
+ * SQL ( schema probes, savepoint names ), where the driver already knows its dialect.
31
33
  */
32
34
  export function escapeIdentifier(name) {
33
35
  return '`' + String(name).replace(/`/g, '``') + '`';
@@ -43,6 +45,22 @@ export function escapeIdentifier(name) {
43
45
  * therefore read as a qualifier separator; a table whose name genuinely contains a
44
46
  * dot cannot be expressed through that API (it never could).
45
47
  */
48
+ /**
49
+ * Backtick quoting — MySQL's rule, which SQLite also accepts.
50
+ *
51
+ * Registered by the MySQL and SQLite drivers, NOT by the shared `SqlDriver`: backticks
52
+ * are not portable ( MSSQL rejects them ), and a driver inheriting another dialect's
53
+ * quoting silently is exactly the failure this service exists to end.
54
+ */
55
+ let BacktickIdentifierQuoter = class BacktickIdentifierQuoter extends IdentifierQuoter {
56
+ quote(name) {
57
+ return escapeIdentifier(name);
58
+ }
59
+ };
60
+ BacktickIdentifierQuoter = __decorate([
61
+ NewInstance()
62
+ ], BacktickIdentifierQuoter);
63
+ export { BacktickIdentifierQuoter };
46
64
  export function escapeQualifiedIdentifier(name) {
47
65
  return String(name)
48
66
  .split('.')
@@ -63,15 +81,19 @@ let SqlTableAliasCompiler = class SqlTableAliasCompiler {
63
81
  compile(builder, tbl) {
64
82
  let table = '';
65
83
  if (builder.Database) {
66
- table += `${escapeIdentifier(builder.Database)}.`;
84
+ table += `${this.Quoter.quote(builder.Database)}.`;
67
85
  }
68
- table += escapeIdentifier(tbl ? tbl : builder.Table);
86
+ table += this.Quoter.quote(tbl ? tbl : builder.Table);
69
87
  if (builder.TableAlias) {
70
- table += ` as ${escapeIdentifier(builder.TableAlias)}`;
88
+ table += ` as ${this.Quoter.quote(builder.TableAlias)}`;
71
89
  }
72
90
  return table;
73
91
  }
74
92
  };
93
+ __decorate([
94
+ Autoinject(IdentifierQuoter),
95
+ __metadata("design:type", IdentifierQuoter)
96
+ ], SqlTableAliasCompiler.prototype, "Quoter", void 0);
75
97
  SqlTableAliasCompiler = __decorate([
76
98
  NewInstance()
77
99
  ], SqlTableAliasCompiler);
@@ -113,7 +135,7 @@ let SqlOrderByQueryCompiler = class SqlOrderByQueryCompiler extends OrderByQuery
113
135
  let stmt = '';
114
136
  const bindings = [];
115
137
  if (sorts.length > 0) {
116
- stmt = ` ORDER BY ${sorts.map((s) => `${escapeIdentifier(s.column)} ${s.order}`).join(', ')}`;
138
+ stmt = ` ORDER BY ${sorts.map((s) => `${this.Quoter.quote(s.column)} ${s.order}`).join(', ')}`;
117
139
  }
118
140
  return {
119
141
  bindings,
@@ -121,6 +143,10 @@ let SqlOrderByQueryCompiler = class SqlOrderByQueryCompiler extends OrderByQuery
121
143
  };
122
144
  }
123
145
  };
146
+ __decorate([
147
+ Autoinject(IdentifierQuoter),
148
+ __metadata("design:type", IdentifierQuoter)
149
+ ], SqlOrderByQueryCompiler.prototype, "Quoter", void 0);
124
150
  SqlOrderByQueryCompiler = __decorate([
125
151
  NewInstance(),
126
152
  __metadata("design:paramtypes", [OrderByBuilder])
@@ -154,13 +180,17 @@ let SqlForeignKeyQueryCompiler = class SqlForeignKeyQueryCompiler {
154
180
  }
155
181
  }
156
182
  compile() {
157
- 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}`;
183
+ 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}`;
158
184
  return {
159
185
  bindings: [],
160
186
  expression: exprr,
161
187
  };
162
188
  }
163
189
  };
190
+ __decorate([
191
+ Autoinject(IdentifierQuoter),
192
+ __metadata("design:type", IdentifierQuoter)
193
+ ], SqlForeignKeyQueryCompiler.prototype, "Quoter", void 0);
164
194
  SqlForeignKeyQueryCompiler = __decorate([
165
195
  NewInstance(),
166
196
  __metadata("design:paramtypes", [ForeignKeyBuilder])
@@ -404,7 +434,7 @@ let SqlUpdateQueryCompiler = class SqlUpdateQueryCompiler extends SqlQueryCompil
404
434
  const exprr = [];
405
435
  for (const prop of Object.keys(this._builder.Value)) {
406
436
  const v = this._builder.Value[`${prop}`];
407
- exprr.push(`${escapeIdentifier(prop)} = ?`);
437
+ exprr.push(`${this.Quoter.quote(prop)} = ?`);
408
438
  bindings = bindings.concat(this.tryConvertValue(v));
409
439
  }
410
440
  return {
@@ -416,6 +446,10 @@ let SqlUpdateQueryCompiler = class SqlUpdateQueryCompiler extends SqlQueryCompil
416
446
  return `UPDATE ${this._container.resolve(TableAliasCompiler).compile(this._builder)} SET`;
417
447
  }
418
448
  };
449
+ __decorate([
450
+ Autoinject(IdentifierQuoter),
451
+ __metadata("design:type", IdentifierQuoter)
452
+ ], SqlUpdateQueryCompiler.prototype, "Quoter", void 0);
419
453
  __decorate([
420
454
  use(SqlWhereCompiler, TableAliasCompiler),
421
455
  __metadata("design:type", Object)
@@ -475,7 +509,7 @@ let SqlOnDuplicateQueryCompiler = class SqlOnDuplicateQueryCompiler {
475
509
  // re-binding one specific row's value. Binding `parent.Values[0]`
476
510
  // applied the FIRST row's values to every conflicting row in a
477
511
  // multi row upsert.
478
- return `${escapeIdentifier(c)} = VALUES(${escapeIdentifier(c)})`;
512
+ return `${this.Quoter.quote(c)} = VALUES(${this.Quoter.quote(c)})`;
479
513
  }
480
514
  else {
481
515
  return c.Query;
@@ -494,6 +528,10 @@ let SqlOnDuplicateQueryCompiler = class SqlOnDuplicateQueryCompiler {
494
528
  };
495
529
  }
496
530
  };
531
+ __decorate([
532
+ Autoinject(IdentifierQuoter),
533
+ __metadata("design:type", IdentifierQuoter)
534
+ ], SqlOnDuplicateQueryCompiler.prototype, "Quoter", void 0);
497
535
  SqlOnDuplicateQueryCompiler = __decorate([
498
536
  NewInstance(),
499
537
  __metadata("design:paramtypes", [OnDuplicateQueryBuilder])
@@ -507,10 +545,14 @@ let SqlIndexQueryCompiler = class SqlIndexQueryCompiler extends IndexQueryCompil
507
545
  compile() {
508
546
  return {
509
547
  bindings: [],
510
- expression: `CREATE ${this._builder.Unique ? 'UNIQUE ' : ''}INDEX ${escapeIdentifier(this._builder.Name)} ON ${escapeIdentifier(this._builder.Table)} (${this._builder.Columns.map((c) => escapeIdentifier(c)).join(',')});`,
548
+ 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(',')});`,
511
549
  };
512
550
  }
513
551
  };
552
+ __decorate([
553
+ Autoinject(IdentifierQuoter),
554
+ __metadata("design:type", IdentifierQuoter)
555
+ ], SqlIndexQueryCompiler.prototype, "Quoter", void 0);
514
556
  SqlIndexQueryCompiler = __decorate([
515
557
  NewInstance(),
516
558
  __metadata("design:paramtypes", [IndexQueryBuilder])
@@ -612,7 +654,7 @@ let SqlInsertQueryCompiler = class SqlInsertQueryCompiler extends SqlQueryCompil
612
654
  .map((c) => {
613
655
  // RawQuery columns carry raw SQL - preserve the existing (unescaped)
614
656
  // backtick wrapping. String columns go through the identifier escaper.
615
- return c instanceof RawQuery ? `\`${c.Query}\`` : escapeIdentifier(c);
657
+ return c instanceof RawQuery ? `\`${c.Query}\`` : this.Quoter.quote(c);
616
658
  });
617
659
  if (columns.length === 0) {
618
660
  throw new InvalidArgument('invalid column count');
@@ -623,6 +665,10 @@ let SqlInsertQueryCompiler = class SqlInsertQueryCompiler extends SqlQueryCompil
623
665
  return `INSERT${this._builder.Ignore ? ' IGNORE' : ''} INTO ${this._container.resolve(TableAliasCompiler).compile(this._builder)}`;
624
666
  }
625
667
  };
668
+ __decorate([
669
+ Autoinject(IdentifierQuoter),
670
+ __metadata("design:type", IdentifierQuoter)
671
+ ], SqlInsertQueryCompiler.prototype, "Quoter", void 0);
626
672
  __decorate([
627
673
  use(TableAliasCompiler),
628
674
  __metadata("design:type", Object)
@@ -675,6 +721,69 @@ SqlDropViewQueryCompiler = __decorate([
675
721
  __metadata("design:paramtypes", [Container, DropViewQueryBuilder])
676
722
  ], SqlDropViewQueryCompiler);
677
723
  export { SqlDropViewQueryCompiler };
724
+ /**
725
+ * CHARACTER SET and COLLATE take a *name* - not a quotable identifier and not a bindable
726
+ * value, no engine here accepts a placeholder in that position. Nothing is left to escape
727
+ * with, so the name is validated instead: charset and collation names are alphanumeric
728
+ * plus underscore in every one of these engines, and anything else is refused rather than
729
+ * interpolated.
730
+ */
731
+ export function assertCharsetName(name, clause) {
732
+ if (!/^[A-Za-z0-9_]+$/.test(name)) {
733
+ throw new InvalidArgument(`invalid ${clause} name "${name}", only alphanumeric characters and underscore are allowed`);
734
+ }
735
+ return name;
736
+ }
737
+ let SqlCreateDatabaseQueryCompiler = class SqlCreateDatabaseQueryCompiler extends CreateDatabaseCompiler {
738
+ constructor(container, builder) {
739
+ super();
740
+ this.container = container;
741
+ this.builder = builder;
742
+ }
743
+ compile() {
744
+ const exists = this.builder.Exists ? ' IF NOT EXISTS' : '';
745
+ const charset = this.builder.Charset ? ` CHARACTER SET ${assertCharsetName(this.builder.Charset, 'character set')}` : '';
746
+ const collation = this.builder.Collation ? ` COLLATE ${assertCharsetName(this.builder.Collation, 'collation')}` : '';
747
+ return {
748
+ bindings: [],
749
+ expression: `CREATE DATABASE${exists} ${this.Quoter.quote(this.builder.Name)}${charset}${collation}`,
750
+ };
751
+ }
752
+ };
753
+ __decorate([
754
+ Autoinject(IdentifierQuoter),
755
+ __metadata("design:type", IdentifierQuoter)
756
+ ], SqlCreateDatabaseQueryCompiler.prototype, "Quoter", void 0);
757
+ SqlCreateDatabaseQueryCompiler = __decorate([
758
+ NewInstance(),
759
+ Inject(Container),
760
+ __metadata("design:paramtypes", [Container, CreateDatabaseQueryBuilder])
761
+ ], SqlCreateDatabaseQueryCompiler);
762
+ export { SqlCreateDatabaseQueryCompiler };
763
+ let SqlDropDatabaseQueryCompiler = class SqlDropDatabaseQueryCompiler extends DropDatabaseCompiler {
764
+ constructor(container, builder) {
765
+ super();
766
+ this.container = container;
767
+ this.builder = builder;
768
+ }
769
+ compile() {
770
+ const exists = this.builder.Exists ? ' IF EXISTS' : '';
771
+ return {
772
+ bindings: [],
773
+ expression: `DROP DATABASE${exists} ${this.Quoter.quote(this.builder.Name)}`,
774
+ };
775
+ }
776
+ };
777
+ __decorate([
778
+ Autoinject(IdentifierQuoter),
779
+ __metadata("design:type", IdentifierQuoter)
780
+ ], SqlDropDatabaseQueryCompiler.prototype, "Quoter", void 0);
781
+ SqlDropDatabaseQueryCompiler = __decorate([
782
+ NewInstance(),
783
+ Inject(Container),
784
+ __metadata("design:paramtypes", [Container, DropDatabaseQueryBuilder])
785
+ ], SqlDropDatabaseQueryCompiler);
786
+ export { SqlDropDatabaseQueryCompiler };
678
787
  let SqlAlterTableQueryCompiler = class SqlAlterTableQueryCompiler extends AlterTableQueryCompiler {
679
788
  constructor(container, builder) {
680
789
  super();
@@ -752,7 +861,7 @@ let SqlTableCloneQueryCompiler = class SqlTableCloneQueryCompiler extends TableC
752
861
  // if no filter is provided, copy all the data
753
862
  expression: `SELECT * FROM ${_tblName}`,
754
863
  };
755
- const fExprr = `INSERT INTO ${escapeIdentifier(this.builder.Table)} ${fOut.expression}`;
864
+ const fExprr = `INSERT INTO ${this.Quoter.quote(this.builder.Table)} ${fOut.expression}`;
756
865
  return [
757
866
  out1,
758
867
  {
@@ -767,6 +876,10 @@ let SqlTableCloneQueryCompiler = class SqlTableCloneQueryCompiler extends TableC
767
876
  return `CREATE${this.builder.Temporary ? ' TEMPORARY ' : ' '}TABLE ${this.container.resolve(TableAliasCompiler).compile(this.builder)}`;
768
877
  }
769
878
  };
879
+ __decorate([
880
+ Autoinject(IdentifierQuoter),
881
+ __metadata("design:type", IdentifierQuoter)
882
+ ], SqlTableCloneQueryCompiler.prototype, "Quoter", void 0);
770
883
  __decorate([
771
884
  use(TableAliasCompiler),
772
885
  __metadata("design:type", Object)
@@ -934,7 +1047,7 @@ let SqlTableQueryCompiler = class SqlTableQueryCompiler extends TableQueryCompil
934
1047
  }
935
1048
  _primaryKeys() {
936
1049
  const _keys = this.builder.Columns.filter((x) => x.PrimaryKey)
937
- .map((c) => escapeIdentifier(c.Name))
1050
+ .map((c) => this.Quoter.quote(c.Name))
938
1051
  .join(',');
939
1052
  if (!_.isEmpty(_keys)) {
940
1053
  return `PRIMARY KEY (${_keys})`;
@@ -945,6 +1058,10 @@ let SqlTableQueryCompiler = class SqlTableQueryCompiler extends TableQueryCompil
945
1058
  return `CREATE${this.builder.Temporary ? ' TEMPORARY ' : ' '}TABLE ${this.builder.CheckExists ? 'IF NOT EXISTS ' : ''}${this.container.resolve(TableAliasCompiler).compile(this.builder)}`;
946
1059
  }
947
1060
  };
1061
+ __decorate([
1062
+ Autoinject(IdentifierQuoter),
1063
+ __metadata("design:type", IdentifierQuoter)
1064
+ ], SqlTableQueryCompiler.prototype, "Quoter", void 0);
948
1065
  SqlTableQueryCompiler = __decorate([
949
1066
  NewInstance(),
950
1067
  Inject(Container),
@@ -1000,7 +1117,7 @@ let SqlColumnQueryCompiler = class SqlColumnQueryCompiler {
1000
1117
  }
1001
1118
  compile() {
1002
1119
  const _stmt = [];
1003
- _stmt.push(escapeIdentifier(this.builder.Name));
1120
+ _stmt.push(this.Quoter.quote(this.builder.Name));
1004
1121
  _stmt.push(this._statementsMappings[this.builder.Type](this.builder));
1005
1122
  if (this.builder.Unsigned) {
1006
1123
  _stmt.push(this._statementsMappings.unsigned());
@@ -1048,6 +1165,10 @@ let SqlColumnQueryCompiler = class SqlColumnQueryCompiler {
1048
1165
  return _stmt;
1049
1166
  }
1050
1167
  };
1168
+ __decorate([
1169
+ Autoinject(IdentifierQuoter),
1170
+ __metadata("design:type", IdentifierQuoter)
1171
+ ], SqlColumnQueryCompiler.prototype, "Quoter", void 0);
1051
1172
  SqlColumnQueryCompiler = __decorate([
1052
1173
  NewInstance(),
1053
1174
  __metadata("design:paramtypes", [ColumnQueryBuilder])
@@ -1092,13 +1213,13 @@ let SqlAlterColumnQueryCompiler = class SqlAlterColumnQueryCompiler extends Alte
1092
1213
  _add(definition) {
1093
1214
  // escapeIdentifier, not raw backticks: an identifier containing a backtick would
1094
1215
  // otherwise terminate the quote and splice arbitrary SQL into the DDL ( A3 ).
1095
- return `ADD ${definition} ${this.builder.AfterColumn ? `AFTER ${escapeIdentifier(this.builder.AfterColumn)}` : ''}`;
1216
+ return `ADD ${definition} ${this.builder.AfterColumn ? `AFTER ${this.Quoter.quote(this.builder.AfterColumn)}` : ''}`;
1096
1217
  }
1097
1218
  _modify(definition) {
1098
1219
  return `MODIFY ${definition}`;
1099
1220
  }
1100
1221
  _rename() {
1101
- return `RENAME COLUMN ${escapeIdentifier(this.builder.OldName)} TO ${escapeIdentifier(this.builder.Name)}`;
1222
+ return `RENAME COLUMN ${this.Quoter.quote(this.builder.OldName)} TO ${this.Quoter.quote(this.builder.Name)}`;
1102
1223
  }
1103
1224
  compile() {
1104
1225
  // rename never renders a column body, so it must not resolve one
@@ -1127,6 +1248,10 @@ let SqlAlterColumnQueryCompiler = class SqlAlterColumnQueryCompiler extends Alte
1127
1248
  };
1128
1249
  }
1129
1250
  };
1251
+ __decorate([
1252
+ Autoinject(IdentifierQuoter),
1253
+ __metadata("design:type", IdentifierQuoter)
1254
+ ], SqlAlterColumnQueryCompiler.prototype, "Quoter", void 0);
1130
1255
  SqlAlterColumnQueryCompiler = __decorate([
1131
1256
  NewInstance(),
1132
1257
  Inject(Container),