@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/cjs/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/cjs/compilers.js
CHANGED
|
@@ -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
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
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 += `${
|
|
94
|
+
table += `${this.Quoter.quote(builder.Database)}.`;
|
|
76
95
|
}
|
|
77
|
-
table +=
|
|
96
|
+
table += this.Quoter.quote(tbl ? tbl : builder.Table);
|
|
78
97
|
if (builder.TableAlias) {
|
|
79
|
-
table += ` as ${
|
|
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) => `${
|
|
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 (${
|
|
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(`${
|
|
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 `${
|
|
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 ${
|
|
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}\`` :
|
|
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 ${
|
|
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) =>
|
|
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(
|
|
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 ${
|
|
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 ${
|
|
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),
|