@proteinjs/db 1.0.2

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.
Files changed (165) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/dist/generated/index.d.ts +11 -0
  4. package/dist/generated/index.d.ts.map +1 -0
  5. package/dist/generated/index.js +59 -0
  6. package/dist/generated/index.js.map +1 -0
  7. package/dist/index.d.ts +21 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +37 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/src/Columns.d.ts +100 -0
  12. package/dist/src/Columns.d.ts.map +1 -0
  13. package/dist/src/Columns.js +381 -0
  14. package/dist/src/Columns.js.map +1 -0
  15. package/dist/src/Db.d.ts +46 -0
  16. package/dist/src/Db.d.ts.map +1 -0
  17. package/dist/src/Db.js +393 -0
  18. package/dist/src/Db.js.map +1 -0
  19. package/dist/src/MigrationRunner.d.ts +10 -0
  20. package/dist/src/MigrationRunner.d.ts.map +1 -0
  21. package/dist/src/MigrationRunner.js +124 -0
  22. package/dist/src/MigrationRunner.js.map +1 -0
  23. package/dist/src/QueryBuilderFactory.d.ts +8 -0
  24. package/dist/src/QueryBuilderFactory.d.ts.map +1 -0
  25. package/dist/src/QueryBuilderFactory.js +21 -0
  26. package/dist/src/QueryBuilderFactory.js.map +1 -0
  27. package/dist/src/Record.d.ts +38 -0
  28. package/dist/src/Record.d.ts.map +1 -0
  29. package/dist/src/Record.js +209 -0
  30. package/dist/src/Record.js.map +1 -0
  31. package/dist/src/RecordIterator.d.ts +13 -0
  32. package/dist/src/RecordIterator.d.ts.map +1 -0
  33. package/dist/src/RecordIterator.js +98 -0
  34. package/dist/src/RecordIterator.js.map +1 -0
  35. package/dist/src/StatementConfigFactory.d.ts +11 -0
  36. package/dist/src/StatementConfigFactory.d.ts.map +1 -0
  37. package/dist/src/StatementConfigFactory.js +31 -0
  38. package/dist/src/StatementConfigFactory.js.map +1 -0
  39. package/dist/src/Table.d.ts +98 -0
  40. package/dist/src/Table.d.ts.map +1 -0
  41. package/dist/src/Table.js +56 -0
  42. package/dist/src/Table.js.map +1 -0
  43. package/dist/src/auth/TableAuth.d.ts +29 -0
  44. package/dist/src/auth/TableAuth.d.ts.map +1 -0
  45. package/dist/src/auth/TableAuth.js +45 -0
  46. package/dist/src/auth/TableAuth.js.map +1 -0
  47. package/dist/src/auth/TableServiceAuth.d.ts +5 -0
  48. package/dist/src/auth/TableServiceAuth.d.ts.map +1 -0
  49. package/dist/src/auth/TableServiceAuth.js +37 -0
  50. package/dist/src/auth/TableServiceAuth.js.map +1 -0
  51. package/dist/src/opt/moment.d.ts +4 -0
  52. package/dist/src/opt/moment.d.ts.map +1 -0
  53. package/dist/src/opt/moment.js +9 -0
  54. package/dist/src/opt/moment.js.map +1 -0
  55. package/dist/src/reference/Reference.d.ts +26 -0
  56. package/dist/src/reference/Reference.d.ts.map +1 -0
  57. package/dist/src/reference/Reference.js +90 -0
  58. package/dist/src/reference/Reference.js.map +1 -0
  59. package/dist/src/reference/ReferenceArray.d.ts +29 -0
  60. package/dist/src/reference/ReferenceArray.d.ts.map +1 -0
  61. package/dist/src/reference/ReferenceArray.js +101 -0
  62. package/dist/src/reference/ReferenceArray.js.map +1 -0
  63. package/dist/src/schema/SchemaMetadata.d.ts +27 -0
  64. package/dist/src/schema/SchemaMetadata.d.ts.map +1 -0
  65. package/dist/src/schema/SchemaMetadata.js +227 -0
  66. package/dist/src/schema/SchemaMetadata.js.map +1 -0
  67. package/dist/src/schema/SchemaOperations.d.ts +40 -0
  68. package/dist/src/schema/SchemaOperations.d.ts.map +1 -0
  69. package/dist/src/schema/SchemaOperations.js +3 -0
  70. package/dist/src/schema/SchemaOperations.js.map +1 -0
  71. package/dist/src/schema/TableManager.d.ts +21 -0
  72. package/dist/src/schema/TableManager.d.ts.map +1 -0
  73. package/dist/src/schema/TableManager.js +254 -0
  74. package/dist/src/schema/TableManager.js.map +1 -0
  75. package/dist/src/serializers/GraphSerializer.d.ts +13 -0
  76. package/dist/src/serializers/GraphSerializer.d.ts.map +1 -0
  77. package/dist/src/serializers/GraphSerializer.js +21 -0
  78. package/dist/src/serializers/GraphSerializer.js.map +1 -0
  79. package/dist/src/serializers/QueryBuilderSerializer.d.ts +19 -0
  80. package/dist/src/serializers/QueryBuilderSerializer.d.ts.map +1 -0
  81. package/dist/src/serializers/QueryBuilderSerializer.js +32 -0
  82. package/dist/src/serializers/QueryBuilderSerializer.js.map +1 -0
  83. package/dist/src/serializers/ReferenceArraySerializer.d.ts +15 -0
  84. package/dist/src/serializers/ReferenceArraySerializer.d.ts.map +1 -0
  85. package/dist/src/serializers/ReferenceArraySerializer.js +23 -0
  86. package/dist/src/serializers/ReferenceArraySerializer.js.map +1 -0
  87. package/dist/src/serializers/ReferenceSerializer.d.ts +15 -0
  88. package/dist/src/serializers/ReferenceSerializer.d.ts.map +1 -0
  89. package/dist/src/serializers/ReferenceSerializer.js +23 -0
  90. package/dist/src/serializers/ReferenceSerializer.js.map +1 -0
  91. package/dist/src/serializers/TableSerializer.d.ts +13 -0
  92. package/dist/src/serializers/TableSerializer.d.ts.map +1 -0
  93. package/dist/src/serializers/TableSerializer.js +19 -0
  94. package/dist/src/serializers/TableSerializer.js.map +1 -0
  95. package/dist/src/services/DbService.d.ts +19 -0
  96. package/dist/src/services/DbService.d.ts.map +1 -0
  97. package/dist/src/services/DbService.js +6 -0
  98. package/dist/src/services/DbService.js.map +1 -0
  99. package/dist/src/services/MigrationRunnerService.d.ts +6 -0
  100. package/dist/src/services/MigrationRunnerService.d.ts.map +1 -0
  101. package/dist/src/services/MigrationRunnerService.js +6 -0
  102. package/dist/src/services/MigrationRunnerService.js.map +1 -0
  103. package/dist/src/source/SourceRecord.d.ts +44 -0
  104. package/dist/src/source/SourceRecord.d.ts.map +1 -0
  105. package/dist/src/source/SourceRecord.js +49 -0
  106. package/dist/src/source/SourceRecord.js.map +1 -0
  107. package/dist/src/source/SourceRecordLoader.d.ts +6 -0
  108. package/dist/src/source/SourceRecordLoader.d.ts.map +1 -0
  109. package/dist/src/source/SourceRecordLoader.js +156 -0
  110. package/dist/src/source/SourceRecordLoader.js.map +1 -0
  111. package/dist/src/source/SourceRecordRepo.d.ts +8 -0
  112. package/dist/src/source/SourceRecordRepo.d.ts.map +1 -0
  113. package/dist/src/source/SourceRecordRepo.js +20 -0
  114. package/dist/src/source/SourceRecordRepo.js.map +1 -0
  115. package/dist/src/tables/MigrationTable.d.ts +41 -0
  116. package/dist/src/tables/MigrationTable.d.ts.map +1 -0
  117. package/dist/src/tables/MigrationTable.js +86 -0
  118. package/dist/src/tables/MigrationTable.js.map +1 -0
  119. package/dist/src/tables/tables.d.ts +6 -0
  120. package/dist/src/tables/tables.d.ts.map +1 -0
  121. package/dist/src/tables/tables.js +8 -0
  122. package/dist/src/tables/tables.js.map +1 -0
  123. package/dist/test/CrudTests.d.ts +20 -0
  124. package/dist/test/CrudTests.d.ts.map +1 -0
  125. package/dist/test/CrudTests.js +251 -0
  126. package/dist/test/CrudTests.js.map +1 -0
  127. package/dist/test/TableManagerTests.d.ts +8 -0
  128. package/dist/test/TableManagerTests.d.ts.map +1 -0
  129. package/dist/test/TableManagerTests.js +687 -0
  130. package/dist/test/TableManagerTests.js.map +1 -0
  131. package/generated/index.ts +55 -0
  132. package/index.ts +25 -0
  133. package/jest.config.js +18 -0
  134. package/package.json +45 -0
  135. package/src/Columns.ts +257 -0
  136. package/src/Db.ts +195 -0
  137. package/src/MigrationRunner.ts +62 -0
  138. package/src/QueryBuilderFactory.ts +18 -0
  139. package/src/Record.ts +113 -0
  140. package/src/RecordIterator.ts +44 -0
  141. package/src/StatementConfigFactory.ts +36 -0
  142. package/src/Table.ts +124 -0
  143. package/src/auth/TableAuth.ts +60 -0
  144. package/src/auth/TableServiceAuth.ts +32 -0
  145. package/src/opt/moment.ts +4 -0
  146. package/src/reference/Reference.ts +45 -0
  147. package/src/reference/ReferenceArray.ts +56 -0
  148. package/src/schema/SchemaMetadata.ts +115 -0
  149. package/src/schema/SchemaOperations.ts +44 -0
  150. package/src/schema/TableManager.ts +198 -0
  151. package/src/serializers/GraphSerializer.ts +22 -0
  152. package/src/serializers/QueryBuilderSerializer.ts +39 -0
  153. package/src/serializers/ReferenceArraySerializer.ts +26 -0
  154. package/src/serializers/ReferenceSerializer.ts +26 -0
  155. package/src/serializers/TableSerializer.ts +20 -0
  156. package/src/services/DbService.ts +19 -0
  157. package/src/services/MigrationRunnerService.ts +7 -0
  158. package/src/source/SourceRecord.ts +75 -0
  159. package/src/source/SourceRecordLoader.ts +68 -0
  160. package/src/source/SourceRecordRepo.ts +17 -0
  161. package/src/tables/MigrationTable.ts +36 -0
  162. package/src/tables/tables.ts +6 -0
  163. package/test/CrudTests.ts +110 -0
  164. package/test/TableManagerTests.ts +382 -0
  165. package/tsconfig.json +23 -0
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.ReferenceColumn = exports.ReferenceArrayColumn = exports.ArrayColumn = exports.ObjectColumn = exports.PasswordColumn = exports.UuidColumn = exports.BinaryColumn = exports.DateTimeColumn = exports.DateColumn = exports.BooleanColumn = exports.DecimalColumn = exports.FloatColumn = exports.StringColumn = exports.IntegerColumn = void 0;
58
+ var moment_1 = __importDefault(require("moment"));
59
+ var uuid_1 = require("uuid");
60
+ var Table_1 = require("./Table");
61
+ var ReferenceArray_1 = require("./reference/ReferenceArray");
62
+ var Db_1 = require("./Db");
63
+ var Reference_1 = require("./reference/Reference");
64
+ var QueryBuilderFactory_1 = require("./QueryBuilderFactory");
65
+ var IntegerColumn = /** @class */ (function () {
66
+ function IntegerColumn(name, options, large) {
67
+ if (large === void 0) { large = false; }
68
+ this.name = name;
69
+ this.options = options;
70
+ this.large = large;
71
+ }
72
+ return IntegerColumn;
73
+ }());
74
+ exports.IntegerColumn = IntegerColumn;
75
+ var StringColumn = /** @class */ (function () {
76
+ function StringColumn(name, options, maxLength) {
77
+ if (maxLength === void 0) { maxLength = 255; }
78
+ this.name = name;
79
+ this.options = options;
80
+ this.maxLength = maxLength;
81
+ }
82
+ return StringColumn;
83
+ }());
84
+ exports.StringColumn = StringColumn;
85
+ var FloatColumn = /** @class */ (function () {
86
+ function FloatColumn(name, options) {
87
+ this.name = name;
88
+ this.options = options;
89
+ }
90
+ return FloatColumn;
91
+ }());
92
+ exports.FloatColumn = FloatColumn;
93
+ var DecimalColumn = /** @class */ (function () {
94
+ function DecimalColumn(name, options, large) {
95
+ if (large === void 0) { large = false; }
96
+ this.name = name;
97
+ this.options = options;
98
+ this.large = large;
99
+ }
100
+ return DecimalColumn;
101
+ }());
102
+ exports.DecimalColumn = DecimalColumn;
103
+ var BooleanColumn = /** @class */ (function () {
104
+ function BooleanColumn(name, options) {
105
+ this.name = name;
106
+ this.options = options;
107
+ }
108
+ BooleanColumn.prototype.serialize = function (fieldValue) {
109
+ return __awaiter(this, void 0, void 0, function () {
110
+ return __generator(this, function (_a) {
111
+ if (fieldValue)
112
+ return [2 /*return*/, true];
113
+ return [2 /*return*/, false];
114
+ });
115
+ });
116
+ };
117
+ BooleanColumn.prototype.deserialize = function (serializedFieldValue) {
118
+ return __awaiter(this, void 0, void 0, function () {
119
+ return __generator(this, function (_a) {
120
+ if (serializedFieldValue)
121
+ return [2 /*return*/, true];
122
+ return [2 /*return*/, false];
123
+ });
124
+ });
125
+ };
126
+ return BooleanColumn;
127
+ }());
128
+ exports.BooleanColumn = BooleanColumn;
129
+ var DateColumn = /** @class */ (function () {
130
+ function DateColumn(name, options) {
131
+ this.name = name;
132
+ this.options = options;
133
+ }
134
+ return DateColumn;
135
+ }());
136
+ exports.DateColumn = DateColumn;
137
+ var DateTimeColumn = /** @class */ (function () {
138
+ function DateTimeColumn(name, options) {
139
+ this.name = name;
140
+ this.options = options;
141
+ }
142
+ DateTimeColumn.prototype.serialize = function (fieldValue) {
143
+ return __awaiter(this, void 0, void 0, function () {
144
+ return __generator(this, function (_a) {
145
+ if (typeof fieldValue === 'undefined')
146
+ return [2 /*return*/];
147
+ if (typeof fieldValue.toDate === 'undefined')
148
+ return [2 /*return*/, (0, moment_1.default)(fieldValue).toDate()];
149
+ return [2 /*return*/, fieldValue.toDate()];
150
+ });
151
+ });
152
+ };
153
+ DateTimeColumn.prototype.deserialize = function (serializedFieldValue) {
154
+ return __awaiter(this, void 0, void 0, function () {
155
+ return __generator(this, function (_a) {
156
+ return [2 /*return*/, (0, moment_1.default)(serializedFieldValue)];
157
+ });
158
+ });
159
+ };
160
+ return DateTimeColumn;
161
+ }());
162
+ exports.DateTimeColumn = DateTimeColumn;
163
+ var BinaryColumn = /** @class */ (function () {
164
+ function BinaryColumn(name, options, maxLength) {
165
+ this.name = name;
166
+ this.options = options;
167
+ this.maxLength = maxLength;
168
+ }
169
+ return BinaryColumn;
170
+ }());
171
+ exports.BinaryColumn = BinaryColumn;
172
+ var UuidColumn = /** @class */ (function (_super) {
173
+ __extends(UuidColumn, _super);
174
+ function UuidColumn(name, options) {
175
+ var _this = _super.call(this, name, Object.assign({ defaultValue: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
176
+ return [2 /*return*/, (0, uuid_1.v1)().split('-').join('')];
177
+ }); }); } }, options), 36) || this;
178
+ return _this;
179
+ }
180
+ return UuidColumn;
181
+ }(StringColumn));
182
+ exports.UuidColumn = UuidColumn;
183
+ var PasswordColumn = /** @class */ (function (_super) {
184
+ __extends(PasswordColumn, _super);
185
+ function PasswordColumn(name, options) {
186
+ return _super.call(this, name, Object.assign({ ui: { hidden: true } }, options)) || this;
187
+ }
188
+ return PasswordColumn;
189
+ }(StringColumn));
190
+ exports.PasswordColumn = PasswordColumn;
191
+ var ObjectColumn = /** @class */ (function (_super) {
192
+ __extends(ObjectColumn, _super);
193
+ function ObjectColumn(name, options) {
194
+ return _super.call(this, name, options, 'MAX') || this;
195
+ }
196
+ ObjectColumn.prototype.serialize = function (fieldValue) {
197
+ return __awaiter(this, void 0, void 0, function () {
198
+ return __generator(this, function (_a) {
199
+ if (typeof fieldValue === 'undefined' || fieldValue == null)
200
+ return [2 /*return*/];
201
+ return [2 /*return*/, JSON.stringify(fieldValue)];
202
+ });
203
+ });
204
+ };
205
+ ObjectColumn.prototype.deserialize = function (serializedFieldValue) {
206
+ return __awaiter(this, void 0, void 0, function () {
207
+ return __generator(this, function (_a) {
208
+ if (typeof serializedFieldValue === 'undefined' || serializedFieldValue == null)
209
+ return [2 /*return*/];
210
+ return [2 /*return*/, JSON.parse(serializedFieldValue)];
211
+ });
212
+ });
213
+ };
214
+ return ObjectColumn;
215
+ }(StringColumn));
216
+ exports.ObjectColumn = ObjectColumn;
217
+ var ArrayColumn = /** @class */ (function (_super) {
218
+ __extends(ArrayColumn, _super);
219
+ function ArrayColumn(name, options) {
220
+ return _super.call(this, name, options) || this;
221
+ }
222
+ return ArrayColumn;
223
+ }(ObjectColumn));
224
+ exports.ArrayColumn = ArrayColumn;
225
+ var ReferenceArrayColumn = /** @class */ (function (_super) {
226
+ __extends(ReferenceArrayColumn, _super);
227
+ /**
228
+ * A column that stores an array of references to other records.
229
+ *
230
+ * @param name name of column
231
+ * @param referenceTable name of table that the reference records are in
232
+ * @param cascadeDelete if true referenced records will be deleted when this record is deleted
233
+ * @param options generic column options
234
+ */
235
+ function ReferenceArrayColumn(name, referenceTable, cascadeDelete, options) {
236
+ var _this = _super.call(this, name, options) || this;
237
+ _this.referenceTable = referenceTable;
238
+ _this.cascadeDelete = cascadeDelete;
239
+ return _this;
240
+ }
241
+ ReferenceArrayColumn.prototype.serialize = function (fieldValue) {
242
+ return __awaiter(this, void 0, void 0, function () {
243
+ var ids;
244
+ return __generator(this, function (_a) {
245
+ switch (_a.label) {
246
+ case 0:
247
+ if (typeof fieldValue === 'undefined')
248
+ return [2 /*return*/];
249
+ return [4 /*yield*/, fieldValue.get()];
250
+ case 1:
251
+ ids = (_a.sent()).map(function (record) { return record.id; });
252
+ return [4 /*yield*/, _super.prototype.serialize.call(this, ids)];
253
+ case 2: return [2 /*return*/, _a.sent()];
254
+ }
255
+ });
256
+ });
257
+ };
258
+ ReferenceArrayColumn.prototype.deserialize = function (serializedFieldValue) {
259
+ return __awaiter(this, void 0, void 0, function () {
260
+ var ids;
261
+ return __generator(this, function (_a) {
262
+ switch (_a.label) {
263
+ case 0: return [4 /*yield*/, _super.prototype.deserialize.call(this, serializedFieldValue)];
264
+ case 1:
265
+ ids = (_a.sent());
266
+ if (typeof ids === 'undefined')
267
+ ids = [];
268
+ return [2 /*return*/, new ReferenceArray_1.ReferenceArray(this.referenceTable, ids)];
269
+ }
270
+ });
271
+ });
272
+ };
273
+ ReferenceArrayColumn.prototype.beforeDelete = function (table, columnPropertyName, records) {
274
+ return __awaiter(this, void 0, void 0, function () {
275
+ var recordIdsToDelete, _i, records_1, record, referenceArray, referenceRecords, _a, referenceRecords_1, referenceRecord, referenceTable, qb;
276
+ return __generator(this, function (_b) {
277
+ switch (_b.label) {
278
+ case 0:
279
+ if (!this.cascadeDelete)
280
+ return [2 /*return*/];
281
+ recordIdsToDelete = [];
282
+ _i = 0, records_1 = records;
283
+ _b.label = 1;
284
+ case 1:
285
+ if (!(_i < records_1.length)) return [3 /*break*/, 4];
286
+ record = records_1[_i];
287
+ referenceArray = record[columnPropertyName];
288
+ return [4 /*yield*/, referenceArray.get()];
289
+ case 2:
290
+ referenceRecords = _b.sent();
291
+ for (_a = 0, referenceRecords_1 = referenceRecords; _a < referenceRecords_1.length; _a++) {
292
+ referenceRecord = referenceRecords_1[_a];
293
+ recordIdsToDelete.push(referenceRecord.id);
294
+ }
295
+ _b.label = 3;
296
+ case 3:
297
+ _i++;
298
+ return [3 /*break*/, 1];
299
+ case 4:
300
+ if (recordIdsToDelete.length < 1)
301
+ return [2 /*return*/];
302
+ referenceTable = (0, Table_1.tableByName)(this.referenceTable);
303
+ qb = new QueryBuilderFactory_1.QueryBuilderFactory().getQueryBuilder(referenceTable)
304
+ .condition({ field: 'id', operator: 'IN', value: recordIdsToDelete });
305
+ return [4 /*yield*/, new Db_1.Db().delete(referenceTable, qb)];
306
+ case 5:
307
+ _b.sent();
308
+ return [2 /*return*/];
309
+ }
310
+ });
311
+ });
312
+ };
313
+ return ReferenceArrayColumn;
314
+ }(ObjectColumn));
315
+ exports.ReferenceArrayColumn = ReferenceArrayColumn;
316
+ var ReferenceColumn = /** @class */ (function (_super) {
317
+ __extends(ReferenceColumn, _super);
318
+ /**
319
+ * A column that stores a reference (id) to another record.
320
+ *
321
+ * @param name name of column
322
+ * @param referenceTable name of table that the reference record is in
323
+ * @param cascadeDelete if true referenced record will be deleted when this record is deleted
324
+ * @param options generic column options
325
+ */
326
+ function ReferenceColumn(name, referenceTable, cascadeDelete, options) {
327
+ var _this = _super.call(this, name, options, 36) || this;
328
+ _this.referenceTable = referenceTable;
329
+ _this.cascadeDelete = cascadeDelete;
330
+ return _this;
331
+ }
332
+ ReferenceColumn.prototype.serialize = function (fieldValue) {
333
+ return __awaiter(this, void 0, void 0, function () {
334
+ return __generator(this, function (_a) {
335
+ if (typeof fieldValue === 'undefined')
336
+ return [2 /*return*/];
337
+ if (!fieldValue._id)
338
+ return [2 /*return*/];
339
+ return [2 /*return*/, fieldValue._id];
340
+ });
341
+ });
342
+ };
343
+ ReferenceColumn.prototype.deserialize = function (serializedFieldValue) {
344
+ return __awaiter(this, void 0, void 0, function () {
345
+ return __generator(this, function (_a) {
346
+ return [2 /*return*/, new Reference_1.Reference(this.referenceTable, serializedFieldValue)];
347
+ });
348
+ });
349
+ };
350
+ ReferenceColumn.prototype.beforeDelete = function (table, columnPropertyName, records) {
351
+ return __awaiter(this, void 0, void 0, function () {
352
+ var recordIdsToDelete, _i, records_2, record, reference, referenceTable, qb;
353
+ return __generator(this, function (_a) {
354
+ switch (_a.label) {
355
+ case 0:
356
+ if (!this.cascadeDelete)
357
+ return [2 /*return*/];
358
+ recordIdsToDelete = [];
359
+ for (_i = 0, records_2 = records; _i < records_2.length; _i++) {
360
+ record = records_2[_i];
361
+ reference = record[columnPropertyName];
362
+ if (reference && reference._id)
363
+ recordIdsToDelete.push(reference._id);
364
+ }
365
+ if (recordIdsToDelete.length < 1)
366
+ return [2 /*return*/];
367
+ referenceTable = (0, Table_1.tableByName)(this.referenceTable);
368
+ qb = new QueryBuilderFactory_1.QueryBuilderFactory().getQueryBuilder(referenceTable)
369
+ .condition({ field: 'id', operator: 'IN', value: recordIdsToDelete });
370
+ return [4 /*yield*/, new Db_1.Db().delete(referenceTable, qb)];
371
+ case 1:
372
+ _a.sent();
373
+ return [2 /*return*/];
374
+ }
375
+ });
376
+ });
377
+ };
378
+ return ReferenceColumn;
379
+ }(StringColumn));
380
+ exports.ReferenceColumn = ReferenceColumn;
381
+ //# sourceMappingURL=Columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Columns.js","sourceRoot":"","sources":["../../src/Columns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { DbService, Query } from './services/DbService';
2
+ import { Service } from '@proteinjs/service';
3
+ import { Loadable } from '@proteinjs/reflection';
4
+ import { Table } from './Table';
5
+ import { Record, SerializedRecord } from './Record';
6
+ import { ParameterizationConfig, Statement } from '@proteinjs/db-query';
7
+ import { TableManager } from './schema/TableManager';
8
+ export declare const getDb: <R extends Record = Record>() => Db<R>;
9
+ export declare const getSystemDb: <R extends Record = Record>() => Db<R>;
10
+ export type DbDriverStatementConfig = ParameterizationConfig & {
11
+ prefixTablesWithDb?: boolean;
12
+ };
13
+ export interface DbDriver extends Loadable {
14
+ getDbName(): string;
15
+ createDbIfNotExists(): Promise<void>;
16
+ start?(): Promise<void>;
17
+ stop?(): Promise<void>;
18
+ getTableManager(): TableManager;
19
+ runQuery(generateStatement: (config: DbDriverStatementConfig) => Statement): Promise<SerializedRecord[]>;
20
+ runDml(generateStatement: (config: DbDriverStatementConfig) => Statement): Promise<number>;
21
+ }
22
+ export declare class Db<R extends Record = Record> implements DbService<R> {
23
+ private ignoreAuth?;
24
+ private static globalDbDriver;
25
+ private dbDriver;
26
+ private logger;
27
+ private statementConfigFactory;
28
+ private auth;
29
+ serviceMetadata: Service['serviceMetadata'];
30
+ constructor(dbDriver?: DbDriver, getTable?: (tableName: string) => Table<any>, ignoreAuth?: boolean | undefined);
31
+ private getGlobalDbDriver;
32
+ init(): Promise<void>;
33
+ tableExists<T extends R>(table: Table<T>): Promise<boolean>;
34
+ get<T extends R>(table: Table<T>, query: Query<T>): Promise<T>;
35
+ insert<T extends R>(table: Table<T>, record: Omit<T, keyof R>): Promise<T>;
36
+ private addDefaultFieldValues;
37
+ update<T extends R>(table: Table<T>, record: Partial<T>, query?: Query<T>): Promise<number>;
38
+ private addUpdateFieldValues;
39
+ delete<T extends R>(table: Table<T>, query: Query<T>): Promise<number>;
40
+ private beforeDelete;
41
+ private cascadeDeletions;
42
+ query<T extends R>(table: Table<T>, query: Query<T>): Promise<T[]>;
43
+ getRowCount<T extends R>(table: Table<T>, query?: Query<T>): Promise<number>;
44
+ private addColumnQueries;
45
+ }
46
+ //# sourceMappingURL=Db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../src/Db.ts"],"names":[],"mappings":"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"}