backend-plus 2.7.0-beta.2 → 2.7.0-beta.3

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.
@@ -0,0 +1,433 @@
1
+ //import { TableDefinition } from "backend-plus";
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.WebsqlDb = exports.detectedFeatures = void 0;
47
+ //x// <amd-dependency path="../../../node_modules/like-ar/like-ar.d.ts" name="likeAr"/>
48
+ //x// <reference path="../../node_modules/like-ar/like-ar.d.ts" />
49
+ /// <reference path="../node_modules/types.d.ts/modules/myOwn/in-myOwn.d.ts" />
50
+ /// <reference path="../../../lib/in-backend-plus.d.ts" />
51
+ /// <reference path="../../../lib/backend-plus.d.ts" />
52
+ /// <reference path="../../lib/in-backend-plus.d.ts" />
53
+ /// <reference path="../../lib/backend-plus.d.ts" />
54
+ /// <reference path="../lib/in-backend-plus.d.ts" />
55
+ /// <reference path="../lib/backend-plus.d.ts" />
56
+ /// <reference path="lib/in-backend-plus.d.ts" />
57
+ /// <reference path="lib/backend-plus.d.ts" />
58
+ const likeAr = __importStar(require("like-ar"));
59
+ const best_globals_1 = require("best-globals");
60
+ const SqlTools = __importStar(require("sql-tools"));
61
+ exports.detectedFeatures = {
62
+ needToCopyResults: null
63
+ };
64
+ class WebsqlDb {
65
+ constructor(name) {
66
+ this.name = name;
67
+ var version = 1.0;
68
+ var dbName = this.name;
69
+ var dbDisplayName = this.name;
70
+ var dbSize = 2 * 1024 * 1024;
71
+ try {
72
+ this.db = openDatabase(dbName, version, dbDisplayName, dbSize);
73
+ this.wait4detectedFeatures = this.detectFeatures();
74
+ }
75
+ catch (err) {
76
+ console.log(err.message);
77
+ throw err;
78
+ }
79
+ }
80
+ detectFeatures() {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ var detectedFeatures = { needToCopyResults: false };
83
+ var detectElement = { feature: 'need_to_copy_results', value: false };
84
+ try {
85
+ var tableDef = {
86
+ name: '_detect',
87
+ fields: [
88
+ { name: 'feature', typeName: 'text' },
89
+ { name: 'value', typeName: 'boolean' }
90
+ ],
91
+ primaryKey: ['feature']
92
+ };
93
+ yield this.registerStructure(tableDef);
94
+ yield this.putOne('_detect', detectElement);
95
+ yield this.getOne('_detect', ['need_to_copy_results'], true);
96
+ }
97
+ catch (err) {
98
+ detectElement.value = true;
99
+ detectedFeatures.needToCopyResults = true;
100
+ yield this.putOne('_detect', detectElement);
101
+ }
102
+ return detectedFeatures;
103
+ });
104
+ }
105
+ generateSqlForTableDef(tableDef) {
106
+ var typeDb = {
107
+ integer: 'integer',
108
+ number: 'real',
109
+ date: 'text',
110
+ boolean: 'text',
111
+ text: 'text',
112
+ jsonb: 'text',
113
+ json: 'text'
114
+ };
115
+ var lines = [];
116
+ var consLines = [];
117
+ lines.push('CREATE TABLE IF NOT EXISTS ' + SqlTools.quoteIdent(tableDef.name) + ' (');
118
+ var fields = [];
119
+ tableDef.fields.forEach(function (fieldDef) {
120
+ var fieldType = typeDb[fieldDef.typeName] || '"' + fieldDef.typeName + '"';
121
+ if (fieldDef.sizeByte == 4) {
122
+ fieldType = 'integer';
123
+ }
124
+ fields.push(' ' + SqlTools.quoteIdent(fieldDef.name) +
125
+ ' ' + fieldType +
126
+ (fieldDef.defaultValue != null ? ' default ' + SqlTools.quoteLiteral(fieldDef.defaultValue) : '') +
127
+ (fieldDef.defaultDbValue != null ? ' default ' + fieldDef.defaultDbValue : ''));
128
+ if (fieldDef.typeName === 'text' && !fieldDef.allowEmptyText) {
129
+ consLines.push('alter table ' + SqlTools.quoteIdent(tableDef.name) +
130
+ ' add constraint ' + SqlTools.quoteIdent(fieldDef.name + "<>''") +
131
+ ' check (' + SqlTools.quoteIdent(fieldDef.name) + "<>'');");
132
+ }
133
+ if (fieldDef.nullable === false) {
134
+ consLines.push('alter table ' + SqlTools.quoteIdent(tableDef.name) +
135
+ ' alter column ' + SqlTools.quoteIdent(fieldDef.name) + ' set not null;');
136
+ }
137
+ });
138
+ lines.push(fields.join(', \n'));
139
+ if (tableDef.primaryKey) {
140
+ lines.push(', primary key (' + tableDef.primaryKey.map(function (name) { return SqlTools.quoteIdent(name); }).join(', ') + ')');
141
+ }
142
+ lines.push(');');
143
+ return lines.join('\n'); //+'\n-- conss\n' + consLines.join('\n')
144
+ }
145
+ static deleteDatabase(name) {
146
+ //TODO
147
+ return Promise.resolve();
148
+ }
149
+ executeQuery(sql, params) {
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ var db = this.db;
152
+ return new Promise(function (resolve, reject) {
153
+ if (!db)
154
+ return reject('no database.');
155
+ var result;
156
+ db.transaction(function (tx) {
157
+ tx.executeSql(sql, params || [], function (_tx, res) {
158
+ result = res.rows;
159
+ });
160
+ }, function (err) {
161
+ reject(err);
162
+ }, function success() {
163
+ resolve(result);
164
+ });
165
+ });
166
+ });
167
+ }
168
+ ;
169
+ executeQueries(sql, data) {
170
+ return __awaiter(this, void 0, void 0, function* () {
171
+ var db = this.db;
172
+ return new Promise(function (resolve, reject) {
173
+ if (!db)
174
+ return reject('no database.');
175
+ db.transaction(function (tx) {
176
+ return __awaiter(this, void 0, void 0, function* () {
177
+ data.forEach(function (data) {
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ tx.executeSql(sql, data);
180
+ });
181
+ });
182
+ });
183
+ }, function (tx, err) {
184
+ reject(err);
185
+ }, function (tx, res) {
186
+ resolve();
187
+ });
188
+ });
189
+ });
190
+ }
191
+ ;
192
+ registerStructure(tableDef) {
193
+ return __awaiter(this, void 0, void 0, function* () {
194
+ yield this.executeQuery(`CREATE TABLE IF NOT EXISTS _structures (name string primary key, def string not null);`, []);
195
+ yield this.executeQuery(`INSERT OR REPLACE INTO _structures (name, def) values (?, ?);`, [tableDef.name, JSON.stringify(tableDef)]);
196
+ yield this.executeQuery(`DROP TABLE IF EXISTS ` + SqlTools.quoteIdent(tableDef.name), []);
197
+ yield this.executeQuery(this.generateSqlForTableDef(tableDef), []);
198
+ });
199
+ }
200
+ getStructure(tableName) {
201
+ return __awaiter(this, void 0, void 0, function* () {
202
+ var result = yield this.executeQuery("SELECT * from _structures where name = ?", [tableName]);
203
+ if (result.length) {
204
+ return JSON.parse(result.item(0).def);
205
+ }
206
+ else {
207
+ return undefined;
208
+ }
209
+ });
210
+ }
211
+ existsStructure(tableName) {
212
+ return __awaiter(this, void 0, void 0, function* () {
213
+ var tableDef = yield this.getStructure(tableName);
214
+ return tableDef ? true : false;
215
+ });
216
+ }
217
+ convertSQLResultSetRowListToArray(rowResultSetList, copyResults) {
218
+ var arr = [];
219
+ for (var i = 0; i < rowResultSetList.length; i++) {
220
+ var result = rowResultSetList.item(i);
221
+ if (copyResults) {
222
+ result = (0, best_globals_1.changing)(result, {});
223
+ }
224
+ arr.push(result);
225
+ }
226
+ return arr;
227
+ }
228
+ fieldIsNotSupported(fieldName, notSupportedFields) {
229
+ var isNotSupported = notSupportedFields.find(function (field) {
230
+ return field.name == fieldName;
231
+ });
232
+ return isNotSupported ? true : false;
233
+ }
234
+ getNotSupportedFields(tableDef) {
235
+ var jsonbFields = tableDef.fields.filter(function (field) {
236
+ return field.typeName == 'jsonb' || field.typeName == 'date' || field.typeName == 'timestamp' || field.typeName == 'boolean';
237
+ });
238
+ return jsonbFields;
239
+ }
240
+ convertNotSupportedFields(records, notSupportedFields) {
241
+ records.forEach(function (row) {
242
+ if (notSupportedFields) {
243
+ notSupportedFields.forEach(function (notSupportedField) {
244
+ var fieldName = notSupportedField.name;
245
+ row[fieldName] = JSON.parse(row[fieldName]);
246
+ });
247
+ }
248
+ });
249
+ return records;
250
+ }
251
+ getOneIfExists(tableName, key) {
252
+ return __awaiter(this, void 0, void 0, function* () {
253
+ try {
254
+ return yield this.getOne(tableName, key);
255
+ }
256
+ catch (err) {
257
+ return undefined;
258
+ }
259
+ });
260
+ }
261
+ getOne(tableName, key, ignoreDetectFeatures) {
262
+ return __awaiter(this, void 0, void 0, function* () {
263
+ ignoreDetectFeatures = ignoreDetectFeatures || false;
264
+ var tableDef = yield this.getStructure(tableName);
265
+ var jsonbFields = this.getNotSupportedFields(tableDef);
266
+ var fieldNames = tableDef.primaryKey;
267
+ var whereExpr = [];
268
+ fieldNames.forEach(function (fieldName, i) {
269
+ whereExpr.push(fieldName + '=' + SqlTools.quoteLiteral(key[i]));
270
+ });
271
+ var sql = `SELECT *
272
+ from ` + SqlTools.quoteIdent(tableName) + `
273
+ where ` + whereExpr.join(' and ');
274
+ var result = yield this.executeQuery(sql, []);
275
+ var detectedFeatures;
276
+ if (!ignoreDetectFeatures) {
277
+ detectedFeatures = yield this.wait4detectedFeatures;
278
+ }
279
+ var copyResults = !ignoreDetectFeatures && detectedFeatures.needToCopyResults;
280
+ var convertedResult = this.convertNotSupportedFields(this.convertSQLResultSetRowListToArray(result, copyResults), jsonbFields);
281
+ if (convertedResult[0]) {
282
+ return convertedResult[0];
283
+ }
284
+ else {
285
+ throw Error('no existe el elemento');
286
+ }
287
+ });
288
+ }
289
+ getChild(tableName, parentKey) {
290
+ return __awaiter(this, void 0, void 0, function* () {
291
+ var tableDef = yield this.getStructure(tableName);
292
+ var jsonbFields = this.getNotSupportedFields(tableDef);
293
+ var fieldNames = tableDef.primaryKey;
294
+ var whereExpr = [];
295
+ parentKey.forEach(function (key, i) {
296
+ whereExpr.push(fieldNames[i] + '=' + SqlTools.quoteLiteral(key));
297
+ });
298
+ var sql = `SELECT * from ` + SqlTools.quoteIdent(tableName);
299
+ if (parentKey.length) {
300
+ sql += ` where ` + whereExpr.join(' and ');
301
+ }
302
+ var result = yield this.executeQuery(sql, []);
303
+ var detectedFeatures = yield this.wait4detectedFeatures;
304
+ return this.convertNotSupportedFields(this.convertSQLResultSetRowListToArray(result, detectedFeatures.needToCopyResults), jsonbFields);
305
+ });
306
+ }
307
+ getAll(tableName) {
308
+ return __awaiter(this, void 0, void 0, function* () {
309
+ var tableDef = yield this.getStructure(tableName);
310
+ var jsonbFields = this.getNotSupportedFields(tableDef);
311
+ var results = yield this.executeQuery(`SELECT * from ` + SqlTools.quoteIdent(tableName), []);
312
+ var detectedFeatures = yield this.wait4detectedFeatures;
313
+ return this.convertNotSupportedFields(this.convertSQLResultSetRowListToArray(results, detectedFeatures.needToCopyResults), jsonbFields);
314
+ });
315
+ }
316
+ getAllStructures() {
317
+ return __awaiter(this, void 0, void 0, function* () {
318
+ var results = yield this.executeQuery(`SELECT * from _structures where name <> '_detect'`, []);
319
+ var structures = [];
320
+ for (var i = 0; i < results.length; i++) {
321
+ structures.push(JSON.parse(results.item(i).def));
322
+ }
323
+ return structures;
324
+ });
325
+ }
326
+ isEmpty(tableName) {
327
+ return __awaiter(this, void 0, void 0, function* () {
328
+ var result = yield this.executeQuery(`SELECT count(*) as cantidad from ` + SqlTools.quoteIdent(tableName), []);
329
+ return result.item(0).cantidad == 0;
330
+ });
331
+ }
332
+ putOne(tableName, element) {
333
+ return __awaiter(this, void 0, void 0, function* () {
334
+ var ldb = this;
335
+ var createPromiseForFK = function createPromiseForFK(fk) {
336
+ return Promise.resolve().then(function () {
337
+ return __awaiter(this, void 0, void 0, function* () {
338
+ var fkTableDef = yield ldb.getStructure(fk.references);
339
+ if (fkTableDef) {
340
+ var pk = [];
341
+ fk.fields.forEach(function (field) {
342
+ pk.push(element[field.source]);
343
+ });
344
+ var isFKCompleteInSource = fk.fields.filter(function (field) {
345
+ return element[field.source] == null;
346
+ }).length == 0;
347
+ if (isFKCompleteInSource) {
348
+ var fkRecord = yield ldb.getOneIfExists(fk.references, pk);
349
+ if (fkRecord) {
350
+ fk.displayFields.forEach(function (field) {
351
+ element[fk.alias + '__' + field] = fkRecord[field];
352
+ });
353
+ }
354
+ }
355
+ }
356
+ });
357
+ });
358
+ };
359
+ var tableDef = yield ldb.getStructure(tableName);
360
+ var jsonbFields = this.getNotSupportedFields(tableDef);
361
+ var promisesArray = [];
362
+ if (tableDef.foreignKeys) {
363
+ tableDef.foreignKeys.forEach(function (fk) {
364
+ return __awaiter(this, void 0, void 0, function* () {
365
+ promisesArray.push(createPromiseForFK(fk));
366
+ });
367
+ });
368
+ }
369
+ if (tableDef.softForeignKeys) {
370
+ tableDef.softForeignKeys.forEach(function (fk) {
371
+ return __awaiter(this, void 0, void 0, function* () {
372
+ promisesArray.push(createPromiseForFK(fk));
373
+ });
374
+ });
375
+ }
376
+ return yield Promise.all(promisesArray).then(function () {
377
+ return __awaiter(this, void 0, void 0, function* () {
378
+ var fieldNames = [];
379
+ var fieldValues = [];
380
+ var unquotedFieldValues = [];
381
+ likeAr(element).forEach(function (value, key) {
382
+ fieldNames.push(SqlTools.quoteIdent(key));
383
+ fieldValues.push(SqlTools.quoteLiteral(ldb.fieldIsNotSupported(key, jsonbFields) ? JSON.stringify(value) : value));
384
+ unquotedFieldValues.push(value);
385
+ });
386
+ yield ldb.executeQuery(`INSERT OR REPLACE INTO ` + SqlTools.quoteIdent(tableName) +
387
+ ` (` + fieldNames.join(',') + `) values (` + fieldValues.join(',') + `);`, []);
388
+ return element;
389
+ });
390
+ });
391
+ });
392
+ }
393
+ putMany(tableName, elements) {
394
+ return __awaiter(this, void 0, void 0, function* () {
395
+ var sql;
396
+ var ldb = this;
397
+ var data = [];
398
+ var tableDef = yield this.getStructure(tableName);
399
+ var jsonbFields = this.getNotSupportedFields(tableDef);
400
+ elements.forEach(function (element) {
401
+ if (!sql) {
402
+ var fieldNames = [];
403
+ }
404
+ var values = [];
405
+ likeAr(element).forEach(function (value, key) {
406
+ if (!sql) {
407
+ fieldNames.push(SqlTools.quoteIdent(key));
408
+ }
409
+ values.push(ldb.fieldIsNotSupported(key, jsonbFields) ? JSON.stringify(value) : value);
410
+ });
411
+ if (!sql) {
412
+ sql = `INSERT OR REPLACE INTO ` + SqlTools.quoteIdent(tableName) +
413
+ ` (` + fieldNames.join(',') + `) values (` + values.map(_ => '?').join(',') + `);`;
414
+ }
415
+ data.push(values);
416
+ });
417
+ yield this.executeQueries(sql, data);
418
+ });
419
+ }
420
+ close() {
421
+ return __awaiter(this, void 0, void 0, function* () {
422
+ //TODO
423
+ return Promise.resolve();
424
+ });
425
+ }
426
+ clear(tableName) {
427
+ return __awaiter(this, void 0, void 0, function* () {
428
+ yield this.executeQuery(`DELETE FROM ` + SqlTools.quoteIdent(tableName) + `;`, []);
429
+ });
430
+ }
431
+ }
432
+ exports.WebsqlDb = WebsqlDb;
433
+ //# sourceMappingURL=my-websqldb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"my-websqldb.js","sourceRoot":"","sources":["my-websqldb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "mocha";