@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.
- package/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/dist/generated/index.d.ts +11 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +59 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/src/Columns.d.ts +100 -0
- package/dist/src/Columns.d.ts.map +1 -0
- package/dist/src/Columns.js +381 -0
- package/dist/src/Columns.js.map +1 -0
- package/dist/src/Db.d.ts +46 -0
- package/dist/src/Db.d.ts.map +1 -0
- package/dist/src/Db.js +393 -0
- package/dist/src/Db.js.map +1 -0
- package/dist/src/MigrationRunner.d.ts +10 -0
- package/dist/src/MigrationRunner.d.ts.map +1 -0
- package/dist/src/MigrationRunner.js +124 -0
- package/dist/src/MigrationRunner.js.map +1 -0
- package/dist/src/QueryBuilderFactory.d.ts +8 -0
- package/dist/src/QueryBuilderFactory.d.ts.map +1 -0
- package/dist/src/QueryBuilderFactory.js +21 -0
- package/dist/src/QueryBuilderFactory.js.map +1 -0
- package/dist/src/Record.d.ts +38 -0
- package/dist/src/Record.d.ts.map +1 -0
- package/dist/src/Record.js +209 -0
- package/dist/src/Record.js.map +1 -0
- package/dist/src/RecordIterator.d.ts +13 -0
- package/dist/src/RecordIterator.d.ts.map +1 -0
- package/dist/src/RecordIterator.js +98 -0
- package/dist/src/RecordIterator.js.map +1 -0
- package/dist/src/StatementConfigFactory.d.ts +11 -0
- package/dist/src/StatementConfigFactory.d.ts.map +1 -0
- package/dist/src/StatementConfigFactory.js +31 -0
- package/dist/src/StatementConfigFactory.js.map +1 -0
- package/dist/src/Table.d.ts +98 -0
- package/dist/src/Table.d.ts.map +1 -0
- package/dist/src/Table.js +56 -0
- package/dist/src/Table.js.map +1 -0
- package/dist/src/auth/TableAuth.d.ts +29 -0
- package/dist/src/auth/TableAuth.d.ts.map +1 -0
- package/dist/src/auth/TableAuth.js +45 -0
- package/dist/src/auth/TableAuth.js.map +1 -0
- package/dist/src/auth/TableServiceAuth.d.ts +5 -0
- package/dist/src/auth/TableServiceAuth.d.ts.map +1 -0
- package/dist/src/auth/TableServiceAuth.js +37 -0
- package/dist/src/auth/TableServiceAuth.js.map +1 -0
- package/dist/src/opt/moment.d.ts +4 -0
- package/dist/src/opt/moment.d.ts.map +1 -0
- package/dist/src/opt/moment.js +9 -0
- package/dist/src/opt/moment.js.map +1 -0
- package/dist/src/reference/Reference.d.ts +26 -0
- package/dist/src/reference/Reference.d.ts.map +1 -0
- package/dist/src/reference/Reference.js +90 -0
- package/dist/src/reference/Reference.js.map +1 -0
- package/dist/src/reference/ReferenceArray.d.ts +29 -0
- package/dist/src/reference/ReferenceArray.d.ts.map +1 -0
- package/dist/src/reference/ReferenceArray.js +101 -0
- package/dist/src/reference/ReferenceArray.js.map +1 -0
- package/dist/src/schema/SchemaMetadata.d.ts +27 -0
- package/dist/src/schema/SchemaMetadata.d.ts.map +1 -0
- package/dist/src/schema/SchemaMetadata.js +227 -0
- package/dist/src/schema/SchemaMetadata.js.map +1 -0
- package/dist/src/schema/SchemaOperations.d.ts +40 -0
- package/dist/src/schema/SchemaOperations.d.ts.map +1 -0
- package/dist/src/schema/SchemaOperations.js +3 -0
- package/dist/src/schema/SchemaOperations.js.map +1 -0
- package/dist/src/schema/TableManager.d.ts +21 -0
- package/dist/src/schema/TableManager.d.ts.map +1 -0
- package/dist/src/schema/TableManager.js +254 -0
- package/dist/src/schema/TableManager.js.map +1 -0
- package/dist/src/serializers/GraphSerializer.d.ts +13 -0
- package/dist/src/serializers/GraphSerializer.d.ts.map +1 -0
- package/dist/src/serializers/GraphSerializer.js +21 -0
- package/dist/src/serializers/GraphSerializer.js.map +1 -0
- package/dist/src/serializers/QueryBuilderSerializer.d.ts +19 -0
- package/dist/src/serializers/QueryBuilderSerializer.d.ts.map +1 -0
- package/dist/src/serializers/QueryBuilderSerializer.js +32 -0
- package/dist/src/serializers/QueryBuilderSerializer.js.map +1 -0
- package/dist/src/serializers/ReferenceArraySerializer.d.ts +15 -0
- package/dist/src/serializers/ReferenceArraySerializer.d.ts.map +1 -0
- package/dist/src/serializers/ReferenceArraySerializer.js +23 -0
- package/dist/src/serializers/ReferenceArraySerializer.js.map +1 -0
- package/dist/src/serializers/ReferenceSerializer.d.ts +15 -0
- package/dist/src/serializers/ReferenceSerializer.d.ts.map +1 -0
- package/dist/src/serializers/ReferenceSerializer.js +23 -0
- package/dist/src/serializers/ReferenceSerializer.js.map +1 -0
- package/dist/src/serializers/TableSerializer.d.ts +13 -0
- package/dist/src/serializers/TableSerializer.d.ts.map +1 -0
- package/dist/src/serializers/TableSerializer.js +19 -0
- package/dist/src/serializers/TableSerializer.js.map +1 -0
- package/dist/src/services/DbService.d.ts +19 -0
- package/dist/src/services/DbService.d.ts.map +1 -0
- package/dist/src/services/DbService.js +6 -0
- package/dist/src/services/DbService.js.map +1 -0
- package/dist/src/services/MigrationRunnerService.d.ts +6 -0
- package/dist/src/services/MigrationRunnerService.d.ts.map +1 -0
- package/dist/src/services/MigrationRunnerService.js +6 -0
- package/dist/src/services/MigrationRunnerService.js.map +1 -0
- package/dist/src/source/SourceRecord.d.ts +44 -0
- package/dist/src/source/SourceRecord.d.ts.map +1 -0
- package/dist/src/source/SourceRecord.js +49 -0
- package/dist/src/source/SourceRecord.js.map +1 -0
- package/dist/src/source/SourceRecordLoader.d.ts +6 -0
- package/dist/src/source/SourceRecordLoader.d.ts.map +1 -0
- package/dist/src/source/SourceRecordLoader.js +156 -0
- package/dist/src/source/SourceRecordLoader.js.map +1 -0
- package/dist/src/source/SourceRecordRepo.d.ts +8 -0
- package/dist/src/source/SourceRecordRepo.d.ts.map +1 -0
- package/dist/src/source/SourceRecordRepo.js +20 -0
- package/dist/src/source/SourceRecordRepo.js.map +1 -0
- package/dist/src/tables/MigrationTable.d.ts +41 -0
- package/dist/src/tables/MigrationTable.d.ts.map +1 -0
- package/dist/src/tables/MigrationTable.js +86 -0
- package/dist/src/tables/MigrationTable.js.map +1 -0
- package/dist/src/tables/tables.d.ts +6 -0
- package/dist/src/tables/tables.d.ts.map +1 -0
- package/dist/src/tables/tables.js +8 -0
- package/dist/src/tables/tables.js.map +1 -0
- package/dist/test/CrudTests.d.ts +20 -0
- package/dist/test/CrudTests.d.ts.map +1 -0
- package/dist/test/CrudTests.js +251 -0
- package/dist/test/CrudTests.js.map +1 -0
- package/dist/test/TableManagerTests.d.ts +8 -0
- package/dist/test/TableManagerTests.d.ts.map +1 -0
- package/dist/test/TableManagerTests.js +687 -0
- package/dist/test/TableManagerTests.js.map +1 -0
- package/generated/index.ts +55 -0
- package/index.ts +25 -0
- package/jest.config.js +18 -0
- package/package.json +45 -0
- package/src/Columns.ts +257 -0
- package/src/Db.ts +195 -0
- package/src/MigrationRunner.ts +62 -0
- package/src/QueryBuilderFactory.ts +18 -0
- package/src/Record.ts +113 -0
- package/src/RecordIterator.ts +44 -0
- package/src/StatementConfigFactory.ts +36 -0
- package/src/Table.ts +124 -0
- package/src/auth/TableAuth.ts +60 -0
- package/src/auth/TableServiceAuth.ts +32 -0
- package/src/opt/moment.ts +4 -0
- package/src/reference/Reference.ts +45 -0
- package/src/reference/ReferenceArray.ts +56 -0
- package/src/schema/SchemaMetadata.ts +115 -0
- package/src/schema/SchemaOperations.ts +44 -0
- package/src/schema/TableManager.ts +198 -0
- package/src/serializers/GraphSerializer.ts +22 -0
- package/src/serializers/QueryBuilderSerializer.ts +39 -0
- package/src/serializers/ReferenceArraySerializer.ts +26 -0
- package/src/serializers/ReferenceSerializer.ts +26 -0
- package/src/serializers/TableSerializer.ts +20 -0
- package/src/services/DbService.ts +19 -0
- package/src/services/MigrationRunnerService.ts +7 -0
- package/src/source/SourceRecord.ts +75 -0
- package/src/source/SourceRecordLoader.ts +68 -0
- package/src/source/SourceRecordRepo.ts +17 -0
- package/src/tables/MigrationTable.ts +36 -0
- package/src/tables/tables.ts +6 -0
- package/test/CrudTests.ts +110 -0
- package/test/TableManagerTests.ts +382 -0
- package/tsconfig.json +23 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
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;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.FieldSerializer = exports.RecordSerializer = exports.withRecordColumns = void 0;
|
|
40
|
+
var Columns_1 = require("./Columns");
|
|
41
|
+
var moment_1 = require("./opt/moment");
|
|
42
|
+
var recordColumns = {
|
|
43
|
+
id: new Columns_1.UuidColumn('id', { ui: { hidden: true } }),
|
|
44
|
+
created: new Columns_1.DateTimeColumn('created', {
|
|
45
|
+
defaultValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
46
|
+
return [2 /*return*/, (0, moment_1.moment)()];
|
|
47
|
+
}); }); },
|
|
48
|
+
}),
|
|
49
|
+
updated: new Columns_1.DateTimeColumn('updated', {
|
|
50
|
+
defaultValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
51
|
+
return [2 /*return*/, (0, moment_1.moment)()];
|
|
52
|
+
}); }); },
|
|
53
|
+
updateValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
54
|
+
return [2 /*return*/, (0, moment_1.moment)()];
|
|
55
|
+
}); }); },
|
|
56
|
+
}),
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Wrapper function to add default Record columns to your table's columns (should always use).
|
|
60
|
+
*
|
|
61
|
+
* Note: using this requires an explicit dependency on moment@2.29.4 in your package (since transient dependencies are brittle by typescript's standards)
|
|
62
|
+
*
|
|
63
|
+
* @param columns your columns
|
|
64
|
+
* @returns recordColumns & your columns
|
|
65
|
+
*/
|
|
66
|
+
function withRecordColumns(columns) {
|
|
67
|
+
return Object.assign(Object.assign({}, recordColumns), columns);
|
|
68
|
+
}
|
|
69
|
+
exports.withRecordColumns = withRecordColumns;
|
|
70
|
+
var RecordSerializer = /** @class */ (function () {
|
|
71
|
+
function RecordSerializer(table) {
|
|
72
|
+
this.table = table;
|
|
73
|
+
}
|
|
74
|
+
RecordSerializer.prototype.serialize = function (record) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
76
|
+
var serialized, fieldSerializer, _a, _b, _c, _i, fieldPropertyName, fieldValue, _d, columnName, serializedFieldValue;
|
|
77
|
+
return __generator(this, function (_e) {
|
|
78
|
+
switch (_e.label) {
|
|
79
|
+
case 0:
|
|
80
|
+
serialized = {};
|
|
81
|
+
fieldSerializer = new FieldSerializer(this.table);
|
|
82
|
+
_a = record;
|
|
83
|
+
_b = [];
|
|
84
|
+
for (_c in _a)
|
|
85
|
+
_b.push(_c);
|
|
86
|
+
_i = 0;
|
|
87
|
+
_e.label = 1;
|
|
88
|
+
case 1:
|
|
89
|
+
if (!(_i < _b.length)) return [3 /*break*/, 5];
|
|
90
|
+
_c = _b[_i];
|
|
91
|
+
if (!(_c in _a)) return [3 /*break*/, 4];
|
|
92
|
+
fieldPropertyName = _c;
|
|
93
|
+
if (typeof record[fieldPropertyName] === 'function')
|
|
94
|
+
return [3 /*break*/, 4];
|
|
95
|
+
return [4 /*yield*/, record[fieldPropertyName]];
|
|
96
|
+
case 2:
|
|
97
|
+
fieldValue = _e.sent();
|
|
98
|
+
return [4 /*yield*/, fieldSerializer.serialize(fieldPropertyName, fieldValue)];
|
|
99
|
+
case 3:
|
|
100
|
+
_d = _e.sent(), columnName = _d.columnName, serializedFieldValue = _d.serializedFieldValue;
|
|
101
|
+
serialized[columnName] = serializedFieldValue;
|
|
102
|
+
_e.label = 4;
|
|
103
|
+
case 4:
|
|
104
|
+
_i++;
|
|
105
|
+
return [3 /*break*/, 1];
|
|
106
|
+
case 5: return [2 /*return*/, serialized];
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
RecordSerializer.prototype.deserialize = function (serializedRecord) {
|
|
112
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
113
|
+
var deserialized, fieldSerializer, _a, _b, _c, _i, columnName, serializedFieldValue, _d, fieldPropertyName, fieldValue;
|
|
114
|
+
return __generator(this, function (_e) {
|
|
115
|
+
switch (_e.label) {
|
|
116
|
+
case 0:
|
|
117
|
+
deserialized = {};
|
|
118
|
+
fieldSerializer = new FieldSerializer(this.table);
|
|
119
|
+
_a = serializedRecord;
|
|
120
|
+
_b = [];
|
|
121
|
+
for (_c in _a)
|
|
122
|
+
_b.push(_c);
|
|
123
|
+
_i = 0;
|
|
124
|
+
_e.label = 1;
|
|
125
|
+
case 1:
|
|
126
|
+
if (!(_i < _b.length)) return [3 /*break*/, 4];
|
|
127
|
+
_c = _b[_i];
|
|
128
|
+
if (!(_c in _a)) return [3 /*break*/, 3];
|
|
129
|
+
columnName = _c;
|
|
130
|
+
serializedFieldValue = serializedRecord[columnName];
|
|
131
|
+
return [4 /*yield*/, fieldSerializer.deserialize(columnName, serializedFieldValue)];
|
|
132
|
+
case 2:
|
|
133
|
+
_d = _e.sent(), fieldPropertyName = _d.fieldPropertyName, fieldValue = _d.fieldValue;
|
|
134
|
+
deserialized[fieldPropertyName] = fieldValue;
|
|
135
|
+
_e.label = 3;
|
|
136
|
+
case 3:
|
|
137
|
+
_i++;
|
|
138
|
+
return [3 /*break*/, 1];
|
|
139
|
+
case 4: return [2 /*return*/, deserialized];
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
return RecordSerializer;
|
|
145
|
+
}());
|
|
146
|
+
exports.RecordSerializer = RecordSerializer;
|
|
147
|
+
var FieldSerializer = /** @class */ (function () {
|
|
148
|
+
function FieldSerializer(table) {
|
|
149
|
+
this.table = table;
|
|
150
|
+
}
|
|
151
|
+
FieldSerializer.prototype.serialize = function (fieldPropertyName, fieldValue) {
|
|
152
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
153
|
+
var columns, column, serializedFieldValue;
|
|
154
|
+
return __generator(this, function (_a) {
|
|
155
|
+
switch (_a.label) {
|
|
156
|
+
case 0:
|
|
157
|
+
columns = this.table.columns;
|
|
158
|
+
column = columns[fieldPropertyName];
|
|
159
|
+
if (!column)
|
|
160
|
+
throw new Error("[FieldSerializer.serialize] (".concat(this.table.name, ") no column matches fieldPropertyName: ").concat(fieldPropertyName));
|
|
161
|
+
serializedFieldValue = fieldValue;
|
|
162
|
+
if (!column.serialize) return [3 /*break*/, 2];
|
|
163
|
+
return [4 /*yield*/, column.serialize(fieldValue)];
|
|
164
|
+
case 1:
|
|
165
|
+
serializedFieldValue = _a.sent();
|
|
166
|
+
_a.label = 2;
|
|
167
|
+
case 2: return [2 /*return*/, { columnName: column.name, serializedFieldValue: serializedFieldValue }];
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
FieldSerializer.prototype.deserialize = function (columnName, serializedFieldValue) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
174
|
+
var columns, fieldPropertyName, column, columnPropertyName, checkColumn, fieldValue;
|
|
175
|
+
return __generator(this, function (_a) {
|
|
176
|
+
switch (_a.label) {
|
|
177
|
+
case 0:
|
|
178
|
+
columns = this.table.columns;
|
|
179
|
+
fieldPropertyName = columnName;
|
|
180
|
+
column = columns[columnName];
|
|
181
|
+
if (!column) {
|
|
182
|
+
for (columnPropertyName in columns) {
|
|
183
|
+
checkColumn = this.table.columns[columnPropertyName];
|
|
184
|
+
if (checkColumn && columnName == checkColumn.name) {
|
|
185
|
+
fieldPropertyName = columnPropertyName;
|
|
186
|
+
column = checkColumn;
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (!column) {
|
|
192
|
+
// this is the case where a column exists in the db that is no longer defined in Table.columns
|
|
193
|
+
return [2 /*return*/, { fieldPropertyName: fieldPropertyName, fieldValue: undefined }];
|
|
194
|
+
}
|
|
195
|
+
fieldValue = serializedFieldValue;
|
|
196
|
+
if (!column.deserialize) return [3 /*break*/, 2];
|
|
197
|
+
return [4 /*yield*/, column.deserialize(serializedFieldValue)];
|
|
198
|
+
case 1:
|
|
199
|
+
fieldValue = _a.sent();
|
|
200
|
+
_a.label = 2;
|
|
201
|
+
case 2: return [2 /*return*/, { fieldPropertyName: fieldPropertyName, fieldValue: fieldValue }];
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
return FieldSerializer;
|
|
207
|
+
}());
|
|
208
|
+
exports.FieldSerializer = FieldSerializer;
|
|
209
|
+
//# sourceMappingURL=Record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Record.js","sourceRoot":"","sources":["../../src/Record.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Table } from './Table';
|
|
2
|
+
import { Record } from './Record';
|
|
3
|
+
import { Query } from './services/DbService';
|
|
4
|
+
export declare class RecordIterator<T extends Record> implements AsyncIterable<T> {
|
|
5
|
+
private db;
|
|
6
|
+
private table;
|
|
7
|
+
private query;
|
|
8
|
+
private pageSize;
|
|
9
|
+
private currentPage;
|
|
10
|
+
constructor(table: Table<T>, query: Query<T>, pageSize?: number);
|
|
11
|
+
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=RecordIterator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordIterator.d.ts","sourceRoot":"","sources":["../../src/RecordIterator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI7C,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;gBAEhB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAE,MAAW;IAQ5D,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;CAqBlD"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
3
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
4
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
5
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
6
|
+
function step(op) {
|
|
7
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
8
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
9
|
+
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;
|
|
10
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
11
|
+
switch (op[0]) {
|
|
12
|
+
case 0: case 1: t = op; break;
|
|
13
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
14
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
15
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
16
|
+
default:
|
|
17
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
18
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
19
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
20
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
21
|
+
if (t[2]) _.ops.pop();
|
|
22
|
+
_.trys.pop(); continue;
|
|
23
|
+
}
|
|
24
|
+
op = body.call(thisArg, _);
|
|
25
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
26
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
30
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
31
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
32
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
33
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
34
|
+
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
35
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
36
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
37
|
+
function fulfill(value) { resume("next", value); }
|
|
38
|
+
function reject(value) { resume("throw", value); }
|
|
39
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.RecordIterator = void 0;
|
|
43
|
+
var Db_1 = require("./Db");
|
|
44
|
+
var QueryBuilderFactory_1 = require("./QueryBuilderFactory");
|
|
45
|
+
var RecordIterator = /** @class */ (function () {
|
|
46
|
+
function RecordIterator(table, query, pageSize) {
|
|
47
|
+
if (pageSize === void 0) { pageSize = 10; }
|
|
48
|
+
this.db = (0, Db_1.getDb)();
|
|
49
|
+
this.table = table;
|
|
50
|
+
this.query = new QueryBuilderFactory_1.QueryBuilderFactory().getQueryBuilder(table, query);
|
|
51
|
+
this.pageSize = pageSize;
|
|
52
|
+
this.currentPage = 0;
|
|
53
|
+
}
|
|
54
|
+
RecordIterator.prototype[Symbol.asyncIterator] = function () {
|
|
55
|
+
return __asyncGenerator(this, arguments, function _a() {
|
|
56
|
+
var pagination, results, _i, results_1, item;
|
|
57
|
+
return __generator(this, function (_b) {
|
|
58
|
+
switch (_b.label) {
|
|
59
|
+
case 0:
|
|
60
|
+
if (!true) return [3 /*break*/, 11];
|
|
61
|
+
pagination = { start: this.currentPage * this.pageSize, end: (this.currentPage + 1) * this.pageSize - 1 };
|
|
62
|
+
this.query.paginate(pagination);
|
|
63
|
+
return [4 /*yield*/, __await(this.db.query(this.table, this.query))];
|
|
64
|
+
case 1:
|
|
65
|
+
results = _b.sent();
|
|
66
|
+
if (!(results.length === 0)) return [3 /*break*/, 3];
|
|
67
|
+
return [4 /*yield*/, __await(void 0)];
|
|
68
|
+
case 2: return [2 /*return*/, _b.sent()];
|
|
69
|
+
case 3:
|
|
70
|
+
_i = 0, results_1 = results;
|
|
71
|
+
_b.label = 4;
|
|
72
|
+
case 4:
|
|
73
|
+
if (!(_i < results_1.length)) return [3 /*break*/, 8];
|
|
74
|
+
item = results_1[_i];
|
|
75
|
+
return [4 /*yield*/, __await(item)];
|
|
76
|
+
case 5: return [4 /*yield*/, _b.sent()];
|
|
77
|
+
case 6:
|
|
78
|
+
_b.sent();
|
|
79
|
+
_b.label = 7;
|
|
80
|
+
case 7:
|
|
81
|
+
_i++;
|
|
82
|
+
return [3 /*break*/, 4];
|
|
83
|
+
case 8:
|
|
84
|
+
if (!(results.length < this.pageSize)) return [3 /*break*/, 10];
|
|
85
|
+
return [4 /*yield*/, __await(void 0)];
|
|
86
|
+
case 9: return [2 /*return*/, _b.sent()];
|
|
87
|
+
case 10:
|
|
88
|
+
this.currentPage++;
|
|
89
|
+
return [3 /*break*/, 0];
|
|
90
|
+
case 11: return [2 /*return*/];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
return RecordIterator;
|
|
96
|
+
}());
|
|
97
|
+
exports.RecordIterator = RecordIterator;
|
|
98
|
+
//# sourceMappingURL=RecordIterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordIterator.js","sourceRoot":"","sources":["../../src/RecordIterator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAiC;AAIjC,6DAA4D;AAG5D;IAOE,wBAAY,KAAe,EAAE,KAAe,EAAE,QAAqB;QAArB,yBAAA,EAAA,aAAqB;QACjE,IAAI,CAAC,EAAE,GAAG,IAAA,UAAK,GAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,yCAAmB,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAEM,yBAAC,MAAM,CAAC,aAAa,CAAC,GAA7B;;;;;;6BACS,IAAI;wBACH,UAAU,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;wBAChH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBAChB,6BAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAA;;wBAArD,OAAO,GAAG,SAA2C;6BAEvD,CAAA,OAAO,CAAC,MAAM,KAAK,CAAC,CAAA,EAApB,wBAAoB;;4BACtB,iCAAO;;8BAGiB,EAAP,mBAAO;;;6BAAP,CAAA,qBAAO,CAAA;wBAAf,IAAI;qDACP,IAAI;4BAAV,gCAAU;;wBAAV,SAAU,CAAC;;;wBADM,IAAO,CAAA;;;6BAItB,CAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAA,EAA9B,yBAA8B;;4BAChC,iCAAO;;wBAGT,IAAI,CAAC,WAAW,EAAE,CAAC;;;;;;KAEtB;IACH,qBAAC;AAAD,CAAC,AApCD,IAoCC;AApCY,wCAAc"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { StatementConfig } from '@proteinjs/db-query';
|
|
2
|
+
import { Table } from './Table';
|
|
3
|
+
import { DbDriverStatementConfig } from './Db';
|
|
4
|
+
export declare class StatementConfigFactory {
|
|
5
|
+
private dbName;
|
|
6
|
+
private getTable;
|
|
7
|
+
constructor(dbName: string, getTable?: (tableName: string) => Table<any>);
|
|
8
|
+
getStatementConfig(config: DbDriverStatementConfig): StatementConfig;
|
|
9
|
+
private getResolveFieldName;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=StatementConfigFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatementConfigFactory.d.ts","sourceRoot":"","sources":["../../src/StatementConfigFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAe,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,MAAM,CAAC;AAE/C,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAoC;gBAGlD,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC;IAM9C,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,GAAG,eAAe;IASpE,OAAO,CAAC,mBAAmB;CAU5B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatementConfigFactory = void 0;
|
|
4
|
+
var Table_1 = require("./Table");
|
|
5
|
+
var StatementConfigFactory = /** @class */ (function () {
|
|
6
|
+
function StatementConfigFactory(dbName, getTable) {
|
|
7
|
+
this.dbName = dbName;
|
|
8
|
+
this.getTable = getTable ? getTable : Table_1.tableByName;
|
|
9
|
+
}
|
|
10
|
+
StatementConfigFactory.prototype.getStatementConfig = function (config) {
|
|
11
|
+
return {
|
|
12
|
+
dbName: config.prefixTablesWithDb ? this.dbName : undefined,
|
|
13
|
+
resolveFieldName: this.getResolveFieldName(),
|
|
14
|
+
useParams: config.useParams,
|
|
15
|
+
useNamedParams: config.useNamedParams
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
StatementConfigFactory.prototype.getResolveFieldName = function () {
|
|
19
|
+
var _this = this;
|
|
20
|
+
return function (tableName, propertyName) {
|
|
21
|
+
var table = _this.getTable(tableName);
|
|
22
|
+
var column = table.columns[propertyName];
|
|
23
|
+
if (!column)
|
|
24
|
+
throw new Error("(".concat(table.name, ") Column does not exist for property: ").concat(propertyName));
|
|
25
|
+
return column.name;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
return StatementConfigFactory;
|
|
29
|
+
}());
|
|
30
|
+
exports.StatementConfigFactory = StatementConfigFactory;
|
|
31
|
+
//# sourceMappingURL=StatementConfigFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatementConfigFactory.js","sourceRoot":"","sources":["../../src/StatementConfigFactory.ts"],"names":[],"mappings":";;;AACA,iCAA6C;AAG7C;IAIE,gCACE,MAAc,EACd,QAA4C;QAE5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAW,CAAC;IACpD,CAAC;IAED,mDAAkB,GAAlB,UAAmB,MAA+B;QAChD,OAAO;YACH,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC3D,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,EAAE;YAC5C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;SACxC,CAAC;IACJ,CAAC;IAEO,oDAAmB,GAA3B;QAAA,iBASC;QARG,OAAO,UAAC,SAAiB,EAAE,YAAoB;YAC7C,IAAM,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvC,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM;gBACT,MAAM,IAAI,KAAK,CAAC,WAAI,KAAK,CAAC,IAAI,mDAAyC,YAAY,CAAE,CAAC,CAAC;YAEzF,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC,CAAA;IACL,CAAC;IACH,6BAAC;AAAD,CAAC,AA/BD,IA+BC;AA/BY,wDAAsB"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Loadable } from '@proteinjs/reflection';
|
|
2
|
+
import { CustomSerializableObject } from '@proteinjs/serializer';
|
|
3
|
+
import { Record } from './Record';
|
|
4
|
+
import { QueryBuilder } from '@proteinjs/db-query';
|
|
5
|
+
import { Identity, TableOperationsAuth } from './auth/TableAuth';
|
|
6
|
+
export declare const getTables: <T extends Record = any>() => Table<T>[];
|
|
7
|
+
export declare const tableByName: (name: string) => Table<any>;
|
|
8
|
+
export declare const getColumnPropertyName: (table: Table<any>, columnName: string) => string | null;
|
|
9
|
+
export declare const getColumnByName: (table: Table<any>, columnName: string) => Column<any, any> | null;
|
|
10
|
+
/**
|
|
11
|
+
* primary key is `id`
|
|
12
|
+
*/
|
|
13
|
+
export declare abstract class Table<T extends Record> implements Loadable, CustomSerializableObject {
|
|
14
|
+
__serializerId: string;
|
|
15
|
+
abstract name: string;
|
|
16
|
+
abstract columns: Columns<T>;
|
|
17
|
+
indexes: {
|
|
18
|
+
columns: (keyof T)[];
|
|
19
|
+
name?: string;
|
|
20
|
+
}[];
|
|
21
|
+
/** When records are deleted, delete records having references pointing to deleted records */
|
|
22
|
+
cascadeDeleteReferences: () => {
|
|
23
|
+
table: string;
|
|
24
|
+
referenceColumn: string;
|
|
25
|
+
}[];
|
|
26
|
+
/**
|
|
27
|
+
* Options for configuring SourceRecords
|
|
28
|
+
* @param doNotDeleteSourceRecordsFromDb if true, the SourceRecordLoader will not delete source records from the db if they no longer exist on the file system
|
|
29
|
+
*/
|
|
30
|
+
sourceRecordOptions: SourceRecordOptions;
|
|
31
|
+
auth?: {
|
|
32
|
+
db?: TableOperationsAuth;
|
|
33
|
+
service?: TableOperationsAuth;
|
|
34
|
+
ui?: {
|
|
35
|
+
recordTable?: Identity;
|
|
36
|
+
recordForm?: Identity;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
type ExcludeFunctions<T> = {
|
|
41
|
+
[P in keyof T as T[P] extends Function ? never : P]: T[P];
|
|
42
|
+
};
|
|
43
|
+
type RequiredProps<T> = {
|
|
44
|
+
[P in keyof ExcludeFunctions<T>]: ExcludeFunctions<T>[P] extends undefined ? never : P;
|
|
45
|
+
}[keyof ExcludeFunctions<T>];
|
|
46
|
+
type OptionalProps<T> = {
|
|
47
|
+
[P in keyof ExcludeFunctions<T>]: ExcludeFunctions<T>[P] extends undefined ? P : never;
|
|
48
|
+
}[keyof ExcludeFunctions<T>];
|
|
49
|
+
export type Columns<T> = {
|
|
50
|
+
[P in RequiredProps<T>]: Column<T[P], any>;
|
|
51
|
+
} & {
|
|
52
|
+
[P in OptionalProps<T>]?: Column<T[P] | undefined, any>;
|
|
53
|
+
};
|
|
54
|
+
export type Column<T, Serialized> = {
|
|
55
|
+
name: string;
|
|
56
|
+
/**
|
|
57
|
+
* Use to rename column, will find column with `oldName` and change it to `name`.
|
|
58
|
+
*
|
|
59
|
+
* Note: after name change has happened in prod, oldName can be removed.
|
|
60
|
+
*/
|
|
61
|
+
oldName?: string;
|
|
62
|
+
options?: ColumnOptions;
|
|
63
|
+
serialize?: (fieldValue: T | undefined) => Promise<Serialized | undefined>;
|
|
64
|
+
deserialize?: (serializedFieldValue: Serialized) => Promise<T | void>;
|
|
65
|
+
beforeDelete?: (table: Table<any>, columnPropertyName: string, records: any[]) => Promise<void>;
|
|
66
|
+
};
|
|
67
|
+
export type ColumnOptions = {
|
|
68
|
+
unique?: {
|
|
69
|
+
unique: boolean;
|
|
70
|
+
indexName?: string;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* The column in the reference table `table` is the primary key of the table (`id` unless otherwise specified in the Table definition)
|
|
74
|
+
*
|
|
75
|
+
* Note: use a migration to drop or change an existing foreign key
|
|
76
|
+
*/
|
|
77
|
+
references?: {
|
|
78
|
+
table: string;
|
|
79
|
+
};
|
|
80
|
+
nullable?: boolean;
|
|
81
|
+
/** Value stored on insert */
|
|
82
|
+
defaultValue?: (insertObj: any) => Promise<any>;
|
|
83
|
+
/** Value stored on update */
|
|
84
|
+
updateValue?: (updateObj: any) => Promise<any>;
|
|
85
|
+
/** Add conditions to query; called on every query of this table */
|
|
86
|
+
addToQuery?: (qb: QueryBuilder) => Promise<void>;
|
|
87
|
+
ui?: {
|
|
88
|
+
hidden?: boolean;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
export type SourceRecordOptions = {
|
|
92
|
+
doNotDeleteSourceRecordsFromDb?: boolean;
|
|
93
|
+
ui?: {
|
|
94
|
+
hideColumns?: boolean;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
export {};
|
|
98
|
+
//# sourceMappingURL=Table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Table = exports.getColumnByName = exports.getColumnPropertyName = exports.tableByName = exports.getTables = void 0;
|
|
4
|
+
var reflection_1 = require("@proteinjs/reflection");
|
|
5
|
+
var TableSerializer_1 = require("./serializers/TableSerializer");
|
|
6
|
+
var getTables = function () { return reflection_1.SourceRepository.get().objects('@proteinjs/db/Table'); };
|
|
7
|
+
exports.getTables = getTables;
|
|
8
|
+
var tableByName = function (name) {
|
|
9
|
+
var tables = (0, exports.getTables)();
|
|
10
|
+
for (var _i = 0, tables_1 = tables; _i < tables_1.length; _i++) {
|
|
11
|
+
var table = tables_1[_i];
|
|
12
|
+
if (table.name == name)
|
|
13
|
+
return table;
|
|
14
|
+
}
|
|
15
|
+
throw new Error("Unable to find table: ".concat(name));
|
|
16
|
+
};
|
|
17
|
+
exports.tableByName = tableByName;
|
|
18
|
+
var getColumnPropertyName = function (table, columnName) {
|
|
19
|
+
for (var columnPropertyName in table.columns) {
|
|
20
|
+
var column = table.columns[columnPropertyName];
|
|
21
|
+
if (column.name == columnName)
|
|
22
|
+
return columnPropertyName;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
};
|
|
26
|
+
exports.getColumnPropertyName = getColumnPropertyName;
|
|
27
|
+
var getColumnByName = function (table, columnName) {
|
|
28
|
+
for (var columnPropertyName in table.columns) {
|
|
29
|
+
var column = table.columns[columnPropertyName];
|
|
30
|
+
if (column.name == columnName)
|
|
31
|
+
return column;
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
};
|
|
35
|
+
exports.getColumnByName = getColumnByName;
|
|
36
|
+
/**
|
|
37
|
+
* primary key is `id`
|
|
38
|
+
*/
|
|
39
|
+
var Table = /** @class */ (function () {
|
|
40
|
+
function Table() {
|
|
41
|
+
this.__serializerId = TableSerializer_1.TableSerializerId;
|
|
42
|
+
this.indexes = [];
|
|
43
|
+
/** When records are deleted, delete records having references pointing to deleted records */
|
|
44
|
+
this.cascadeDeleteReferences = function () { return []; };
|
|
45
|
+
/**
|
|
46
|
+
* Options for configuring SourceRecords
|
|
47
|
+
* @param doNotDeleteSourceRecordsFromDb if true, the SourceRecordLoader will not delete source records from the db if they no longer exist on the file system
|
|
48
|
+
*/
|
|
49
|
+
this.sourceRecordOptions = {
|
|
50
|
+
doNotDeleteSourceRecordsFromDb: false,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return Table;
|
|
54
|
+
}());
|
|
55
|
+
exports.Table = Table;
|
|
56
|
+
//# sourceMappingURL=Table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../src/Table.ts"],"names":[],"mappings":";;;AAAA,oDAAmE;AAGnE,iEAAkE;AAI3D,IAAM,SAAS,GAAG,cAA8B,OAAA,6BAAgB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAW,qBAAqB,CAAC,EAA/D,CAA+D,CAAC;AAA1G,QAAA,SAAS,aAAiG;AAEhH,IAAM,WAAW,GAAG,UAAC,IAAY;IACvC,IAAM,MAAM,GAAG,IAAA,iBAAS,GAAE,CAAC;IAC3B,KAAkB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,EAAE;QAArB,IAAI,KAAK,eAAA;QACb,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI;YACrB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,IAAI,KAAK,CAAC,gCAAyB,IAAI,CAAE,CAAC,CAAC;AAClD,CAAC,CAAA;AARY,QAAA,WAAW,eAQvB;AAEM,IAAM,qBAAqB,GAAG,UAAC,KAAiB,EAAE,UAAkB;IAC1E,KAAK,IAAI,kBAAkB,IAAI,KAAK,CAAC,OAAO,EAAE;QAC7C,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,IAAI,IAAI,UAAU;YAC5B,OAAO,kBAAkB,CAAC;KAC3B;IAED,OAAO,IAAI,CAAC;AACb,CAAC,CAAA;AARY,QAAA,qBAAqB,yBAQjC;AAEM,IAAM,eAAe,GAAG,UAAC,KAAiB,EAAE,UAAkB;IACpE,KAAK,IAAI,kBAAkB,IAAI,KAAK,CAAC,OAAO,EAAE;QAC7C,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,IAAI,IAAI,UAAU;YAC5B,OAAO,MAAM,CAAC;KACf;IAED,OAAO,IAAI,CAAC;AACb,CAAC,CAAA;AARY,QAAA,eAAe,mBAQ3B;AAED;;GAEG;AACH;IAAA;QACQ,mBAAc,GAAG,mCAAiB,CAAC;QAGnC,YAAO,GAA8C,EAAE,CAAC;QAC/D,6FAA6F;QACtF,4BAAuB,GAAuD,cAAM,OAAA,EAAE,EAAF,CAAE,CAAC;QAC9F;;;WAGG;QACI,wBAAmB,GAAwB;YACjD,8BAA8B,EAAE,KAAK;SACrC,CAAC;IASH,CAAC;IAAD,YAAC;AAAD,CAAC,AAtBD,IAsBC;AAtBqB,sBAAK"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Table } from '../Table';
|
|
2
|
+
/**
|
|
3
|
+
* @public all users, including guests (do not need to be logged in), do not need any roles
|
|
4
|
+
* @authenticated - users need to be logged in, do not need any roles
|
|
5
|
+
* @roles string[] - authenticated users, having at least one of these roles
|
|
6
|
+
*/
|
|
7
|
+
export type Identity = 'public' | 'authenticated' | string[];
|
|
8
|
+
/**
|
|
9
|
+
* These Identities can perform these operations on this table.
|
|
10
|
+
* If omitted, defaults to requiring the 'admin' role (default deny)
|
|
11
|
+
*/
|
|
12
|
+
export type TableOperationsAuth = {
|
|
13
|
+
all?: Identity;
|
|
14
|
+
query?: Identity;
|
|
15
|
+
insert?: Identity;
|
|
16
|
+
update?: Identity;
|
|
17
|
+
delete?: Identity;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Util to check which table operations a user can perform
|
|
21
|
+
*/
|
|
22
|
+
export declare class TableAuth {
|
|
23
|
+
private canAccess;
|
|
24
|
+
canQuery(table: Table<any>, api?: 'db' | 'service'): void;
|
|
25
|
+
canInsert(table: Table<any>, api?: 'db' | 'service'): void;
|
|
26
|
+
canUpdate(table: Table<any>, api?: 'db' | 'service'): void;
|
|
27
|
+
canDelete(table: Table<any>, api?: 'db' | 'service'): void;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=TableAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableAuth.d.ts","sourceRoot":"","sources":["../../../src/auth/TableAuth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAC,eAAe,GAAC,MAAM,EAAE,CAAA;AAExD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IACjC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;CAClB,CAAA;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS;IAcjB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAC,SAAgB,GAAG,IAAI;IAK7D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAC,SAAgB,GAAG,IAAI;IAK9D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAC,SAAgB,GAAG,IAAI;IAK9D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAE,IAAI,GAAC,SAAgB,GAAG,IAAI;CAI/D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TableAuth = void 0;
|
|
4
|
+
var user_auth_1 = require("@proteinjs/user-auth");
|
|
5
|
+
/**
|
|
6
|
+
* Util to check which table operations a user can perform
|
|
7
|
+
*/
|
|
8
|
+
var TableAuth = /** @class */ (function () {
|
|
9
|
+
function TableAuth() {
|
|
10
|
+
}
|
|
11
|
+
TableAuth.prototype.canAccess = function (table, api, operation) {
|
|
12
|
+
var tableAuth = table.auth ? table.auth[api] : undefined;
|
|
13
|
+
if (!tableAuth || Object.keys(tableAuth).length == 0)
|
|
14
|
+
return user_auth_1.UserAuth.hasRole('admin');
|
|
15
|
+
return tableAuth.all === 'public'
|
|
16
|
+
|| tableAuth[operation] === 'public'
|
|
17
|
+
|| (tableAuth.all === 'authenticated' && user_auth_1.UserAuth.isLoggedIn())
|
|
18
|
+
|| (tableAuth[operation] === 'authenticated' && user_auth_1.UserAuth.isLoggedIn())
|
|
19
|
+
|| (Array.isArray(tableAuth.all) && user_auth_1.UserAuth.hasRoles(tableAuth.all, 'at least one'))
|
|
20
|
+
|| (Array.isArray(tableAuth[operation]) && user_auth_1.UserAuth.hasRoles(tableAuth[operation], 'at least one'));
|
|
21
|
+
};
|
|
22
|
+
TableAuth.prototype.canQuery = function (table, api) {
|
|
23
|
+
if (api === void 0) { api = 'db'; }
|
|
24
|
+
if (!this.canAccess(table, api, 'query'))
|
|
25
|
+
throw new Error("User is not authorized to query table: ".concat(table.name));
|
|
26
|
+
};
|
|
27
|
+
TableAuth.prototype.canInsert = function (table, api) {
|
|
28
|
+
if (api === void 0) { api = 'db'; }
|
|
29
|
+
if (!this.canAccess(table, api, 'insert'))
|
|
30
|
+
throw new Error("User is not authorized to insert records into table: ".concat(table.name));
|
|
31
|
+
};
|
|
32
|
+
TableAuth.prototype.canUpdate = function (table, api) {
|
|
33
|
+
if (api === void 0) { api = 'db'; }
|
|
34
|
+
if (!this.canAccess(table, api, 'update'))
|
|
35
|
+
throw new Error("User is not authorized to update records in table: ".concat(table.name));
|
|
36
|
+
};
|
|
37
|
+
TableAuth.prototype.canDelete = function (table, api) {
|
|
38
|
+
if (api === void 0) { api = 'db'; }
|
|
39
|
+
if (!this.canAccess(table, api, 'query'))
|
|
40
|
+
throw new Error("User is not authorized to delete records from table: ".concat(table.name));
|
|
41
|
+
};
|
|
42
|
+
return TableAuth;
|
|
43
|
+
}());
|
|
44
|
+
exports.TableAuth = TableAuth;
|
|
45
|
+
//# sourceMappingURL=TableAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableAuth.js","sourceRoot":"","sources":["../../../src/auth/TableAuth.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAsB/C;;GAEG;AACH;IAAA;IAkCA,CAAC;IAjCS,6BAAS,GAAjB,UAAkB,KAAiB,EAAE,GAAmB,EAAE,SAA6C;QACrG,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC;YAClD,OAAO,oBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEnC,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ;eAC5B,SAAS,CAAC,SAAS,CAAC,KAAK,QAAQ;eACjC,CAAC,SAAS,CAAC,GAAG,KAAK,eAAe,IAAI,oBAAQ,CAAC,UAAU,EAAE,CAAC;eAC5D,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,eAAe,IAAI,oBAAQ,CAAC,UAAU,EAAE,CAAC;eACnE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,oBAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;eAClF,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,oBAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAa,EAAE,cAAc,CAAC,CAAC,CAChH;IACH,CAAC;IAED,4BAAQ,GAAR,UAAS,KAAiB,EAAE,GAA0B;QAA1B,oBAAA,EAAA,UAA0B;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,iDAA0C,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC;IAC5E,CAAC;IAED,6BAAS,GAAT,UAAU,KAAiB,EAAE,GAA0B;QAA1B,oBAAA,EAAA,UAA0B;QACrD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,+DAAwD,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC;IAC1F,CAAC;IAED,6BAAS,GAAT,UAAU,KAAiB,EAAE,GAA0B;QAA1B,oBAAA,EAAA,UAA0B;QACrD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,6DAAsD,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC;IACxF,CAAC;IAED,6BAAS,GAAT,UAAU,KAAiB,EAAE,GAA0B;QAA1B,oBAAA,EAAA,UAA0B;QACrD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,+DAAwD,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC;IAC1F,CAAC;IACH,gBAAC;AAAD,CAAC,AAlCD,IAkCC;AAlCY,8BAAS"}
|