Comparing version 0.9.14 to 0.9.15
{ | ||
"name": "remult", | ||
"version": "0.9.14", | ||
"version": "0.9.15", | ||
"description": "remult core lib", | ||
@@ -5,0 +5,0 @@ "homepage": "https://remult.dev/", |
@@ -16,3 +16,2 @@ import { SqlDatabase, SqlCommand, SqlImplementation, EntityMetadata, FieldMetadata } from '../'; | ||
constructor(pool: PostgresPool); | ||
insertAndReturnAutoIncrementId(command: SqlCommand, insertStatementString: string, entity: EntityMetadata): Promise<number>; | ||
transaction(action: (dataProvider: SqlImplementation) => Promise<void>): Promise<void>; | ||
@@ -19,0 +18,0 @@ } |
@@ -27,24 +27,2 @@ "use strict"; | ||
}; | ||
PostgresDataProvider.prototype.insertAndReturnAutoIncrementId = function (command, insertStatementString, entity) { | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var r, _a, _b, _c, _d; | ||
return tslib_1.__generator(this, function (_e) { | ||
switch (_e.label) { | ||
case 0: return [4 /*yield*/, command.execute(insertStatementString)]; | ||
case 1: | ||
r = _e.sent(); | ||
_b = (_a = this.createCommand()).execute; | ||
_c = "SELECT currval(pg_get_serial_sequence('"; | ||
return [4 /*yield*/, entity.getDbName()]; | ||
case 2: | ||
_d = _c + (_e.sent()) + "','"; | ||
return [4 /*yield*/, entity.idMetadata.field.getDbName()]; | ||
case 3: return [4 /*yield*/, _b.apply(_a, [_d + (_e.sent()) + "'));"])]; | ||
case 4: | ||
r = _e.sent(); | ||
return [2 /*return*/, +r.rows[0].currval]; | ||
} | ||
}); | ||
}); | ||
}; | ||
PostgresDataProvider.prototype.transaction = function (action) { | ||
@@ -68,3 +46,2 @@ return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
transaction: function () { throw "nested transactions not allowed"; }, | ||
insertAndReturnAutoIncrementId: this.insertAndReturnAutoIncrementId, | ||
getLimitSqlSyntax: this.getLimitSqlSyntax | ||
@@ -71,0 +48,0 @@ })]; |
@@ -81,3 +81,2 @@ "use strict"; | ||
transaction: function (z) { return x.transaction(z); }, | ||
insertAndReturnAutoIncrementId: x.insertAndReturnAutoIncrementId | ||
}))]; | ||
@@ -189,65 +188,34 @@ case 2: | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var select, colKeys, _a, _b, x, _c, e_1_1, _d, _e, r, where, _f, first, segs, _loop_1, _g, _h, s, segs_1, segs_1_1, c, _j, e_2_1, page; | ||
var e_1, _k, e_3, _l, e_2, _m; | ||
return tslib_1.__generator(this, function (_o) { | ||
switch (_o.label) { | ||
var _a, colKeys, select, _b, _c, r, where, _d, first, segs, _loop_1, _e, _f, s, segs_1, segs_1_1, c, _g, e_1_1, page; | ||
var e_2, _h, e_1, _j; | ||
var _this = this; | ||
return tslib_1.__generator(this, function (_k) { | ||
switch (_k.label) { | ||
case 0: return [4 /*yield*/, this.iAmUsed()]; | ||
case 1: | ||
_o.sent(); | ||
select = 'select '; | ||
colKeys = []; | ||
_o.label = 2; | ||
_k.sent(); | ||
return [4 /*yield*/, this.buildSelect()]; | ||
case 2: | ||
_o.trys.push([2, 8, 9, 10]); | ||
_a = tslib_1.__values(this.entity.fields), _b = _a.next(); | ||
_o.label = 3; | ||
_a = _k.sent(), colKeys = _a.colKeys, select = _a.select; | ||
select = 'select ' + select; | ||
_b = select; | ||
_c = '\n from '; | ||
return [4 /*yield*/, this.entity.getDbName()]; | ||
case 3: | ||
if (!!_b.done) return [3 /*break*/, 7]; | ||
x = _b.value; | ||
if (!x.isServerExpression) return [3 /*break*/, 4]; | ||
return [3 /*break*/, 6]; | ||
case 4: | ||
if (colKeys.length > 0) | ||
select += ', '; | ||
_c = select; | ||
return [4 /*yield*/, x.getDbName()]; | ||
case 5: | ||
select = _c + _o.sent(); | ||
colKeys.push(x); | ||
_o.label = 6; | ||
case 6: | ||
_b = _a.next(); | ||
return [3 /*break*/, 3]; | ||
case 7: return [3 /*break*/, 10]; | ||
case 8: | ||
e_1_1 = _o.sent(); | ||
e_1 = { error: e_1_1 }; | ||
return [3 /*break*/, 10]; | ||
case 9: | ||
try { | ||
if (_b && !_b.done && (_k = _a.return)) _k.call(_a); | ||
} | ||
finally { if (e_1) throw e_1.error; } | ||
return [7 /*endfinally*/]; | ||
case 10: | ||
_d = select; | ||
_e = '\n from '; | ||
return [4 /*yield*/, this.entity.getDbName()]; | ||
case 11: | ||
select = _d + (_e + (_o.sent())); | ||
select = _b + (_c + (_k.sent())); | ||
r = this.sql.createCommand(); | ||
if (!options) return [3 /*break*/, 22]; | ||
if (!options.where) return [3 /*break*/, 13]; | ||
if (!options) return [3 /*break*/, 14]; | ||
if (!options.where) return [3 /*break*/, 5]; | ||
where = new filter_consumer_bridge_to_sql_request_1.FilterConsumerBridgeToSqlRequest(r); | ||
options.where.__applyToConsumer(where); | ||
_f = select; | ||
_d = select; | ||
return [4 /*yield*/, where.resolveWhere()]; | ||
case 12: | ||
select = _f + _o.sent(); | ||
_o.label = 13; | ||
case 13: | ||
case 4: | ||
select = _d + _k.sent(); | ||
_k.label = 5; | ||
case 5: | ||
if (options.limit) { | ||
options.orderBy = sort_1.Sort.createUniqueSort(this.entity, options.orderBy); | ||
} | ||
if (!options.orderBy) return [3 /*break*/, 21]; | ||
if (!options.orderBy) return [3 /*break*/, 13]; | ||
first = true; | ||
@@ -263,21 +231,21 @@ segs = []; | ||
try { | ||
for (_g = tslib_1.__values(options.orderBy.Segments), _h = _g.next(); !_h.done; _h = _g.next()) { | ||
s = _h.value; | ||
for (_e = tslib_1.__values(options.orderBy.Segments), _f = _e.next(); !_f.done; _f = _e.next()) { | ||
s = _f.value; | ||
_loop_1(s); | ||
} | ||
} | ||
catch (e_3_1) { e_3 = { error: e_3_1 }; } | ||
catch (e_2_1) { e_2 = { error: e_2_1 }; } | ||
finally { | ||
try { | ||
if (_h && !_h.done && (_l = _g.return)) _l.call(_g); | ||
if (_f && !_f.done && (_h = _e.return)) _h.call(_e); | ||
} | ||
finally { if (e_3) throw e_3.error; } | ||
finally { if (e_2) throw e_2.error; } | ||
} | ||
_o.label = 14; | ||
case 14: | ||
_o.trys.push([14, 19, 20, 21]); | ||
_k.label = 6; | ||
case 6: | ||
_k.trys.push([6, 11, 12, 13]); | ||
segs_1 = tslib_1.__values(segs), segs_1_1 = segs_1.next(); | ||
_o.label = 15; | ||
case 15: | ||
if (!!segs_1_1.done) return [3 /*break*/, 18]; | ||
_k.label = 7; | ||
case 7: | ||
if (!!segs_1_1.done) return [3 /*break*/, 10]; | ||
c = segs_1_1.value; | ||
@@ -290,24 +258,24 @@ if (first) { | ||
select += ', '; | ||
_j = select; | ||
_g = select; | ||
return [4 /*yield*/, c.field.getDbName()]; | ||
case 16: | ||
select = _j + _o.sent(); | ||
case 8: | ||
select = _g + _k.sent(); | ||
if (c.isDescending) | ||
select += ' desc'; | ||
_o.label = 17; | ||
case 17: | ||
_k.label = 9; | ||
case 9: | ||
segs_1_1 = segs_1.next(); | ||
return [3 /*break*/, 15]; | ||
case 18: return [3 /*break*/, 21]; | ||
case 19: | ||
e_2_1 = _o.sent(); | ||
e_2 = { error: e_2_1 }; | ||
return [3 /*break*/, 21]; | ||
case 20: | ||
return [3 /*break*/, 7]; | ||
case 10: return [3 /*break*/, 13]; | ||
case 11: | ||
e_1_1 = _k.sent(); | ||
e_1 = { error: e_1_1 }; | ||
return [3 /*break*/, 13]; | ||
case 12: | ||
try { | ||
if (segs_1_1 && !segs_1_1.done && (_m = segs_1.return)) _m.call(segs_1); | ||
if (segs_1_1 && !segs_1_1.done && (_j = segs_1.return)) _j.call(segs_1); | ||
} | ||
finally { if (e_2) throw e_2.error; } | ||
finally { if (e_1) throw e_1.error; } | ||
return [7 /*endfinally*/]; | ||
case 21: | ||
case 13: | ||
if (options.limit) { | ||
@@ -321,16 +289,6 @@ page = 1; | ||
} | ||
_o.label = 22; | ||
case 22: return [2 /*return*/, r.execute(select).then(function (r) { | ||
_k.label = 14; | ||
case 14: return [2 /*return*/, r.execute(select).then(function (r) { | ||
return r.rows.map(function (y) { | ||
var result = {}; | ||
for (var index = 0; index < colKeys.length; index++) { | ||
var col = colKeys[index]; | ||
try { | ||
result[col.key] = col.valueConverter.fromDb(y[r.getColumnKeyInResultForIndexInSelect(index)]); | ||
} | ||
catch (err) { | ||
throw new Error("Failed to load from db:" + col.key + "\r\n" + err); | ||
} | ||
} | ||
return result; | ||
return _this.buildResultRow(colKeys, y, r); | ||
}); | ||
@@ -342,12 +300,72 @@ })]; | ||
}; | ||
ActualSQLServerDataProvider.prototype.buildResultRow = function (colKeys, y, r) { | ||
var result = {}; | ||
for (var index = 0; index < colKeys.length; index++) { | ||
var col = colKeys[index]; | ||
try { | ||
result[col.key] = col.valueConverter.fromDb(y[r.getColumnKeyInResultForIndexInSelect(index)]); | ||
} | ||
catch (err) { | ||
throw new Error("Failed to load from db:" + col.key + "\r\n" + err); | ||
} | ||
} | ||
return result; | ||
}; | ||
ActualSQLServerDataProvider.prototype.buildSelect = function () { | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var select, colKeys, _a, _b, x, _c, e_3_1; | ||
var e_3, _d; | ||
return tslib_1.__generator(this, function (_e) { | ||
switch (_e.label) { | ||
case 0: | ||
select = ''; | ||
colKeys = []; | ||
_e.label = 1; | ||
case 1: | ||
_e.trys.push([1, 7, 8, 9]); | ||
_a = tslib_1.__values(this.entity.fields), _b = _a.next(); | ||
_e.label = 2; | ||
case 2: | ||
if (!!_b.done) return [3 /*break*/, 6]; | ||
x = _b.value; | ||
if (!x.isServerExpression) return [3 /*break*/, 3]; | ||
return [3 /*break*/, 5]; | ||
case 3: | ||
if (colKeys.length > 0) | ||
select += ', '; | ||
_c = select; | ||
return [4 /*yield*/, x.getDbName()]; | ||
case 4: | ||
select = _c + _e.sent(); | ||
colKeys.push(x); | ||
_e.label = 5; | ||
case 5: | ||
_b = _a.next(); | ||
return [3 /*break*/, 2]; | ||
case 6: return [3 /*break*/, 9]; | ||
case 7: | ||
e_3_1 = _e.sent(); | ||
e_3 = { error: e_3_1 }; | ||
return [3 /*break*/, 9]; | ||
case 8: | ||
try { | ||
if (_b && !_b.done && (_d = _a.return)) _d.call(_a); | ||
} | ||
finally { if (e_3) throw e_3.error; } | ||
return [7 /*endfinally*/]; | ||
case 9: return [2 /*return*/, { colKeys: colKeys, select: select }]; | ||
} | ||
}); | ||
}); | ||
}; | ||
ActualSQLServerDataProvider.prototype.update = function (id, data) { | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var r, f, statement, _a, added, resultFilter, _b, _c, x, v, _d, e_4_1, _e; | ||
var e_4, _f; | ||
var r, f, statement, _a, added, _b, _c, x, v, _d, e_4_1, _e, _f, colKeys, select; | ||
var e_4, _g; | ||
var _this = this; | ||
return tslib_1.__generator(this, function (_g) { | ||
switch (_g.label) { | ||
return tslib_1.__generator(this, function (_h) { | ||
switch (_h.label) { | ||
case 0: return [4 /*yield*/, this.iAmUsed()]; | ||
case 1: | ||
_g.sent(); | ||
_h.sent(); | ||
r = this.sql.createCommand(); | ||
@@ -359,12 +377,9 @@ f = new filter_consumer_bridge_to_sql_request_1.FilterConsumerBridgeToSqlRequest(r); | ||
case 2: | ||
statement = _a + (_g.sent()) + ' set '; | ||
statement = _a + (_h.sent()) + ' set '; | ||
added = false; | ||
resultFilter = this.entity.idMetadata.getIdFilter(id); | ||
if (data.id != undefined) | ||
resultFilter = this.entity.idMetadata.getIdFilter(data.id); | ||
_g.label = 3; | ||
_h.label = 3; | ||
case 3: | ||
_g.trys.push([3, 10, 11, 12]); | ||
_h.trys.push([3, 10, 11, 12]); | ||
_b = tslib_1.__values(this.entity.fields), _c = _b.next(); | ||
_g.label = 4; | ||
_h.label = 4; | ||
case 4: | ||
@@ -374,7 +389,6 @@ if (!!_c.done) return [3 /*break*/, 9]; | ||
if (x instanceof column_1.CompoundIdField) { | ||
resultFilter = x.resultIdFilter(id, data); | ||
} | ||
return [4 /*yield*/, isDbReadonly(x)]; | ||
case 5: | ||
if (!_g.sent()) return [3 /*break*/, 6]; | ||
if (!_h.sent()) return [3 /*break*/, 6]; | ||
return [3 /*break*/, 8]; | ||
@@ -392,4 +406,4 @@ case 6: | ||
case 7: | ||
statement = _d + ((_g.sent()) + ' = ' + r.addParameterAndReturnSqlToken(v)); | ||
_g.label = 8; | ||
statement = _d + ((_h.sent()) + ' = ' + r.addParameterAndReturnSqlToken(v)); | ||
_h.label = 8; | ||
case 8: | ||
@@ -400,3 +414,3 @@ _c = _b.next(); | ||
case 10: | ||
e_4_1 = _g.sent(); | ||
e_4_1 = _h.sent(); | ||
e_4 = { error: e_4_1 }; | ||
@@ -406,3 +420,3 @@ return [3 /*break*/, 12]; | ||
try { | ||
if (_c && !_c.done && (_f = _b.return)) _f.call(_b); | ||
if (_c && !_c.done && (_g = _b.return)) _g.call(_b); | ||
} | ||
@@ -415,5 +429,9 @@ finally { if (e_4) throw e_4.error; } | ||
case 13: | ||
statement = _e + _g.sent(); | ||
return [2 /*return*/, r.execute(statement).then(function () { | ||
return _this.find({ where: filter_interfaces_1.Filter.fromEntityFilter(_this.entity, resultFilter) }).then(function (y) { return y[0]; }); | ||
statement = _e + _h.sent(); | ||
return [4 /*yield*/, this.buildSelect()]; | ||
case 14: | ||
_f = _h.sent(), colKeys = _f.colKeys, select = _f.select; | ||
statement += ' returning ' + select; | ||
return [2 /*return*/, r.execute(statement).then(function (sqlResult) { | ||
return _this.buildResultRow(colKeys, sqlResult.rows[0], sqlResult); | ||
})]; | ||
@@ -450,10 +468,10 @@ } | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var r, cols, vals, added, resultFilter, _a, _b, x, v, _c, e_5_1, statement, _d, newId_1; | ||
var e_5, _e; | ||
var r, cols, vals, added, _a, _b, x, v, _c, e_5_1, statement, _d, _e, colKeys, select; | ||
var e_5, _f; | ||
var _this = this; | ||
return tslib_1.__generator(this, function (_f) { | ||
switch (_f.label) { | ||
return tslib_1.__generator(this, function (_g) { | ||
switch (_g.label) { | ||
case 0: return [4 /*yield*/, this.iAmUsed()]; | ||
case 1: | ||
_f.sent(); | ||
_g.sent(); | ||
r = this.sql.createCommand(); | ||
@@ -463,11 +481,7 @@ cols = ''; | ||
added = false; | ||
if (this.entity.idMetadata.field instanceof column_1.CompoundIdField) | ||
resultFilter = this.entity.idMetadata.field.resultIdFilter(undefined, data); | ||
else | ||
resultFilter = filter_interfaces_1.Filter.fromEntityFilter(this.entity, this.entity.idMetadata.getIdFilter(data[this.entity.idMetadata.field.key])); | ||
_f.label = 2; | ||
_g.label = 2; | ||
case 2: | ||
_f.trys.push([2, 9, 10, 11]); | ||
_g.trys.push([2, 9, 10, 11]); | ||
_a = tslib_1.__values(this.entity.fields), _b = _a.next(); | ||
_f.label = 3; | ||
_g.label = 3; | ||
case 3: | ||
@@ -478,3 +492,3 @@ if (!!_b.done) return [3 /*break*/, 8]; | ||
case 4: | ||
if (!_f.sent()) return [3 /*break*/, 5]; | ||
if (!_g.sent()) return [3 /*break*/, 5]; | ||
return [3 /*break*/, 7]; | ||
@@ -493,5 +507,5 @@ case 5: | ||
case 6: | ||
cols = _c + _f.sent(); | ||
cols = _c + _g.sent(); | ||
vals += r.addParameterAndReturnSqlToken(v); | ||
_f.label = 7; | ||
_g.label = 7; | ||
case 7: | ||
@@ -502,3 +516,3 @@ _b = _a.next(); | ||
case 9: | ||
e_5_1 = _f.sent(); | ||
e_5_1 = _g.sent(); | ||
e_5 = { error: e_5_1 }; | ||
@@ -508,3 +522,3 @@ return [3 /*break*/, 11]; | ||
try { | ||
if (_b && !_b.done && (_e = _a.return)) _e.call(_a); | ||
if (_b && !_b.done && (_f = _a.return)) _f.call(_a); | ||
} | ||
@@ -517,16 +531,9 @@ finally { if (e_5) throw e_5.error; } | ||
case 12: | ||
statement = _d + (_f.sent()) + " (" + cols + ") values (" + vals + ")"; | ||
if (!this.entity.options.dbAutoIncrementId) return [3 /*break*/, 14]; | ||
return [4 /*yield*/, this.strategy.insertAndReturnAutoIncrementId(r, statement, this.entity)]; | ||
statement = _d + (_g.sent()) + " (" + cols + ") values (" + vals + ")"; | ||
return [4 /*yield*/, this.buildSelect()]; | ||
case 13: | ||
newId_1 = _f.sent(); | ||
resultFilter = new filter_interfaces_1.Filter(function (x) { return x.isEqualTo(_this.entity.idMetadata.field, newId_1); }); | ||
return [3 /*break*/, 16]; | ||
case 14: return [4 /*yield*/, r.execute(statement)]; | ||
case 15: | ||
_f.sent(); | ||
_f.label = 16; | ||
case 16: return [2 /*return*/, this.find({ where: resultFilter }).then(function (y) { | ||
return y[0]; | ||
})]; | ||
_e = _g.sent(), colKeys = _e.colKeys, select = _e.select; | ||
statement += ' returning ' + select; | ||
return [4 /*yield*/, r.execute(statement).then(function (sql) { return _this.buildResultRow(colKeys, sql.rows[0], sql); })]; | ||
case 14: return [2 /*return*/, _g.sent()]; | ||
} | ||
@@ -533,0 +540,0 @@ }); |
@@ -10,3 +10,2 @@ import { __RowsOfDataForTesting } from "../__RowsOfDataForTesting"; | ||
constructor(databaseName: string); | ||
insertAndReturnAutoIncrementId(command: SqlCommand, insertStatementString: string, entity: EntityMetadata): Promise<number>; | ||
getLimitSqlSyntax(limit: number, offset: number): string; | ||
@@ -13,0 +12,0 @@ entityIsUsedForTheFirstTime(entity: EntityMetadata): Promise<void>; |
@@ -13,15 +13,2 @@ "use strict"; | ||
} | ||
WebSqlDataProvider.prototype.insertAndReturnAutoIncrementId = function (command, insertStatementString, entity) { | ||
return tslib_1.__awaiter(this, void 0, void 0, function () { | ||
var r; | ||
return tslib_1.__generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, command.execute(insertStatementString)]; | ||
case 1: | ||
r = _a.sent(); | ||
return [2 /*return*/, r.r.insertId]; | ||
} | ||
}); | ||
}); | ||
}; | ||
WebSqlDataProvider.prototype.getLimitSqlSyntax = function (limit, offset) { | ||
@@ -28,0 +15,0 @@ return ' limit ' + limit + ' offset ' + offset; |
import { EntityMetadata } from './remult3'; | ||
export interface SqlImplementation { | ||
insertAndReturnAutoIncrementId(command: SqlCommand, insertStatementString: string, entity: EntityMetadata<any>): Promise<any>; | ||
getLimitSqlSyntax(limit: number, offset: number): any; | ||
@@ -5,0 +4,0 @@ createCommand(): SqlCommand; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
880015
13327