@spinajs/orm-postgres 2.0.528
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/README.md +64 -0
- package/lib/cjs/compilers.d.ts +122 -0
- package/lib/cjs/compilers.d.ts.map +1 -0
- package/lib/cjs/compilers.js +391 -0
- package/lib/cjs/compilers.js.map +1 -0
- package/lib/cjs/index.d.ts +61 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +380 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/package.json +1 -0
- package/lib/cjs/statements.d.ts +17 -0
- package/lib/cjs/statements.d.ts.map +1 -0
- package/lib/cjs/statements.js +36 -0
- package/lib/cjs/statements.js.map +1 -0
- package/lib/cjs/types.d.ts +15 -0
- package/lib/cjs/types.d.ts.map +1 -0
- package/lib/cjs/types.js +3 -0
- package/lib/cjs/types.js.map +1 -0
- package/lib/mjs/compilers.d.ts +122 -0
- package/lib/mjs/compilers.d.ts.map +1 -0
- package/lib/mjs/compilers.js +385 -0
- package/lib/mjs/compilers.js.map +1 -0
- package/lib/mjs/index.d.ts +61 -0
- package/lib/mjs/index.d.ts.map +1 -0
- package/lib/mjs/index.js +358 -0
- package/lib/mjs/index.js.map +1 -0
- package/lib/mjs/package.json +1 -0
- package/lib/mjs/statements.d.ts +17 -0
- package/lib/mjs/statements.d.ts.map +1 -0
- package/lib/mjs/statements.js +32 -0
- package/lib/mjs/statements.js.map +1 -0
- package/lib/mjs/types.d.ts +15 -0
- package/lib/mjs/types.d.ts.map +1 -0
- package/lib/mjs/types.js +2 -0
- package/lib/mjs/types.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -0
- package/lib/tsconfig.mjs.tsbuildinfo +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/* eslint-disable security/detect-object-injection */
|
|
11
|
+
import { NewInstance, Inject, Container, Autoinject } from '@spinajs/di';
|
|
12
|
+
import { NotSupported } from '@spinajs/exceptions';
|
|
13
|
+
import { Logger, Log } from '@spinajs/log';
|
|
14
|
+
import { RawQuery, OnDuplicateQueryBuilder, InsertQueryBuilder, TableExistsQueryBuilder, OrmException, LimitQueryCompiler, LimitBuilder, CreateDatabaseCompiler, CreateDatabaseQueryBuilder, IdentifierQuoter, ColumnQueryCompiler, TableAliasCompiler } from '@spinajs/orm';
|
|
15
|
+
import { SqlInsertQueryCompiler, SqlColumnQueryCompiler, SqlAlterColumnQueryCompiler, SqlOnDuplicateQueryCompiler, SqlDefaultValueBuilder, escapeStringLiteral, assertCharsetName } from '@spinajs/orm-sql';
|
|
16
|
+
import _ from 'lodash';
|
|
17
|
+
let PostgresTableExistsCompiler = class PostgresTableExistsCompiler {
|
|
18
|
+
constructor(builder) {
|
|
19
|
+
this.builder = builder;
|
|
20
|
+
if (builder === null) {
|
|
21
|
+
throw new Error('table exists query builder cannot be null');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
compile() {
|
|
25
|
+
// `Database` on this builder plays the role a schema plays in postgres: one server
|
|
26
|
+
// database holds many schemas, and a connection cannot ask about another database at
|
|
27
|
+
// all. Unqualified checks go against current_schema() — the head of search_path —
|
|
28
|
+
// which is where an unqualified CREATE TABLE would land the table.
|
|
29
|
+
if (this.builder.Database) {
|
|
30
|
+
return {
|
|
31
|
+
bindings: [this.builder.Table, this.builder.Database],
|
|
32
|
+
expression: `SELECT table_name FROM information_schema.tables WHERE table_name = ? AND table_schema = ? LIMIT 1`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
bindings: [this.builder.Table],
|
|
37
|
+
expression: `SELECT table_name FROM information_schema.tables WHERE table_name = ? AND table_schema = current_schema() LIMIT 1`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
PostgresTableExistsCompiler = __decorate([
|
|
42
|
+
NewInstance(),
|
|
43
|
+
__metadata("design:paramtypes", [TableExistsQueryBuilder])
|
|
44
|
+
], PostgresTableExistsCompiler);
|
|
45
|
+
export { PostgresTableExistsCompiler };
|
|
46
|
+
/**
|
|
47
|
+
* LIMIT / OFFSET the postgres way. The shared compiler emits MySQL's
|
|
48
|
+
* `LIMIT 18446744073709551615` for an offset without a limit — a literal larger than
|
|
49
|
+
* BIGINT, which postgres rejects outright. Postgres accepts a bare OFFSET, so the
|
|
50
|
+
* workaround is simply dropped.
|
|
51
|
+
*/
|
|
52
|
+
let PostgresLimitQueryCompiler = class PostgresLimitQueryCompiler extends LimitQueryCompiler {
|
|
53
|
+
constructor(builder) {
|
|
54
|
+
super();
|
|
55
|
+
if (!builder) {
|
|
56
|
+
throw new Error('builder cannot be null or undefined');
|
|
57
|
+
}
|
|
58
|
+
this._builder = builder;
|
|
59
|
+
}
|
|
60
|
+
compile() {
|
|
61
|
+
const limits = this._builder.getLimits();
|
|
62
|
+
const bindings = [];
|
|
63
|
+
let stmt = '';
|
|
64
|
+
if ((limits.limit ?? 0) > 0) {
|
|
65
|
+
stmt += ` LIMIT ?`;
|
|
66
|
+
bindings.push(limits.limit);
|
|
67
|
+
}
|
|
68
|
+
if ((limits.offset ?? 0) > 0) {
|
|
69
|
+
stmt += ` OFFSET ?`;
|
|
70
|
+
bindings.push(limits.offset);
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
bindings,
|
|
74
|
+
expression: stmt,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
PostgresLimitQueryCompiler = __decorate([
|
|
79
|
+
NewInstance(),
|
|
80
|
+
__metadata("design:paramtypes", [LimitBuilder])
|
|
81
|
+
], PostgresLimitQueryCompiler);
|
|
82
|
+
export { PostgresLimitQueryCompiler };
|
|
83
|
+
/**
|
|
84
|
+
* Upsert, spelled `ON CONFLICT (...) DO UPDATE`. MySQL's `ON DUPLICATE KEY UPDATE` and its
|
|
85
|
+
* `VALUES(col)` reference are both rejected by postgres; the row that failed to insert is
|
|
86
|
+
* reachable as `EXCLUDED` instead, which — like VALUES(col) — applies each conflicting
|
|
87
|
+
* row's own values in a multi row upsert and needs no bindings.
|
|
88
|
+
*/
|
|
89
|
+
let PostgresOnDuplicateQueryCompiler = class PostgresOnDuplicateQueryCompiler extends SqlOnDuplicateQueryCompiler {
|
|
90
|
+
constructor(builder) {
|
|
91
|
+
super(builder);
|
|
92
|
+
}
|
|
93
|
+
compile() {
|
|
94
|
+
if (this._builder.getColumn().length === 0) {
|
|
95
|
+
throw new OrmException(`no unique or primary key columns defined in table ${this._builder.getParent().Table}`);
|
|
96
|
+
}
|
|
97
|
+
const conflictTarget = this._builder
|
|
98
|
+
.getColumn()
|
|
99
|
+
.map((c) => this.Quoter.quote(c))
|
|
100
|
+
.join(',');
|
|
101
|
+
const columns = this._builder
|
|
102
|
+
.getColumnsToUpdate()
|
|
103
|
+
.map((c) => {
|
|
104
|
+
if (_.isString(c)) {
|
|
105
|
+
return `${this.Quoter.quote(c)} = EXCLUDED.${this.Quoter.quote(c)}`;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
return c.Query;
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
.join(',');
|
|
112
|
+
const bindings = _.flatMap(this._builder.getColumnsToUpdate(), (c) => {
|
|
113
|
+
return _.isString(c) ? [] : c.Bindings ?? [];
|
|
114
|
+
});
|
|
115
|
+
const returning = this._builder.getReturning();
|
|
116
|
+
const returningExpression = returning.length === 0 ? '' : ` RETURNING ${returning[0] === '*' ? '*' : returning.map((c) => this.Quoter.quote(c)).join(',')}`;
|
|
117
|
+
return {
|
|
118
|
+
bindings,
|
|
119
|
+
expression: `ON CONFLICT (${conflictTarget}) DO UPDATE SET ${columns}${returningExpression}`,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
PostgresOnDuplicateQueryCompiler = __decorate([
|
|
124
|
+
NewInstance(),
|
|
125
|
+
__metadata("design:paramtypes", [OnDuplicateQueryBuilder])
|
|
126
|
+
], PostgresOnDuplicateQueryCompiler);
|
|
127
|
+
export { PostgresOnDuplicateQueryCompiler };
|
|
128
|
+
let PostgresInsertQueryCompiler = class PostgresInsertQueryCompiler extends SqlInsertQueryCompiler {
|
|
129
|
+
constructor(container, builder) {
|
|
130
|
+
super(container, builder);
|
|
131
|
+
}
|
|
132
|
+
compile() {
|
|
133
|
+
const into = this.into();
|
|
134
|
+
const columns = this.columns();
|
|
135
|
+
const values = this.values();
|
|
136
|
+
const upsort = this.upsort();
|
|
137
|
+
const ignore = this.ignore();
|
|
138
|
+
const returning = this.returning();
|
|
139
|
+
return {
|
|
140
|
+
bindings: values.bindings.concat(upsort.bindings),
|
|
141
|
+
expression: `${into} ${columns} ${values.data}${ignore} ${upsort.expression}${returning}`.trim(),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* An identity column rejects an explicit NULL — postgres wants the DEFAULT keyword where
|
|
146
|
+
* MySQL and SQLite read NULL as "assign the key".
|
|
147
|
+
*/
|
|
148
|
+
autoIncrementPlaceholder() {
|
|
149
|
+
return 'DEFAULT';
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* `INSERT IGNORE` is MySQL; the postgres spelling of "silently skip the conflicting row"
|
|
153
|
+
* is `ON CONFLICT DO NOTHING`, which comes AFTER the values. Skipped when an upsert
|
|
154
|
+
* clause is present — the ON CONFLICT compiler emits its own conflict handling and two
|
|
155
|
+
* such clauses are invalid SQL.
|
|
156
|
+
*/
|
|
157
|
+
ignore() {
|
|
158
|
+
return this._builder.Ignore && !this._builder.Update ? ' ON CONFLICT DO NOTHING' : '';
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* RETURNING on a plain INSERT. Skipped when an upsert clause is present — the ON CONFLICT
|
|
162
|
+
* compiler emits its own RETURNING and two would be invalid SQL.
|
|
163
|
+
*/
|
|
164
|
+
returning() {
|
|
165
|
+
if (this._builder.Update || this._builder.Returning.length === 0) {
|
|
166
|
+
return '';
|
|
167
|
+
}
|
|
168
|
+
const cols = this._builder.Returning[0] === '*' ? ['*'] : this._builder.Returning.map((c) => this.Quoter.quote(c));
|
|
169
|
+
return ` RETURNING ${cols.join(',')}`;
|
|
170
|
+
}
|
|
171
|
+
into() {
|
|
172
|
+
// no INSERT IGNORE here — see ignore() above
|
|
173
|
+
return `INSERT INTO ${this._container.resolve(TableAliasCompiler).compile(this._builder)}`;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
PostgresInsertQueryCompiler = __decorate([
|
|
177
|
+
NewInstance(),
|
|
178
|
+
Inject(Container),
|
|
179
|
+
__metadata("design:paramtypes", [Object, InsertQueryBuilder])
|
|
180
|
+
], PostgresInsertQueryCompiler);
|
|
181
|
+
export { PostgresInsertQueryCompiler };
|
|
182
|
+
/**
|
|
183
|
+
* Column DDL in the postgres dialect. Differences from the shared (MySQL) compiler, each
|
|
184
|
+
* with the postgres answer:
|
|
185
|
+
*
|
|
186
|
+
* - AUTO_INCREMENT does not exist: an integer-family column renders as
|
|
187
|
+
* `GENERATED BY DEFAULT AS IDENTITY` ( BY DEFAULT, not ALWAYS, because the ORM's batch
|
|
188
|
+
* insert path may supply an explicit key for some rows of a batch ).
|
|
189
|
+
* - ENUM and SET are not inline types: both render as TEXT, an enum additionally carrying
|
|
190
|
+
* a CHECK constraint over its members. SET stays plain TEXT because the shared
|
|
191
|
+
* SqlSetConverter stores a comma-joined string and the LIKE-based InSet statement reads
|
|
192
|
+
* it back.
|
|
193
|
+
* - UNSIGNED, CHARACTER SET and inline COMMENT have no postgres spelling and are dropped;
|
|
194
|
+
* COLLATE is kept ( postgres collations are identifiers, so it is quoted ).
|
|
195
|
+
* - MySQL type names map to their postgres equivalents ( DATETIME → TIMESTAMP,
|
|
196
|
+
* DOUBLE → DOUBLE PRECISION, BLOB → BYTEA, JSON → JSONB ).
|
|
197
|
+
*/
|
|
198
|
+
let PostgresColumnQueryCompiler = class PostgresColumnQueryCompiler extends SqlColumnQueryCompiler {
|
|
199
|
+
compile() {
|
|
200
|
+
const _stmt = [];
|
|
201
|
+
_stmt.push(this.Quoter.quote(this.builder.Name));
|
|
202
|
+
_stmt.push(this.typeExpression());
|
|
203
|
+
if (this.builder.AutoIncrement) {
|
|
204
|
+
if (!['int', 'smallint', 'tinyint', 'mediumint', 'bigint'].includes(this.builder.Type)) {
|
|
205
|
+
throw new OrmException(`postgres cannot auto-increment column ${this.builder.Name}: identity requires an integer type, got ${this.builder.Type}`);
|
|
206
|
+
}
|
|
207
|
+
_stmt.push('GENERATED BY DEFAULT AS IDENTITY');
|
|
208
|
+
}
|
|
209
|
+
if (this.builder.Collation) {
|
|
210
|
+
_stmt.push(`COLLATE ${this.Quoter.quote(this.builder.Collation)}`);
|
|
211
|
+
}
|
|
212
|
+
if (this.builder.NotNull) {
|
|
213
|
+
_stmt.push('NOT NULL');
|
|
214
|
+
}
|
|
215
|
+
if (this.builder.Default) {
|
|
216
|
+
_stmt.push(this._defaultCompiler());
|
|
217
|
+
}
|
|
218
|
+
if (this.builder.Type === 'enum') {
|
|
219
|
+
const members = this.builder.Args[0].map((a) => `'${escapeStringLiteral(a)}'`).join(',');
|
|
220
|
+
_stmt.push(`CHECK (${this.Quoter.quote(this.builder.Name)} IN (${members}))`);
|
|
221
|
+
}
|
|
222
|
+
if (this.builder.Unique) {
|
|
223
|
+
_stmt.push('UNIQUE');
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
bindings: [],
|
|
227
|
+
expression: _stmt.filter((x) => !_.isEmpty(x)).join(' '),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The `DEFAULT ...` fragment of the column body, or '' when none is set — public because
|
|
232
|
+
* the ALTER COLUMN compiler rebuilds it into `ALTER COLUMN x SET DEFAULT ...`.
|
|
233
|
+
*/
|
|
234
|
+
defaultExpression() {
|
|
235
|
+
return this._defaultCompiler();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* The bare type, without constraints — public because the ALTER COLUMN compiler needs
|
|
239
|
+
* exactly this piece for `ALTER COLUMN x TYPE t`.
|
|
240
|
+
*/
|
|
241
|
+
typeExpression() {
|
|
242
|
+
switch (this.builder.Type) {
|
|
243
|
+
case 'string':
|
|
244
|
+
return `VARCHAR(${this.builder.Args[0] ? this.builder.Args[0] : 255})`;
|
|
245
|
+
case 'text':
|
|
246
|
+
case 'tinytext':
|
|
247
|
+
case 'mediumtext':
|
|
248
|
+
case 'longtext':
|
|
249
|
+
case 'set':
|
|
250
|
+
case 'enum':
|
|
251
|
+
return 'TEXT';
|
|
252
|
+
case 'boolean':
|
|
253
|
+
return 'BOOLEAN';
|
|
254
|
+
case 'float':
|
|
255
|
+
return 'REAL';
|
|
256
|
+
case 'double':
|
|
257
|
+
return 'DOUBLE PRECISION';
|
|
258
|
+
case 'decimal': {
|
|
259
|
+
const precision = this.builder.Args[0] ? this.builder.Args[0] : 8;
|
|
260
|
+
const scale = this.builder.Args[1] ? this.builder.Args[1] : 2;
|
|
261
|
+
return `NUMERIC(${precision},${scale})`;
|
|
262
|
+
}
|
|
263
|
+
case 'tinyint':
|
|
264
|
+
case 'smallint':
|
|
265
|
+
return 'SMALLINT';
|
|
266
|
+
case 'int':
|
|
267
|
+
case 'mediumint':
|
|
268
|
+
return 'INTEGER';
|
|
269
|
+
case 'bigint':
|
|
270
|
+
return 'BIGINT';
|
|
271
|
+
case 'binary':
|
|
272
|
+
case 'tinyblob':
|
|
273
|
+
case 'mediumblob':
|
|
274
|
+
case 'longblob':
|
|
275
|
+
return 'BYTEA';
|
|
276
|
+
case 'bit':
|
|
277
|
+
return 'BIT';
|
|
278
|
+
case 'date':
|
|
279
|
+
return 'DATE';
|
|
280
|
+
case 'time':
|
|
281
|
+
return 'TIME';
|
|
282
|
+
case 'dateTime':
|
|
283
|
+
case 'timestamp':
|
|
284
|
+
return 'TIMESTAMP';
|
|
285
|
+
case 'json':
|
|
286
|
+
return 'JSONB';
|
|
287
|
+
default:
|
|
288
|
+
throw new OrmException(`type ${this.builder.Type} is not supported by the postgres driver`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
PostgresColumnQueryCompiler = __decorate([
|
|
293
|
+
NewInstance()
|
|
294
|
+
], PostgresColumnQueryCompiler);
|
|
295
|
+
export { PostgresColumnQueryCompiler };
|
|
296
|
+
/**
|
|
297
|
+
* ALTER COLUMN, postgres style.
|
|
298
|
+
*
|
|
299
|
+
* MySQL's MODIFY restates the whole column in one clause; postgres alters each attribute
|
|
300
|
+
* with its own action, and — matching MODIFY's semantics, where any omitted attribute is
|
|
301
|
+
* dropped — an absent NOT NULL / DEFAULT drops the constraint rather than leaving it.
|
|
302
|
+
* The actions are comma-joined, so the parent compiler's `ALTER TABLE t ` prefix yields
|
|
303
|
+
* one valid multi-action statement.
|
|
304
|
+
*/
|
|
305
|
+
let PostgresAlterColumnQueryCompiler = class PostgresAlterColumnQueryCompiler extends SqlAlterColumnQueryCompiler {
|
|
306
|
+
_columnDefinition() {
|
|
307
|
+
return this.container.resolve(ColumnQueryCompiler, [this.builder]).compile();
|
|
308
|
+
}
|
|
309
|
+
_add(definition) {
|
|
310
|
+
if (this.builder.AfterColumn) {
|
|
311
|
+
// AFTER is MySQL-only; postgres appends columns at the end and offers no placement
|
|
312
|
+
this.Log.warn(`postgres cannot place column '${this.builder.Name}' AFTER '${this.builder.AfterColumn}' - the column is appended at the end of the table`);
|
|
313
|
+
}
|
|
314
|
+
return `ADD COLUMN ${definition}`;
|
|
315
|
+
}
|
|
316
|
+
_modify(_definition) {
|
|
317
|
+
const column = this.Quoter.quote(this.builder.Name);
|
|
318
|
+
const compiler = this.container.resolve(ColumnQueryCompiler, [this.builder]);
|
|
319
|
+
const actions = [`ALTER COLUMN ${column} TYPE ${compiler.typeExpression()}`];
|
|
320
|
+
actions.push(this.builder.NotNull ? `ALTER COLUMN ${column} SET NOT NULL` : `ALTER COLUMN ${column} DROP NOT NULL`);
|
|
321
|
+
const defaultExpression = compiler.defaultExpression();
|
|
322
|
+
actions.push(defaultExpression ? `ALTER COLUMN ${column} SET ${defaultExpression}` : `ALTER COLUMN ${column} DROP DEFAULT`);
|
|
323
|
+
return actions.join(', ');
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
__decorate([
|
|
327
|
+
Logger('ORM'),
|
|
328
|
+
__metadata("design:type", Log)
|
|
329
|
+
], PostgresAlterColumnQueryCompiler.prototype, "Log", void 0);
|
|
330
|
+
PostgresAlterColumnQueryCompiler = __decorate([
|
|
331
|
+
NewInstance(),
|
|
332
|
+
Inject(Container)
|
|
333
|
+
], PostgresAlterColumnQueryCompiler);
|
|
334
|
+
export { PostgresAlterColumnQueryCompiler };
|
|
335
|
+
/**
|
|
336
|
+
* Postgres spells database DDL its own way: encoding is `ENCODING`, not CHARACTER SET,
|
|
337
|
+
* and CREATE DATABASE has no IF NOT EXISTS at all — existence has to be checked by the
|
|
338
|
+
* caller, so the flag is refused rather than silently dropped.
|
|
339
|
+
*/
|
|
340
|
+
let PostgresCreateDatabaseQueryCompiler = class PostgresCreateDatabaseQueryCompiler extends CreateDatabaseCompiler {
|
|
341
|
+
constructor(container, builder) {
|
|
342
|
+
super();
|
|
343
|
+
this.container = container;
|
|
344
|
+
this.builder = builder;
|
|
345
|
+
}
|
|
346
|
+
compile() {
|
|
347
|
+
if (this.builder.Exists) {
|
|
348
|
+
throw new NotSupported('postgres does not support CREATE DATABASE IF NOT EXISTS - check pg_database yourself before creating');
|
|
349
|
+
}
|
|
350
|
+
const encoding = this.builder.Charset ? ` ENCODING '${assertCharsetName(this.builder.Charset, 'encoding')}'` : '';
|
|
351
|
+
const collation = this.builder.Collation ? ` LC_COLLATE '${escapeStringLiteral(this.builder.Collation)}'` : '';
|
|
352
|
+
return {
|
|
353
|
+
bindings: [],
|
|
354
|
+
expression: `CREATE DATABASE ${this.Quoter.quote(this.builder.Name)}${encoding}${collation}`,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
__decorate([
|
|
359
|
+
Autoinject(IdentifierQuoter),
|
|
360
|
+
__metadata("design:type", IdentifierQuoter)
|
|
361
|
+
], PostgresCreateDatabaseQueryCompiler.prototype, "Quoter", void 0);
|
|
362
|
+
PostgresCreateDatabaseQueryCompiler = __decorate([
|
|
363
|
+
NewInstance(),
|
|
364
|
+
Inject(Container),
|
|
365
|
+
__metadata("design:paramtypes", [Container, CreateDatabaseQueryBuilder])
|
|
366
|
+
], PostgresCreateDatabaseQueryCompiler);
|
|
367
|
+
export { PostgresCreateDatabaseQueryCompiler };
|
|
368
|
+
// No PostgresDropDatabaseQueryCompiler: `DROP DATABASE IF EXISTS "x"` is exactly what the
|
|
369
|
+
// shared SqlDropDatabaseQueryCompiler emits once this driver's quoter is injected, so the
|
|
370
|
+
// driver claims the shared compiler instead of duplicating it.
|
|
371
|
+
/**
|
|
372
|
+
* `CURRENT_DATE()` — with the parentheses the shared builder emits — is a syntax error in
|
|
373
|
+
* postgres: both CURRENT_DATE and CURRENT_TIMESTAMP are niladic keywords there.
|
|
374
|
+
*/
|
|
375
|
+
let PostgresDefaultValueBuilder = class PostgresDefaultValueBuilder extends SqlDefaultValueBuilder {
|
|
376
|
+
date() {
|
|
377
|
+
this.Query = RawQuery.create('CURRENT_DATE');
|
|
378
|
+
return this.Owner;
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
PostgresDefaultValueBuilder = __decorate([
|
|
382
|
+
NewInstance()
|
|
383
|
+
], PostgresDefaultValueBuilder);
|
|
384
|
+
export { PostgresDefaultValueBuilder };
|
|
385
|
+
//# sourceMappingURL=compilers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compilers.js","sourceRoot":"","sources":["../../src/compilers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { QueryContext, OrmDriver, IColumnDescriptor, ServerResponseMapper, ISupportedFeature, IsolationLevel, ITransactionContext, ITransactionOptions, IPoolMetrics } from '@spinajs/orm';
|
|
2
|
+
import { SqlDriver } from '@spinajs/orm-sql';
|
|
3
|
+
import pg from 'pg';
|
|
4
|
+
export * from './compilers.js';
|
|
5
|
+
export * from './statements.js';
|
|
6
|
+
export interface IPostgresTransactionContext extends ITransactionContext {
|
|
7
|
+
connection: pg.PoolClient;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Rewrites the `?` placeholders every compiler emits into the `$1..$n` positional
|
|
11
|
+
* parameters the pg protocol requires. Same brute-force walk the MSSQL driver does for
|
|
12
|
+
* its `@p` parameters — the compilers bind every user value, so a literal `?` does not
|
|
13
|
+
* appear in generated SQL outside of a placeholder position.
|
|
14
|
+
*/
|
|
15
|
+
export declare function toPositionalParameters(stmt: string): string;
|
|
16
|
+
export declare class PostgresServerResponseMapper extends ServerResponseMapper {
|
|
17
|
+
read(data: any, pkNames?: string[]): {
|
|
18
|
+
RowsAffected: any;
|
|
19
|
+
LastInsertId: any;
|
|
20
|
+
Returning: any;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export declare class PostgresOrmDriver extends SqlDriver {
|
|
24
|
+
protected Pool: pg.Pool;
|
|
25
|
+
/**
|
|
26
|
+
* Postgres parses all four standard levels; READ UNCOMMITTED is accepted and behaves as
|
|
27
|
+
* READ COMMITTED, which is the standard-permitted upgrade, so it is not refused here.
|
|
28
|
+
*/
|
|
29
|
+
readonly SupportedIsolationLevels: IsolationLevel[];
|
|
30
|
+
/**
|
|
31
|
+
* pg hands NUMERIC/DECIMAL and BIGINT back as STRINGS: both can exceed 2^53, where a
|
|
32
|
+
* float loses exactly the precision those types exist to keep, so node-postgres refuses
|
|
33
|
+
* to guess. No converter along the way changes that, so the RESPONSE schema has to say
|
|
34
|
+
* the same thing as the runtime. Reads only — on the request side these stay numbers.
|
|
35
|
+
*/
|
|
36
|
+
readonly ResponseSchemaTypes: Readonly<Record<string, unknown>>;
|
|
37
|
+
executeOnDb(stmt: string, params: any[], context: QueryContext): Promise<any>;
|
|
38
|
+
protected isRetryableError(err: unknown): boolean;
|
|
39
|
+
protected _executeOnDbOnce(stmt: string, params: any[], context: QueryContext): Promise<any>;
|
|
40
|
+
supportedFeatures(): ISupportedFeature;
|
|
41
|
+
resolve(): void;
|
|
42
|
+
/** pg.Pool publishes its bookkeeping — no private-field spelunking needed here. */
|
|
43
|
+
poolMetrics(): IPoolMetrics;
|
|
44
|
+
ping(): Promise<boolean>;
|
|
45
|
+
connect(): Promise<OrmDriver>;
|
|
46
|
+
disconnect(): Promise<OrmDriver>;
|
|
47
|
+
tableInfo(name: string, schema?: string): Promise<IColumnDescriptor[]>;
|
|
48
|
+
/**
|
|
49
|
+
* Pulls the pooled client out of a transaction context. The base class only ever hands
|
|
50
|
+
* us contexts this driver's own `_begin` produced.
|
|
51
|
+
*/
|
|
52
|
+
private txConnection;
|
|
53
|
+
protected _begin(options?: ITransactionOptions): Promise<ITransactionContext>;
|
|
54
|
+
protected _commit(ctx: ITransactionContext): Promise<void>;
|
|
55
|
+
protected _rollback(ctx: ITransactionContext): Promise<void>;
|
|
56
|
+
protected _savepoint(ctx: ITransactionContext, name: string): Promise<void>;
|
|
57
|
+
protected _releaseSavepoint(ctx: ITransactionContext, name: string): Promise<void>;
|
|
58
|
+
protected _rollbackToSavepoint(ctx: ITransactionContext, name: string): Promise<void>;
|
|
59
|
+
protected _dispose(ctx: ITransactionContext): Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAqC,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAmB,YAAY,EAAsR,MAAM,cAAc,CAAC;AACngB,OAAO,EAAE,SAAS,EAAqH,MAAM,kBAAkB,CAAC;AAChK,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAEhC,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;CAC3B;AASD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,qBAAa,4BAA6B,SAAQ,oBAAoB;IAC7D,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE;;;;MAqBxC;CACF;AAED,qBAEa,iBAAkB,SAAQ,SAAS;IAC9C,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;IAExB;;;OAGG;IACH,SAAgB,wBAAwB,EAAE,cAAc,EAAE,CAA6E;IAEvI;;;;;OAKG;IACH,SAAgB,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAIpE;IAEK,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAInF;IAED,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAsBhD;IAED,UAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CA4DjG;IAEM,iBAAiB,IAAI,iBAAiB,CAW5C;IAEM,OAAO,SA+Bb;IAED,mFAAmF;IAC5E,WAAW,IAAI,YAAY,CAMjC;IAEY,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CASpC;IAEY,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CA6CzC;IAEY,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAU5C;IAEY,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAyDlF;IAED;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB,UAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiBlF;IAED,UAAgB,OAAO,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/D;IAED,UAAgB,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;IAID,UAAgB,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;IAED,UAAgB,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;IAED,UAAgB,oBAAoB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F;IAED,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1D;CACF"}
|