@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.
- package/lib/cjs/compilers.d.ts +49 -4
- package/lib/cjs/compilers.d.ts.map +1 -1
- package/lib/cjs/compilers.js +144 -18
- package/lib/cjs/compilers.js.map +1 -1
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +3 -13
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/statements.d.ts +31 -2
- package/lib/cjs/statements.d.ts.map +1 -1
- package/lib/cjs/statements.js +141 -62
- package/lib/cjs/statements.js.map +1 -1
- package/lib/mjs/compilers.d.ts +49 -4
- package/lib/mjs/compilers.d.ts.map +1 -1
- package/lib/mjs/compilers.js +144 -19
- package/lib/mjs/compilers.js.map +1 -1
- package/lib/mjs/index.d.ts +1 -0
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +5 -15
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/statements.d.ts +31 -2
- package/lib/mjs/statements.d.ts.map +1 -1
- package/lib/mjs/statements.js +119 -41
- package/lib/mjs/statements.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +5 -5
package/lib/mjs/compilers.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
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":"AAKA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,uBAAuB,EAAmB,uBAAuB,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAiB,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAmB,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAY,aAAa,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,eAAe,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,uBAAuB,EAAwB,wBAAwB,EAAE,kBAAkB,EAAE,iBAAiB,EAAkB,qBAAqB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,iBAAiB,EAAkB,eAAe,EAA4E,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"compilers.d.ts","sourceRoot":"","sources":["../../src/compilers.ts"],"names":[],"mappings":"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"}
|
package/lib/mjs/compilers.js
CHANGED
|
@@ -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
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
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 += `${
|
|
84
|
+
table += `${this.Quoter.quote(builder.Database)}.`;
|
|
67
85
|
}
|
|
68
|
-
table +=
|
|
86
|
+
table += this.Quoter.quote(tbl ? tbl : builder.Table);
|
|
69
87
|
if (builder.TableAlias) {
|
|
70
|
-
table += ` as ${
|
|
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) => `${
|
|
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 (${
|
|
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(`${
|
|
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 `${
|
|
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 ${
|
|
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}\`` :
|
|
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 ${
|
|
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) =>
|
|
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(
|
|
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 ${
|
|
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 ${
|
|
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),
|