@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,687 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.tableManagerTests = void 0;
55
+ var Columns_1 = require("../src/Columns");
56
+ var Record_1 = require("../src/Record");
57
+ var Table_1 = require("../src/Table");
58
+ ;
59
+ var UserTable = /** @class */ (function (_super) {
60
+ __extends(UserTable, _super);
61
+ function UserTable() {
62
+ var _this = _super !== null && _super.apply(this, arguments) || this;
63
+ _this.name = 'db_test_user';
64
+ _this.columns = (0, Record_1.withRecordColumns)({
65
+ name: new Columns_1.StringColumn('name'),
66
+ email: new Columns_1.StringColumn('email'),
67
+ active: new Columns_1.BooleanColumn('active'),
68
+ });
69
+ _this.indexes = [
70
+ { name: 'db_test_user_email_index', columns: ['email'] },
71
+ { name: 'db_test_user_active_email_index', columns: ['active', 'email'] },
72
+ ];
73
+ return _this;
74
+ }
75
+ return UserTable;
76
+ }(Table_1.Table));
77
+ ;
78
+ var ColumnTypesTable = /** @class */ (function (_super) {
79
+ __extends(ColumnTypesTable, _super);
80
+ function ColumnTypesTable() {
81
+ var _this = _super !== null && _super.apply(this, arguments) || this;
82
+ _this.name = 'db_test_column_types';
83
+ _this.columns = (0, Record_1.withRecordColumns)({
84
+ integer: new Columns_1.IntegerColumn('integer', { nullable: true }),
85
+ bigInteger: new Columns_1.IntegerColumn('big_integer', { nullable: false }, true),
86
+ string: new Columns_1.StringColumn('string', { references: { table: 'db_test_user' } }),
87
+ text: new Columns_1.StringColumn('text', undefined, 'MAX'),
88
+ float: new Columns_1.FloatColumn('float', { defaultValue: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
89
+ return [2 /*return*/, 0.5];
90
+ }); }); } }),
91
+ decimal: new Columns_1.DecimalColumn('decimal'),
92
+ boolean: new Columns_1.BooleanColumn('boolean'),
93
+ date: new Columns_1.DateColumn('date'),
94
+ dateTime: new Columns_1.DateTimeColumn('date_time'),
95
+ binary: new Columns_1.BinaryColumn('binary'),
96
+ object: new Columns_1.ObjectColumn('object'),
97
+ uuid: new Columns_1.UuidColumn('uuid', { unique: { unique: true } })
98
+ });
99
+ return _this;
100
+ }
101
+ return ColumnTypesTable;
102
+ }(Table_1.Table));
103
+ var tableManagerTests = function (driver, dropTable, getColumnType, excludedTests) {
104
+ return function () {
105
+ var tableManager = driver.getTableManager();
106
+ beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
107
+ return __generator(this, function (_a) {
108
+ switch (_a.label) {
109
+ case 0:
110
+ if (!driver.start) return [3 /*break*/, 2];
111
+ return [4 /*yield*/, driver.start()];
112
+ case 1:
113
+ _a.sent();
114
+ _a.label = 2;
115
+ case 2: return [2 /*return*/];
116
+ }
117
+ });
118
+ }); });
119
+ afterEach(function () { return __awaiter(void 0, void 0, void 0, function () {
120
+ return __generator(this, function (_a) {
121
+ switch (_a.label) {
122
+ case 0: return [4 /*yield*/, dropTable(new ColumnTypesTable())];
123
+ case 1:
124
+ _a.sent();
125
+ return [4 /*yield*/, dropTable(new UserTable())];
126
+ case 2:
127
+ _a.sent();
128
+ return [2 /*return*/];
129
+ }
130
+ });
131
+ }); });
132
+ afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
133
+ return __generator(this, function (_a) {
134
+ switch (_a.label) {
135
+ case 0:
136
+ if (!driver.stop) return [3 /*break*/, 2];
137
+ return [4 /*yield*/, driver.stop()];
138
+ case 1:
139
+ _a.sent();
140
+ _a.label = 2;
141
+ case 2: return [2 /*return*/];
142
+ }
143
+ });
144
+ }); });
145
+ test('create primary key', function () { return __awaiter(void 0, void 0, void 0, function () {
146
+ var userTable, _a, primaryKey;
147
+ return __generator(this, function (_b) {
148
+ switch (_b.label) {
149
+ case 0:
150
+ userTable = new UserTable();
151
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
152
+ case 1:
153
+ _b.sent();
154
+ _a = expect;
155
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
156
+ case 2:
157
+ _a.apply(void 0, [_b.sent()]).toBeTruthy();
158
+ return [4 /*yield*/, tableManager.schemaMetadata.getPrimaryKey(userTable)];
159
+ case 3:
160
+ primaryKey = _b.sent();
161
+ expect(primaryKey[0]).toBe('id');
162
+ expect(primaryKey.length).toBe(1);
163
+ return [2 /*return*/];
164
+ }
165
+ });
166
+ }); });
167
+ test('create columns', function () { return __awaiter(void 0, void 0, void 0, function () {
168
+ var userTable, _a, _b, _c, _d;
169
+ return __generator(this, function (_e) {
170
+ switch (_e.label) {
171
+ case 0:
172
+ userTable = new UserTable();
173
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
174
+ case 1:
175
+ _e.sent();
176
+ _a = expect;
177
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
178
+ case 2:
179
+ _a.apply(void 0, [_e.sent()]).toBeTruthy();
180
+ _b = expect;
181
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.name.name, userTable)];
182
+ case 3:
183
+ _b.apply(void 0, [_e.sent()]).toBeTruthy();
184
+ _c = expect;
185
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.email.name, userTable)];
186
+ case 4:
187
+ _c.apply(void 0, [_e.sent()]).toBeTruthy();
188
+ _d = expect;
189
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.active.name, userTable)];
190
+ case 5:
191
+ _d.apply(void 0, [_e.sent()]).toBeTruthy();
192
+ return [2 /*return*/];
193
+ }
194
+ });
195
+ }); });
196
+ test('add column via alter', function () { return __awaiter(void 0, void 0, void 0, function () {
197
+ var userTable, dataColumn, _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
198
+ return __generator(this, function (_l) {
199
+ switch (_l.label) {
200
+ case 0:
201
+ userTable = new UserTable();
202
+ dataColumn = new Columns_1.ObjectColumn('data');
203
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
204
+ case 1:
205
+ _l.sent();
206
+ _a = expect;
207
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
208
+ case 2:
209
+ _a.apply(void 0, [_l.sent()]).toBeTruthy();
210
+ _b = expect;
211
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.name.name, userTable)];
212
+ case 3:
213
+ _b.apply(void 0, [_l.sent()]).toBeTruthy();
214
+ _c = expect;
215
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.email.name, userTable)];
216
+ case 4:
217
+ _c.apply(void 0, [_l.sent()]).toBeTruthy();
218
+ _d = expect;
219
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.active.name, userTable)];
220
+ case 5:
221
+ _d.apply(void 0, [_l.sent()]).toBeTruthy();
222
+ _e = expect;
223
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(dataColumn.name, userTable)];
224
+ case 6:
225
+ _e.apply(void 0, [_l.sent()]).toBeFalsy();
226
+ userTable.columns['data'] = dataColumn;
227
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
228
+ case 7:
229
+ _l.sent();
230
+ _f = expect;
231
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
232
+ case 8:
233
+ _f.apply(void 0, [_l.sent()]).toBeTruthy();
234
+ _g = expect;
235
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.name.name, userTable)];
236
+ case 9:
237
+ _g.apply(void 0, [_l.sent()]).toBeTruthy();
238
+ _h = expect;
239
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.email.name, userTable)];
240
+ case 10:
241
+ _h.apply(void 0, [_l.sent()]).toBeTruthy();
242
+ _j = expect;
243
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.active.name, userTable)];
244
+ case 11:
245
+ _j.apply(void 0, [_l.sent()]).toBeTruthy();
246
+ _k = expect;
247
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(dataColumn.name, userTable)];
248
+ case 12:
249
+ _k.apply(void 0, [_l.sent()]).toBeTruthy();
250
+ return [2 /*return*/];
251
+ }
252
+ });
253
+ }); });
254
+ test('columns created with correct types', function () { return __awaiter(void 0, void 0, void 0, function () {
255
+ var userTable, columnTypesTable, _a, columnMetadata;
256
+ return __generator(this, function (_b) {
257
+ switch (_b.label) {
258
+ case 0:
259
+ userTable = new UserTable();
260
+ columnTypesTable = new ColumnTypesTable();
261
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
262
+ case 1:
263
+ _b.sent();
264
+ return [4 /*yield*/, tableManager.loadTable(columnTypesTable)];
265
+ case 2:
266
+ _b.sent();
267
+ _a = expect;
268
+ return [4 /*yield*/, tableManager.tableExists(columnTypesTable)];
269
+ case 3:
270
+ _a.apply(void 0, [_b.sent()]).toBeTruthy();
271
+ return [4 /*yield*/, tableManager.schemaMetadata.getColumnMetadata(columnTypesTable)];
272
+ case 4:
273
+ columnMetadata = _b.sent();
274
+ expect(columnMetadata[columnTypesTable.columns.integer.name].type).toBe(getColumnType(columnTypesTable.columns.integer));
275
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].type).toBe(getColumnType(columnTypesTable.columns.bigInteger));
276
+ expect(columnMetadata[columnTypesTable.columns.text.name].type).toBe(getColumnType(columnTypesTable.columns.text));
277
+ expect(columnMetadata[columnTypesTable.columns.string.name].type).toBe(getColumnType(columnTypesTable.columns.string));
278
+ expect(columnMetadata[columnTypesTable.columns.float.name].type).toBe(getColumnType(columnTypesTable.columns.float));
279
+ expect(columnMetadata[columnTypesTable.columns.decimal.name].type).toBe(getColumnType(columnTypesTable.columns.decimal));
280
+ expect(columnMetadata[columnTypesTable.columns.boolean.name].type).toBe(getColumnType(columnTypesTable.columns.boolean));
281
+ expect(columnMetadata[columnTypesTable.columns.date.name].type).toBe(getColumnType(columnTypesTable.columns.date));
282
+ expect(columnMetadata[columnTypesTable.columns.dateTime.name].type).toBe(getColumnType(columnTypesTable.columns.dateTime));
283
+ expect(columnMetadata[columnTypesTable.columns.binary.name].type).toBe(getColumnType(columnTypesTable.columns.binary));
284
+ expect(columnMetadata[columnTypesTable.columns.object.name].type).toBe(getColumnType(columnTypesTable.columns.object));
285
+ expect(columnMetadata[columnTypesTable.columns.uuid.name].type).toBe(getColumnType(columnTypesTable.columns.uuid));
286
+ return [2 /*return*/];
287
+ }
288
+ });
289
+ }); });
290
+ test('columns created with correct options', function () { return __awaiter(void 0, void 0, void 0, function () {
291
+ var userTable, columnTypesTable, _a, _b, columnMetadata, foreignKeys, uniqueColumns;
292
+ return __generator(this, function (_c) {
293
+ switch (_c.label) {
294
+ case 0:
295
+ userTable = new UserTable();
296
+ columnTypesTable = new ColumnTypesTable();
297
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
298
+ case 1:
299
+ _c.sent();
300
+ return [4 /*yield*/, tableManager.loadTable(columnTypesTable)];
301
+ case 2:
302
+ _c.sent();
303
+ _a = expect;
304
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
305
+ case 3:
306
+ _a.apply(void 0, [_c.sent()]).toBeTruthy();
307
+ _b = expect;
308
+ return [4 /*yield*/, tableManager.tableExists(columnTypesTable)];
309
+ case 4:
310
+ _b.apply(void 0, [_c.sent()]).toBeTruthy();
311
+ return [4 /*yield*/, tableManager.schemaMetadata.getColumnMetadata(columnTypesTable)];
312
+ case 5:
313
+ columnMetadata = _c.sent();
314
+ expect(columnMetadata[columnTypesTable.columns.integer.name].isNullable).toBeTruthy();
315
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].isNullable).toBeFalsy();
316
+ return [4 /*yield*/, tableManager.schemaMetadata.getForeignKeys(columnTypesTable)];
317
+ case 6:
318
+ foreignKeys = _c.sent();
319
+ expect(foreignKeys[columnTypesTable.columns.string.name].referencedTableName).toBe(userTable.name);
320
+ expect(foreignKeys[columnTypesTable.columns.string.name].referencedColumnName).toBe('id');
321
+ return [4 /*yield*/, tableManager.schemaMetadata.getUniqueColumns(columnTypesTable)];
322
+ case 7:
323
+ uniqueColumns = _c.sent();
324
+ expect(uniqueColumns.includes(columnTypesTable.columns.uuid.name)).toBeTruthy();
325
+ return [2 /*return*/];
326
+ }
327
+ });
328
+ }); });
329
+ test('alter column name', function () { return __awaiter(void 0, void 0, void 0, function () {
330
+ var userTable, _a, _b, _c, _d;
331
+ return __generator(this, function (_e) {
332
+ switch (_e.label) {
333
+ case 0:
334
+ if (excludedTests === null || excludedTests === void 0 ? void 0 : excludedTests.alterColumnName)
335
+ return [2 /*return*/];
336
+ userTable = new UserTable();
337
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
338
+ case 1:
339
+ _e.sent();
340
+ _a = expect;
341
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
342
+ case 2:
343
+ _a.apply(void 0, [_e.sent()]).toBeTruthy();
344
+ _b = expect;
345
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists(userTable.columns.name.name, userTable)];
346
+ case 3:
347
+ _b.apply(void 0, [_e.sent()]).toBeTruthy();
348
+ userTable.columns.name.oldName = 'name';
349
+ userTable.columns.name.name = 'namo';
350
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
351
+ case 4:
352
+ _e.sent();
353
+ _c = expect;
354
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists('namo', userTable)];
355
+ case 5:
356
+ _c.apply(void 0, [_e.sent()]).toBeTruthy();
357
+ _d = expect;
358
+ return [4 /*yield*/, tableManager.schemaMetadata.columnExists('name', userTable)];
359
+ case 6:
360
+ _d.apply(void 0, [_e.sent()]).toBeFalsy();
361
+ return [2 /*return*/];
362
+ }
363
+ });
364
+ }); });
365
+ test('alter column types', function () { return __awaiter(void 0, void 0, void 0, function () {
366
+ var userTable, columnTypesTable, _a, _b, columnMetadata, foreignKeys, uniqueColumns;
367
+ return __generator(this, function (_c) {
368
+ switch (_c.label) {
369
+ case 0:
370
+ if (excludedTests === null || excludedTests === void 0 ? void 0 : excludedTests.alterColumnTypes)
371
+ return [2 /*return*/];
372
+ userTable = new UserTable();
373
+ columnTypesTable = new ColumnTypesTable();
374
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
375
+ case 1:
376
+ _c.sent();
377
+ return [4 /*yield*/, tableManager.loadTable(columnTypesTable)];
378
+ case 2:
379
+ _c.sent();
380
+ // const columnTypesTableIndexes = await tableManager.schemaMetadata.getIndexes(columnTypesTable);
381
+ // console.log(`columnTypesTableIndexes:\n${JSON.stringify(columnTypesTableIndexes, null, 2)}`)
382
+ _a = expect;
383
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
384
+ case 3:
385
+ // const columnTypesTableIndexes = await tableManager.schemaMetadata.getIndexes(columnTypesTable);
386
+ // console.log(`columnTypesTableIndexes:\n${JSON.stringify(columnTypesTableIndexes, null, 2)}`)
387
+ _a.apply(void 0, [_c.sent()]).toBeTruthy();
388
+ _b = expect;
389
+ return [4 /*yield*/, tableManager.tableExists(columnTypesTable)];
390
+ case 4:
391
+ _b.apply(void 0, [_c.sent()]).toBeTruthy();
392
+ columnTypesTable.columns.integer = new Columns_1.IntegerColumn('integer', { nullable: true }, true);
393
+ columnTypesTable.columns.bigInteger = new Columns_1.IntegerColumn('big_integer', { nullable: false });
394
+ columnTypesTable.columns.text = new Columns_1.StringColumn('text');
395
+ // TestColumnTypesTable.columns.string = new UuidColumn('string', { references: { table: 'user', column: 'id' } });
396
+ columnTypesTable.columns.float = new Columns_1.DecimalColumn('float', { defaultValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
397
+ return [2 /*return*/, 0.5];
398
+ }); }); } });
399
+ columnTypesTable.columns.decimal = new Columns_1.FloatColumn('decimal');
400
+ columnTypesTable.columns.boolean = new Columns_1.IntegerColumn('boolean');
401
+ columnTypesTable.columns.date = new Columns_1.DateTimeColumn('date');
402
+ columnTypesTable.columns.dateTime = new Columns_1.DateColumn('date_time');
403
+ columnTypesTable.columns.binary = new Columns_1.StringColumn('binary');
404
+ columnTypesTable.columns.uuid = new Columns_1.StringColumn('uuid', { unique: { unique: true } });
405
+ return [4 /*yield*/, tableManager.loadTable(columnTypesTable)];
406
+ case 5:
407
+ _c.sent();
408
+ return [4 /*yield*/, tableManager.schemaMetadata.getColumnMetadata(columnTypesTable)];
409
+ case 6:
410
+ columnMetadata = _c.sent();
411
+ expect(columnMetadata[columnTypesTable.columns.integer.name].type).toBe(getColumnType(columnTypesTable.columns.integer));
412
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].type).toBe(getColumnType(columnTypesTable.columns.bigInteger));
413
+ expect(columnMetadata[columnTypesTable.columns.text.name].type).toBe(getColumnType(columnTypesTable.columns.text));
414
+ expect(columnMetadata[columnTypesTable.columns.string.name].type).toBe(getColumnType(columnTypesTable.columns.string));
415
+ expect(columnMetadata[columnTypesTable.columns.float.name].type).toBe(getColumnType(columnTypesTable.columns.float));
416
+ expect(columnMetadata[columnTypesTable.columns.decimal.name].type).toBe(getColumnType(columnTypesTable.columns.decimal));
417
+ expect(columnMetadata[columnTypesTable.columns.boolean.name].type).toBe(getColumnType(columnTypesTable.columns.boolean));
418
+ expect(columnMetadata[columnTypesTable.columns.date.name].type).toBe(getColumnType(columnTypesTable.columns.date));
419
+ expect(columnMetadata[columnTypesTable.columns.dateTime.name].type).toBe(getColumnType(columnTypesTable.columns.dateTime));
420
+ expect(columnMetadata[columnTypesTable.columns.binary.name].type).toBe(getColumnType(columnTypesTable.columns.binary));
421
+ expect(columnMetadata[columnTypesTable.columns.object.name].type).toBe(getColumnType(columnTypesTable.columns.object));
422
+ expect(columnMetadata[columnTypesTable.columns.uuid.name].type).toBe(getColumnType(columnTypesTable.columns.uuid));
423
+ return [4 /*yield*/, tableManager.schemaMetadata.getForeignKeys(columnTypesTable)];
424
+ case 7:
425
+ foreignKeys = _c.sent();
426
+ return [4 /*yield*/, tableManager.schemaMetadata.getUniqueColumns(columnTypesTable)];
427
+ case 8:
428
+ uniqueColumns = _c.sent();
429
+ expect(columnMetadata[columnTypesTable.columns.integer.name].isNullable).toBeTruthy();
430
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].isNullable).toBeFalsy();
431
+ // expect(parseFloat(columnMetadata[TestColumnTypesTable.columns.float.name]['COLUMN_DEFAULT'])).toBe(0.5);
432
+ expect(foreignKeys[columnTypesTable.columns.string.name].referencedTableName).toBe(userTable.name);
433
+ expect(foreignKeys[columnTypesTable.columns.string.name].referencedColumnName).toBe('id');
434
+ expect(uniqueColumns.includes(columnTypesTable.columns.uuid.name)).toBeTruthy();
435
+ return [2 /*return*/];
436
+ }
437
+ });
438
+ }); });
439
+ test('alter unique constraint', function () { return __awaiter(void 0, void 0, void 0, function () {
440
+ var userTable, columnTypesTable, _a, _b, columnMetadata, foreignKeys, uniqueColumns;
441
+ var _c;
442
+ return __generator(this, function (_d) {
443
+ switch (_d.label) {
444
+ case 0:
445
+ userTable = new UserTable();
446
+ columnTypesTable = new ColumnTypesTable();
447
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
448
+ case 1:
449
+ _d.sent();
450
+ columnTypesTable.columns.text.options = { defaultValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
451
+ return [2 /*return*/, 'asdf'];
452
+ }); }); } };
453
+ columnTypesTable.columns['string2'] = new Columns_1.StringColumn('string2', { references: { table: userTable.name } });
454
+ return [4 /*yield*/, tableManager.loadTable(columnTypesTable)];
455
+ case 2:
456
+ _d.sent();
457
+ _a = expect;
458
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
459
+ case 3:
460
+ _a.apply(void 0, [_d.sent()]).toBeTruthy();
461
+ _b = expect;
462
+ return [4 /*yield*/, tableManager.tableExists(columnTypesTable)];
463
+ case 4:
464
+ _b.apply(void 0, [_d.sent()]).toBeTruthy();
465
+ return [4 /*yield*/, tableManager.schemaMetadata.getColumnMetadata(columnTypesTable)];
466
+ case 5:
467
+ columnMetadata = _d.sent();
468
+ expect(columnMetadata[columnTypesTable.columns.integer.name].type).toBe(getColumnType(columnTypesTable.columns.integer));
469
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].type).toBe(getColumnType(columnTypesTable.columns.bigInteger));
470
+ expect(columnMetadata[columnTypesTable.columns.text.name].type).toBe(getColumnType(columnTypesTable.columns.text));
471
+ expect(columnMetadata[columnTypesTable.columns.string.name].type).toBe(getColumnType(columnTypesTable.columns.string));
472
+ expect(columnMetadata[columnTypesTable.columns.float.name].type).toBe(getColumnType(columnTypesTable.columns.float));
473
+ expect(columnMetadata[columnTypesTable.columns.decimal.name].type).toBe(getColumnType(columnTypesTable.columns.decimal));
474
+ expect(columnMetadata[columnTypesTable.columns.boolean.name].type).toBe(getColumnType(columnTypesTable.columns.boolean));
475
+ expect(columnMetadata[columnTypesTable.columns.date.name].type).toBe(getColumnType(columnTypesTable.columns.date));
476
+ expect(columnMetadata[columnTypesTable.columns.dateTime.name].type).toBe(getColumnType(columnTypesTable.columns.dateTime));
477
+ expect(columnMetadata[columnTypesTable.columns.binary.name].type).toBe(getColumnType(columnTypesTable.columns.binary));
478
+ expect(columnMetadata[columnTypesTable.columns.object.name].type).toBe(getColumnType(columnTypesTable.columns.object));
479
+ expect(columnMetadata[columnTypesTable.columns.uuid.name].type).toBe(getColumnType(columnTypesTable.columns.uuid));
480
+ expect(columnMetadata[columnTypesTable.columns.string2.name].type).toBe(getColumnType(columnTypesTable.columns.string2));
481
+ return [4 /*yield*/, tableManager.schemaMetadata.getForeignKeys(columnTypesTable)];
482
+ case 6:
483
+ foreignKeys = _d.sent();
484
+ return [4 /*yield*/, tableManager.schemaMetadata.getUniqueColumns(columnTypesTable)];
485
+ case 7:
486
+ uniqueColumns = _d.sent();
487
+ expect(columnMetadata[columnTypesTable.columns.integer.name].isNullable).toBeTruthy();
488
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].isNullable).toBeFalsy();
489
+ // expect(parseFloat(columnMetadata[TestColumnTypesTable.columns.float.name]['COLUMN_DEFAULT'])).toBe(0.5);
490
+ expect(foreignKeys[columnTypesTable.columns.string.name].referencedTableName).toBe(userTable.name);
491
+ expect(foreignKeys[columnTypesTable.columns.string.name].referencedColumnName).toBe('id');
492
+ expect(uniqueColumns.includes(columnTypesTable.columns.uuid.name)).toBeTruthy();
493
+ // columnTypesTable.columns.text = new TextColumn('text', { references: { table: userTable.name, column: 'id' } });
494
+ (_c = columnTypesTable.columns.string.options) === null || _c === void 0 ? true : delete _c.references;
495
+ // ((columnTypesTable as Table<any>).columns.string2.options as any).references = { table: userTable.name, column: 'name' };
496
+ columnTypesTable.columns.float = new Columns_1.FloatColumn('float', { defaultValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
497
+ return [2 /*return*/, 1.5];
498
+ }); }); } });
499
+ columnTypesTable.columns.decimal = new Columns_1.DecimalColumn('decimal', { defaultValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
500
+ return [2 /*return*/, 0];
501
+ }); }); } });
502
+ columnTypesTable.columns.uuid = new Columns_1.UuidColumn('uuid', { unique: { unique: false } });
503
+ return [4 /*yield*/, tableManager.loadTable(columnTypesTable)];
504
+ case 8:
505
+ _d.sent();
506
+ return [4 /*yield*/, tableManager.schemaMetadata.getColumnMetadata(columnTypesTable)];
507
+ case 9:
508
+ columnMetadata = _d.sent();
509
+ expect(columnMetadata[columnTypesTable.columns.integer.name].type).toBe(getColumnType(columnTypesTable.columns.integer));
510
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].type).toBe(getColumnType(columnTypesTable.columns.bigInteger));
511
+ expect(columnMetadata[columnTypesTable.columns.text.name].type).toBe(getColumnType(columnTypesTable.columns.text));
512
+ expect(columnMetadata[columnTypesTable.columns.string.name].type).toBe(getColumnType(columnTypesTable.columns.string));
513
+ expect(columnMetadata[columnTypesTable.columns.float.name].type).toBe(getColumnType(columnTypesTable.columns.float));
514
+ expect(columnMetadata[columnTypesTable.columns.decimal.name].type).toBe(getColumnType(columnTypesTable.columns.decimal));
515
+ expect(columnMetadata[columnTypesTable.columns.boolean.name].type).toBe(getColumnType(columnTypesTable.columns.boolean));
516
+ expect(columnMetadata[columnTypesTable.columns.date.name].type).toBe(getColumnType(columnTypesTable.columns.date));
517
+ expect(columnMetadata[columnTypesTable.columns.dateTime.name].type).toBe(getColumnType(columnTypesTable.columns.dateTime));
518
+ expect(columnMetadata[columnTypesTable.columns.binary.name].type).toBe(getColumnType(columnTypesTable.columns.binary));
519
+ expect(columnMetadata[columnTypesTable.columns.object.name].type).toBe(getColumnType(columnTypesTable.columns.object));
520
+ expect(columnMetadata[columnTypesTable.columns.uuid.name].type).toBe(getColumnType(columnTypesTable.columns.uuid));
521
+ expect(columnMetadata[columnTypesTable.columns.string2.name].type).toBe(getColumnType(columnTypesTable.columns.string2));
522
+ return [4 /*yield*/, tableManager.schemaMetadata.getUniqueColumns(columnTypesTable)];
523
+ case 10:
524
+ // expect(parseFloat(columnMetadata[TestColumnTypesTable.columns.float.name]['COLUMN_DEFAULT'])).toBe(1.5);
525
+ // expect(parseFloat(columnMetadata[TestColumnTypesTable.columns.decimal.name]['COLUMN_DEFAULT'])).toBe(0);
526
+ // foreignKeys = await tableManager.schemaMetadata.getForeignKeys(columnTypesTable);
527
+ // expect(foreignKeys[TestColumnTypesTable.columns.string.name]).toBeFalsy();
528
+ // expect(foreignKeys[TestColumnTypesTable.columns.string2.name]['REFERENCED_TABLE_NAME']).toBe('user');
529
+ // expect(foreignKeys[TestColumnTypesTable.columns.string2.name]['REFERENCED_COLUMN_NAME']).toBe('name');
530
+ // expect(foreignKeys[TestColumnTypesTable.columns.text.name]['REFERENCED_TABLE_NAME']).toBe('user');
531
+ // expect(foreignKeys[TestColumnTypesTable.columns.text.name]['REFERENCED_COLUMN_NAME']).toBe('id');
532
+ uniqueColumns = _d.sent();
533
+ expect(uniqueColumns.includes(columnTypesTable.columns.uuid.name)).toBeFalsy();
534
+ return [2 /*return*/];
535
+ }
536
+ });
537
+ }); });
538
+ test('alter column nullable constraint', function () { return __awaiter(void 0, void 0, void 0, function () {
539
+ var userTable, columnTypesTable, _a, _b, columnMetadata, foreignKeys, uniqueColumns;
540
+ var _c;
541
+ return __generator(this, function (_d) {
542
+ switch (_d.label) {
543
+ case 0:
544
+ if (excludedTests === null || excludedTests === void 0 ? void 0 : excludedTests.alterNullableConstraint)
545
+ return [2 /*return*/];
546
+ userTable = new UserTable();
547
+ columnTypesTable = new ColumnTypesTable();
548
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
549
+ case 1:
550
+ _d.sent();
551
+ columnTypesTable.columns.text.options = { defaultValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
552
+ return [2 /*return*/, 'asdf'];
553
+ }); }); } };
554
+ columnTypesTable.columns['string2'] = new Columns_1.StringColumn('string2', { references: { table: userTable.name } });
555
+ return [4 /*yield*/, tableManager.loadTable(columnTypesTable)];
556
+ case 2:
557
+ _d.sent();
558
+ _a = expect;
559
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
560
+ case 3:
561
+ _a.apply(void 0, [_d.sent()]).toBeTruthy();
562
+ _b = expect;
563
+ return [4 /*yield*/, tableManager.tableExists(columnTypesTable)];
564
+ case 4:
565
+ _b.apply(void 0, [_d.sent()]).toBeTruthy();
566
+ return [4 /*yield*/, tableManager.schemaMetadata.getColumnMetadata(columnTypesTable)];
567
+ case 5:
568
+ columnMetadata = _d.sent();
569
+ expect(columnMetadata[columnTypesTable.columns.integer.name].type).toBe(getColumnType(columnTypesTable.columns.integer));
570
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].type).toBe(getColumnType(columnTypesTable.columns.bigInteger));
571
+ expect(columnMetadata[columnTypesTable.columns.text.name].type).toBe(getColumnType(columnTypesTable.columns.text));
572
+ expect(columnMetadata[columnTypesTable.columns.string.name].type).toBe(getColumnType(columnTypesTable.columns.string));
573
+ expect(columnMetadata[columnTypesTable.columns.float.name].type).toBe(getColumnType(columnTypesTable.columns.float));
574
+ expect(columnMetadata[columnTypesTable.columns.decimal.name].type).toBe(getColumnType(columnTypesTable.columns.decimal));
575
+ expect(columnMetadata[columnTypesTable.columns.boolean.name].type).toBe(getColumnType(columnTypesTable.columns.boolean));
576
+ expect(columnMetadata[columnTypesTable.columns.date.name].type).toBe(getColumnType(columnTypesTable.columns.date));
577
+ expect(columnMetadata[columnTypesTable.columns.dateTime.name].type).toBe(getColumnType(columnTypesTable.columns.dateTime));
578
+ expect(columnMetadata[columnTypesTable.columns.binary.name].type).toBe(getColumnType(columnTypesTable.columns.binary));
579
+ expect(columnMetadata[columnTypesTable.columns.object.name].type).toBe(getColumnType(columnTypesTable.columns.object));
580
+ expect(columnMetadata[columnTypesTable.columns.uuid.name].type).toBe(getColumnType(columnTypesTable.columns.uuid));
581
+ expect(columnMetadata[columnTypesTable.columns.string2.name].type).toBe(getColumnType(columnTypesTable.columns.string2));
582
+ return [4 /*yield*/, tableManager.schemaMetadata.getForeignKeys(columnTypesTable)];
583
+ case 6:
584
+ foreignKeys = _d.sent();
585
+ return [4 /*yield*/, tableManager.schemaMetadata.getUniqueColumns(columnTypesTable)];
586
+ case 7:
587
+ uniqueColumns = _d.sent();
588
+ expect(columnMetadata[columnTypesTable.columns.integer.name].isNullable).toBeTruthy();
589
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].isNullable).toBeFalsy();
590
+ // expect(parseFloat(columnMetadata[TestColumnTypesTable.columns.float.name]['COLUMN_DEFAULT'])).toBe(0.5);
591
+ expect(foreignKeys[columnTypesTable.columns.string.name].referencedTableName).toBe(userTable.name);
592
+ expect(foreignKeys[columnTypesTable.columns.string.name].referencedColumnName).toBe('id');
593
+ expect(uniqueColumns.includes(columnTypesTable.columns.uuid.name)).toBeTruthy();
594
+ columnTypesTable.columns.integer = new Columns_1.IntegerColumn('integer', { nullable: false });
595
+ columnTypesTable.columns.bigInteger = new Columns_1.IntegerColumn('big_integer', { nullable: true }, true);
596
+ // columnTypesTable.columns.text = new TextColumn('text', { references: { table: userTable.name, column: 'id' } });
597
+ (_c = columnTypesTable.columns.string.options) === null || _c === void 0 ? true : delete _c.references;
598
+ // ((columnTypesTable as Table<any>).columns.string2.options as any).references = { table: userTable.name, column: 'name' };
599
+ columnTypesTable.columns.float = new Columns_1.FloatColumn('float', { defaultValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
600
+ return [2 /*return*/, 1.5];
601
+ }); }); } });
602
+ columnTypesTable.columns.decimal = new Columns_1.DecimalColumn('decimal', { defaultValue: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
603
+ return [2 /*return*/, 0];
604
+ }); }); } });
605
+ return [4 /*yield*/, tableManager.loadTable(columnTypesTable)];
606
+ case 8:
607
+ _d.sent();
608
+ return [4 /*yield*/, tableManager.schemaMetadata.getColumnMetadata(columnTypesTable)];
609
+ case 9:
610
+ columnMetadata = _d.sent();
611
+ expect(columnMetadata[columnTypesTable.columns.integer.name].type).toBe(getColumnType(columnTypesTable.columns.integer));
612
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].type).toBe(getColumnType(columnTypesTable.columns.bigInteger));
613
+ expect(columnMetadata[columnTypesTable.columns.text.name].type).toBe(getColumnType(columnTypesTable.columns.text));
614
+ expect(columnMetadata[columnTypesTable.columns.string.name].type).toBe(getColumnType(columnTypesTable.columns.string));
615
+ expect(columnMetadata[columnTypesTable.columns.float.name].type).toBe(getColumnType(columnTypesTable.columns.float));
616
+ expect(columnMetadata[columnTypesTable.columns.decimal.name].type).toBe(getColumnType(columnTypesTable.columns.decimal));
617
+ expect(columnMetadata[columnTypesTable.columns.boolean.name].type).toBe(getColumnType(columnTypesTable.columns.boolean));
618
+ expect(columnMetadata[columnTypesTable.columns.date.name].type).toBe(getColumnType(columnTypesTable.columns.date));
619
+ expect(columnMetadata[columnTypesTable.columns.dateTime.name].type).toBe(getColumnType(columnTypesTable.columns.dateTime));
620
+ expect(columnMetadata[columnTypesTable.columns.binary.name].type).toBe(getColumnType(columnTypesTable.columns.binary));
621
+ expect(columnMetadata[columnTypesTable.columns.object.name].type).toBe(getColumnType(columnTypesTable.columns.object));
622
+ expect(columnMetadata[columnTypesTable.columns.uuid.name].type).toBe(getColumnType(columnTypesTable.columns.uuid));
623
+ expect(columnMetadata[columnTypesTable.columns.string2.name].type).toBe(getColumnType(columnTypesTable.columns.string2));
624
+ expect(columnMetadata[columnTypesTable.columns.integer.name].isNullable).toBeFalsy();
625
+ expect(columnMetadata[columnTypesTable.columns.bigInteger.name].isNullable).toBeTruthy();
626
+ return [2 /*return*/];
627
+ }
628
+ });
629
+ }); });
630
+ test('create index', function () { return __awaiter(void 0, void 0, void 0, function () {
631
+ var userTable, _a, indexes;
632
+ return __generator(this, function (_b) {
633
+ switch (_b.label) {
634
+ case 0:
635
+ userTable = new UserTable();
636
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
637
+ case 1:
638
+ _b.sent();
639
+ _a = expect;
640
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
641
+ case 2:
642
+ _a.apply(void 0, [_b.sent()]).toBeTruthy();
643
+ return [4 /*yield*/, tableManager.schemaMetadata.getIndexes(userTable)];
644
+ case 3:
645
+ indexes = _b.sent();
646
+ expect(JSON.stringify(indexes['db_test_user_email_index'])).toBe(JSON.stringify(['email']));
647
+ expect(JSON.stringify(indexes['db_test_user_active_email_index'])).toBe(JSON.stringify(['active', 'email']));
648
+ return [2 /*return*/];
649
+ }
650
+ });
651
+ }); });
652
+ test('alter index', function () { return __awaiter(void 0, void 0, void 0, function () {
653
+ var userTable, _a, indexes;
654
+ return __generator(this, function (_b) {
655
+ switch (_b.label) {
656
+ case 0:
657
+ userTable = new UserTable();
658
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
659
+ case 1:
660
+ _b.sent();
661
+ _a = expect;
662
+ return [4 /*yield*/, tableManager.tableExists(userTable)];
663
+ case 2:
664
+ _a.apply(void 0, [_b.sent()]).toBeTruthy();
665
+ return [4 /*yield*/, tableManager.schemaMetadata.getIndexes(userTable)];
666
+ case 3:
667
+ indexes = _b.sent();
668
+ expect(JSON.stringify(indexes['db_test_user_email_index'])).toBe(JSON.stringify(['email']));
669
+ expect(JSON.stringify(indexes['db_test_user_active_email_index'])).toBe(JSON.stringify(['active', 'email']));
670
+ userTable.indexes = [{ name: 'db_test_user_email_index', columns: ['email'] }, { name: 'db_test_user_active_name_index', columns: ['active', 'name'] }];
671
+ return [4 /*yield*/, tableManager.loadTable(userTable)];
672
+ case 4:
673
+ _b.sent();
674
+ return [4 /*yield*/, tableManager.schemaMetadata.getIndexes(userTable)];
675
+ case 5:
676
+ indexes = _b.sent();
677
+ expect(JSON.stringify(indexes['db_test_user_email_index'])).toBe(JSON.stringify(['email']));
678
+ expect(JSON.stringify(indexes['db_test_user_active_name_index'])).toBe(JSON.stringify(['active', 'name']));
679
+ expect(JSON.stringify(indexes['db_test_user_active_email_index'])).toBeFalsy();
680
+ return [2 /*return*/];
681
+ }
682
+ });
683
+ }); });
684
+ };
685
+ };
686
+ exports.tableManagerTests = tableManagerTests;
687
+ //# sourceMappingURL=TableManagerTests.js.map