@proteinjs/db-driver-spanner 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 (57) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +32 -0
  4. package/dist/generated/index.d.ts +8 -0
  5. package/dist/generated/index.d.ts.map +1 -0
  6. package/dist/generated/index.js +38 -0
  7. package/dist/generated/index.js.map +1 -0
  8. package/dist/index.d.ts +3 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +19 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/src/SpannerColumnTypeFactory.d.ts +5 -0
  13. package/dist/src/SpannerColumnTypeFactory.d.ts.map +1 -0
  14. package/dist/src/SpannerColumnTypeFactory.js +31 -0
  15. package/dist/src/SpannerColumnTypeFactory.js.map +1 -0
  16. package/dist/src/SpannerConfig.d.ts +8 -0
  17. package/dist/src/SpannerConfig.d.ts.map +1 -0
  18. package/dist/src/SpannerConfig.js +7 -0
  19. package/dist/src/SpannerConfig.js.map +1 -0
  20. package/dist/src/SpannerDriver.d.ts +30 -0
  21. package/dist/src/SpannerDriver.d.ts.map +1 -0
  22. package/dist/src/SpannerDriver.js +204 -0
  23. package/dist/src/SpannerDriver.js.map +1 -0
  24. package/dist/src/SpannerSchemaMetadata.d.ts +21 -0
  25. package/dist/src/SpannerSchemaMetadata.d.ts.map +1 -0
  26. package/dist/src/SpannerSchemaMetadata.js +229 -0
  27. package/dist/src/SpannerSchemaMetadata.js.map +1 -0
  28. package/dist/src/SpannerSchemaOperations.d.ts +10 -0
  29. package/dist/src/SpannerSchemaOperations.d.ts.map +1 -0
  30. package/dist/src/SpannerSchemaOperations.js +215 -0
  31. package/dist/src/SpannerSchemaOperations.js.map +1 -0
  32. package/dist/test/Crud.test.d.ts +2 -0
  33. package/dist/test/Crud.test.d.ts.map +1 -0
  34. package/dist/test/Crud.test.js +12 -0
  35. package/dist/test/Crud.test.js.map +1 -0
  36. package/dist/test/TableManager.test.d.ts +2 -0
  37. package/dist/test/TableManager.test.d.ts.map +1 -0
  38. package/dist/test/TableManager.test.js +17 -0
  39. package/dist/test/TableManager.test.js.map +1 -0
  40. package/dist/test/dropTable.d.ts +4 -0
  41. package/dist/test/dropTable.d.ts.map +1 -0
  42. package/dist/test/dropTable.js +115 -0
  43. package/dist/test/dropTable.js.map +1 -0
  44. package/generated/index.ts +34 -0
  45. package/index.ts +2 -0
  46. package/jest.config.js +19 -0
  47. package/package.json +42 -0
  48. package/src/SpannerColumnTypeFactory.ts +25 -0
  49. package/src/SpannerConfig.ts +9 -0
  50. package/src/SpannerDriver.ts +115 -0
  51. package/src/SpannerSchemaMetadata.ts +96 -0
  52. package/src/SpannerSchemaOperations.ts +122 -0
  53. package/test/Crud.test.ts +17 -0
  54. package/test/TableManager.test.ts +24 -0
  55. package/test/dropTable.ts +32 -0
  56. package/test/setup.js +1 -0
  57. package/tsconfig.json +23 -0
@@ -0,0 +1,229 @@
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 __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
44
+ 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;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
64
+ Object.defineProperty(exports, "__esModule", { value: true });
65
+ exports.SpannerSchemaMetadata = void 0;
66
+ var db_1 = require("@proteinjs/db");
67
+ var SpannerSchemaMetadata = /** @class */ (function (_super) {
68
+ __extends(SpannerSchemaMetadata, _super);
69
+ function SpannerSchemaMetadata() {
70
+ return _super !== null && _super.apply(this, arguments) || this;
71
+ }
72
+ SpannerSchemaMetadata.prototype.getColumnMetadata = function (table) {
73
+ return __awaiter(this, void 0, void 0, function () {
74
+ var qb, generateStatement, results, columnMetadata, _i, results_1, row;
75
+ return __generator(this, function (_a) {
76
+ switch (_a.label) {
77
+ case 0:
78
+ qb = db_1.QueryBuilder.fromObject({
79
+ 'TABLE_NAME': table.name
80
+ }, 'COLUMNS');
81
+ generateStatement = function (config) { return qb.toSql(__assign({ dbName: 'INFORMATION_SCHEMA' }, config)); };
82
+ return [4 /*yield*/, this.dbDriver.runQuery(generateStatement)];
83
+ case 1:
84
+ results = _a.sent();
85
+ columnMetadata = {};
86
+ for (_i = 0, results_1 = results; _i < results_1.length; _i++) {
87
+ row = results_1[_i];
88
+ columnMetadata[row['COLUMN_NAME']] = { type: row['SPANNER_TYPE'], isNullable: row['IS_NULLABLE'] === 'YES' };
89
+ }
90
+ return [2 /*return*/, columnMetadata];
91
+ }
92
+ });
93
+ });
94
+ };
95
+ SpannerSchemaMetadata.prototype.getPrimaryKey = function (table) {
96
+ return __awaiter(this, void 0, void 0, function () {
97
+ var indexes;
98
+ return __generator(this, function (_a) {
99
+ switch (_a.label) {
100
+ case 0: return [4 /*yield*/, this.getIndexes(table)];
101
+ case 1:
102
+ indexes = _a.sent();
103
+ return [2 /*return*/, indexes['PRIMARY_KEY']];
104
+ }
105
+ });
106
+ });
107
+ };
108
+ SpannerSchemaMetadata.prototype.getForeignKeys = function (table) {
109
+ return __awaiter(this, void 0, void 0, function () {
110
+ var tableConstraintsQb, generateTableConstraintsStatement, tableConstraints, foreignKeys, _loop_1, this_1, _i, tableConstraints_1, tableConstraint;
111
+ return __generator(this, function (_a) {
112
+ switch (_a.label) {
113
+ case 0:
114
+ tableConstraintsQb = db_1.QueryBuilder.fromObject({
115
+ 'TABLE_NAME': table.name,
116
+ 'CONSTRAINT_TYPE': 'FOREIGN KEY'
117
+ }, 'TABLE_CONSTRAINTS');
118
+ generateTableConstraintsStatement = function (config) { return tableConstraintsQb.toSql(__assign({ dbName: 'INFORMATION_SCHEMA' }, config)); };
119
+ return [4 /*yield*/, this.dbDriver.runQuery(generateTableConstraintsStatement)];
120
+ case 1:
121
+ tableConstraints = _a.sent();
122
+ foreignKeys = {};
123
+ _loop_1 = function (tableConstraint) {
124
+ var referentialConstraintsQb, generateReferentialConstraintsStatement, referentialConstraints, referencedTableConstraintName, referenceTableConstraintsQb, generateReferenceTableConstraintsStatement, referenceTableConstraints, referencedTableName, keyColumnUsageQb, generateKeyColumnUsageStatement, keyColumnUsages, referencingColumnName;
125
+ return __generator(this, function (_b) {
126
+ switch (_b.label) {
127
+ case 0:
128
+ referentialConstraintsQb = db_1.QueryBuilder.fromObject({
129
+ 'CONSTRAINT_NAME': tableConstraint['CONSTRAINT_NAME']
130
+ }, 'REFERENTIAL_CONSTRAINTS');
131
+ generateReferentialConstraintsStatement = function (config) { return referentialConstraintsQb.toSql(__assign({ dbName: 'INFORMATION_SCHEMA' }, config)); };
132
+ return [4 /*yield*/, this_1.dbDriver.runQuery(generateReferentialConstraintsStatement)];
133
+ case 1:
134
+ referentialConstraints = _b.sent();
135
+ referencedTableConstraintName = referentialConstraints[0]['UNIQUE_CONSTRAINT_NAME'];
136
+ referenceTableConstraintsQb = db_1.QueryBuilder.fromObject({
137
+ 'CONSTRAINT_NAME': referencedTableConstraintName
138
+ }, 'TABLE_CONSTRAINTS');
139
+ generateReferenceTableConstraintsStatement = function (config) { return referenceTableConstraintsQb.toSql(__assign({ dbName: 'INFORMATION_SCHEMA' }, config)); };
140
+ return [4 /*yield*/, this_1.dbDriver.runQuery(generateReferenceTableConstraintsStatement)];
141
+ case 2:
142
+ referenceTableConstraints = _b.sent();
143
+ referencedTableName = referenceTableConstraints[0]['TABLE_NAME'];
144
+ keyColumnUsageQb = db_1.QueryBuilder.fromObject({
145
+ 'TABLE_NAME': table.name,
146
+ 'CONSTRAINT_NAME': tableConstraint['CONSTRAINT_NAME']
147
+ }, 'KEY_COLUMN_USAGE');
148
+ generateKeyColumnUsageStatement = function (config) { return keyColumnUsageQb.toSql(__assign({ dbName: 'INFORMATION_SCHEMA' }, config)); };
149
+ return [4 /*yield*/, this_1.dbDriver.runQuery(generateKeyColumnUsageStatement)];
150
+ case 3:
151
+ keyColumnUsages = _b.sent();
152
+ referencingColumnName = keyColumnUsages[0]['COLUMN_NAME'];
153
+ foreignKeys[referencingColumnName] = {
154
+ referencedTableName: referencedTableName,
155
+ referencedColumnName: 'id',
156
+ };
157
+ return [2 /*return*/];
158
+ }
159
+ });
160
+ };
161
+ this_1 = this;
162
+ _i = 0, tableConstraints_1 = tableConstraints;
163
+ _a.label = 2;
164
+ case 2:
165
+ if (!(_i < tableConstraints_1.length)) return [3 /*break*/, 5];
166
+ tableConstraint = tableConstraints_1[_i];
167
+ return [5 /*yield**/, _loop_1(tableConstraint)];
168
+ case 3:
169
+ _a.sent();
170
+ _a.label = 4;
171
+ case 4:
172
+ _i++;
173
+ return [3 /*break*/, 2];
174
+ case 5: return [2 /*return*/, foreignKeys];
175
+ }
176
+ });
177
+ });
178
+ };
179
+ SpannerSchemaMetadata.prototype.getUniqueColumns = function (table) {
180
+ return __awaiter(this, void 0, void 0, function () {
181
+ var indexes, uniqueColumns, indexName, indexedColumns;
182
+ return __generator(this, function (_a) {
183
+ switch (_a.label) {
184
+ case 0: return [4 /*yield*/, this.getIndexes(table)];
185
+ case 1:
186
+ indexes = _a.sent();
187
+ uniqueColumns = [];
188
+ for (indexName in indexes) {
189
+ if (!indexName.endsWith('_unique'))
190
+ continue;
191
+ indexedColumns = indexes[indexName];
192
+ uniqueColumns.push.apply(uniqueColumns, indexedColumns);
193
+ }
194
+ return [2 /*return*/, uniqueColumns];
195
+ }
196
+ });
197
+ });
198
+ };
199
+ SpannerSchemaMetadata.prototype.getIndexes = function (table) {
200
+ return __awaiter(this, void 0, void 0, function () {
201
+ var qb, generateStatement, results, indexes, _i, results_2, row;
202
+ return __generator(this, function (_a) {
203
+ switch (_a.label) {
204
+ case 0:
205
+ qb = new db_1.QueryBuilder('INDEX_COLUMNS')
206
+ .condition({ field: 'TABLE_NAME', operator: '=', value: table.name })
207
+ .sort([{ field: 'ORDINAL_POSITION', desc: false }]);
208
+ generateStatement = function (config) { return qb.toSql(__assign({ dbName: 'INFORMATION_SCHEMA' }, config)); };
209
+ return [4 /*yield*/, this.dbDriver.runQuery(generateStatement)];
210
+ case 1:
211
+ results = _a.sent();
212
+ indexes = {};
213
+ for (_i = 0, results_2 = results; _i < results_2.length; _i++) {
214
+ row = results_2[_i];
215
+ if (!row['INDEX_NAME'])
216
+ continue;
217
+ if (!indexes[row['INDEX_NAME']])
218
+ indexes[row['INDEX_NAME']] = [];
219
+ indexes[row['INDEX_NAME']].push(row['COLUMN_NAME']);
220
+ }
221
+ return [2 /*return*/, indexes];
222
+ }
223
+ });
224
+ });
225
+ };
226
+ return SpannerSchemaMetadata;
227
+ }(db_1.SchemaMetadata));
228
+ exports.SpannerSchemaMetadata = SpannerSchemaMetadata;
229
+ //# sourceMappingURL=SpannerSchemaMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpannerSchemaMetadata.js","sourceRoot":"","sources":["../../src/SpannerSchemaMetadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Table, SchemaOperations, TableChanges } from '@proteinjs/db';
2
+ import { SpannerDriver } from './SpannerDriver';
3
+ export declare class SpannerSchemaOperations implements SchemaOperations {
4
+ private spannerDriver;
5
+ private logger;
6
+ constructor(spannerDriver: SpannerDriver);
7
+ createTable(table: Table<any>): Promise<void>;
8
+ alterTable(table: Table<any>, tableChanges: TableChanges): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=SpannerSchemaOperations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpannerSchemaOperations.d.ts","sourceRoot":"","sources":["../../src/SpannerSchemaOperations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAsE,MAAM,eAAe,CAAC;AAC1I,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,qBAAa,uBAAwB,YAAW,gBAAgB;IAI5D,OAAO,CAAC,aAAa;IAHvB,OAAO,CAAC,MAAM,CAAqC;gBAGzC,aAAa,EAAE,aAAa;IAGhC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAmC7B,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,YAAY;CA0E/D"}
@@ -0,0 +1,215 @@
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.SpannerSchemaOperations = void 0;
40
+ var util_1 = require("@proteinjs/util");
41
+ var db_1 = require("@proteinjs/db");
42
+ var SpannerColumnTypeFactory_1 = require("./SpannerColumnTypeFactory");
43
+ var SpannerSchemaOperations = /** @class */ (function () {
44
+ function SpannerSchemaOperations(spannerDriver) {
45
+ this.spannerDriver = spannerDriver;
46
+ this.logger = new util_1.Logger(this.constructor.name);
47
+ }
48
+ SpannerSchemaOperations.prototype.createTable = function (table) {
49
+ var _a, _b, _c, _d;
50
+ return __awaiter(this, void 0, void 0, function () {
51
+ var indexes, _i, _e, index, serializedColumns, foreignKeys, columnPropertyName, column, columnType, createTableSql, _f, indexes_1, index, createIndexSql, indexName;
52
+ return __generator(this, function (_g) {
53
+ switch (_g.label) {
54
+ case 0:
55
+ indexes = [];
56
+ for (_i = 0, _e = table.indexes; _i < _e.length; _i++) {
57
+ index = _e[_i];
58
+ indexes.push({ name: index.name, columns: index.columns });
59
+ }
60
+ serializedColumns = [];
61
+ foreignKeys = [];
62
+ for (columnPropertyName in table.columns) {
63
+ column = table.columns[columnPropertyName];
64
+ columnType = new SpannerColumnTypeFactory_1.SpannerColumnTypeFactory().getType(column);
65
+ serializedColumns.push({ name: column.name, type: columnType, nullable: (_a = column.options) === null || _a === void 0 ? void 0 : _a.nullable });
66
+ this.logger.info("[".concat(table.name, "] Creating column: ").concat(column.name, " (").concat(column.constructor.name, ")"));
67
+ if ((_c = (_b = column.options) === null || _b === void 0 ? void 0 : _b.unique) === null || _c === void 0 ? void 0 : _c.unique) {
68
+ indexes.push({ name: column.options.unique.indexName, columns: column.name, unique: true });
69
+ this.logger.info("[".concat(table.name, ".").concat(column.name, "] Adding unique constraint"));
70
+ }
71
+ if ((_d = column.options) === null || _d === void 0 ? void 0 : _d.references) {
72
+ foreignKeys.push({ table: column.options.references.table, column: 'id', referencedByColumn: column.name });
73
+ this.logger.info("[".concat(table.name, ".").concat(column.name, "] Adding foreign key -> ").concat(column.options.references.table, ".id"));
74
+ }
75
+ }
76
+ createTableSql = new db_1.StatementFactory().createTable(table.name, serializedColumns, 'id', foreignKeys).sql;
77
+ return [4 /*yield*/, this.spannerDriver.runUpdateSchema(createTableSql)];
78
+ case 1:
79
+ _g.sent();
80
+ _f = 0, indexes_1 = indexes;
81
+ _g.label = 2;
82
+ case 2:
83
+ if (!(_f < indexes_1.length)) return [3 /*break*/, 5];
84
+ index = indexes_1[_f];
85
+ createIndexSql = new db_1.StatementFactory().createIndex(index, table.name).sql;
86
+ indexName = db_1.StatementUtil.getIndexName(table.name, index);
87
+ this.logger.info("[".concat(table.name, "] Creating index: ").concat(indexName, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"));
88
+ return [4 /*yield*/, this.spannerDriver.runUpdateSchema(createIndexSql)];
89
+ case 3:
90
+ _g.sent();
91
+ this.logger.info("[".concat(table.name, "] Created index: ").concat(indexName, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"));
92
+ _g.label = 4;
93
+ case 4:
94
+ _f++;
95
+ return [3 /*break*/, 2];
96
+ case 5: return [2 /*return*/];
97
+ }
98
+ });
99
+ });
100
+ };
101
+ SpannerSchemaOperations.prototype.alterTable = function (table, tableChanges) {
102
+ var _a, _b, _c, _d, _e, _f, _g;
103
+ return __awaiter(this, void 0, void 0, function () {
104
+ var alterParams, indexesToDrop, indexesToAdd, _i, _h, columnPropertyName, column, columnType, _j, _k, columnName, _l, _m, foreignKey, _o, _p, columnTypeChange, errorMessage, _q, _r, columnNullableChange, errorMessage, _s, _t, columnPropertyName, column, errorMessage, alterStatements, _u, alterStatements_1, alterStatement, _v, _w, index, dropIndexSql, _x, _y, index, createIndexSql, indexName;
105
+ return __generator(this, function (_z) {
106
+ switch (_z.label) {
107
+ case 0:
108
+ alterParams = {
109
+ tableName: table.name,
110
+ columnsToAdd: [],
111
+ foreignKeysToDrop: [],
112
+ foreignKeysToAdd: [],
113
+ columnRenames: [],
114
+ };
115
+ indexesToDrop = tableChanges.indexesToDrop;
116
+ indexesToAdd = tableChanges.indexesToCreate;
117
+ for (_i = 0, _h = tableChanges.columnsToCreate; _i < _h.length; _i++) {
118
+ columnPropertyName = _h[_i];
119
+ column = table.columns[columnPropertyName];
120
+ columnType = new SpannerColumnTypeFactory_1.SpannerColumnTypeFactory().getType(column);
121
+ (_a = alterParams.columnsToAdd) === null || _a === void 0 ? void 0 : _a.push({ name: column.name, type: columnType, nullable: (_b = column.options) === null || _b === void 0 ? void 0 : _b.nullable });
122
+ this.logger.info("[".concat(table.name, "] Creating column: ").concat(column.name, " (").concat(column.constructor.name, ")"));
123
+ if (((_d = (_c = column.options) === null || _c === void 0 ? void 0 : _c.unique) === null || _d === void 0 ? void 0 : _d.unique) && tableChanges.columnsWithUniqueConstraintsToCreate.includes(column.name)) {
124
+ indexesToAdd.push({ name: column.options.unique.indexName, columns: column.name, unique: true });
125
+ this.logger.info("[".concat(table.name, ".").concat(column.name, "] Adding unique constraint"));
126
+ }
127
+ if (((_e = column.options) === null || _e === void 0 ? void 0 : _e.references) && tableChanges.columnsWithForeignKeysToCreate.includes(column.name)) {
128
+ (_f = alterParams.foreignKeysToAdd) === null || _f === void 0 ? void 0 : _f.push({ table: column.options.references.table, column: 'id', referencedByColumn: column.name });
129
+ this.logger.info("[".concat(table.name, ".").concat(column.name, "] Adding foreign key -> ").concat(column.options.references.table, ".id"));
130
+ }
131
+ }
132
+ for (_j = 0, _k = tableChanges.columnsWithUniqueConstraintsToDrop; _j < _k.length; _j++) {
133
+ columnName = _k[_j];
134
+ indexesToDrop.push({ columns: columnName, unique: true });
135
+ this.logger.info("[".concat(table.name, ".").concat(columnName, "] Dropping unique constraint"));
136
+ }
137
+ for (_l = 0, _m = tableChanges.foreignKeysToDrop; _l < _m.length; _l++) {
138
+ foreignKey = _m[_l];
139
+ (_g = alterParams.foreignKeysToDrop) === null || _g === void 0 ? void 0 : _g.push(foreignKey);
140
+ this.logger.info("[".concat(table.name, ".").concat(foreignKey.referencedByColumn, "] Dropping foreign key -> ").concat(foreignKey.table, ".").concat(foreignKey.column));
141
+ }
142
+ for (_o = 0, _p = tableChanges.columnTypeChanges; _o < _p.length; _o++) {
143
+ columnTypeChange = _p[_o];
144
+ errorMessage = "[".concat(table.name, ".").concat(columnTypeChange.name, "] Unable to change column types in Spanner. Attempted to change type to: ").concat(columnTypeChange.newType);
145
+ this.logger.error(errorMessage);
146
+ throw new Error(errorMessage);
147
+ }
148
+ for (_q = 0, _r = tableChanges.columnNullableChanges; _q < _r.length; _q++) {
149
+ columnNullableChange = _r[_q];
150
+ errorMessage = "[".concat(table.name, ".").concat(columnNullableChange.name, "] Unable to update nullable constraint on existing column in Spanner. Attempted to update nullable constraint to: ").concat(columnNullableChange.nullable === true);
151
+ this.logger.error(errorMessage);
152
+ throw new Error(errorMessage);
153
+ }
154
+ for (_s = 0, _t = tableChanges.columnsToRename; _s < _t.length; _s++) {
155
+ columnPropertyName = _t[_s];
156
+ column = table.columns[columnPropertyName];
157
+ errorMessage = "[".concat(table.name, ".").concat(column.oldName, "] Unable to rename columns in Spanner. Attempted to perform rename: ").concat(column.oldName, " -> ").concat(column.name);
158
+ this.logger.error(errorMessage);
159
+ throw new Error(errorMessage);
160
+ }
161
+ alterStatements = new db_1.StatementFactory().alterTable(alterParams);
162
+ _u = 0, alterStatements_1 = alterStatements;
163
+ _z.label = 1;
164
+ case 1:
165
+ if (!(_u < alterStatements_1.length)) return [3 /*break*/, 4];
166
+ alterStatement = alterStatements_1[_u];
167
+ return [4 /*yield*/, this.spannerDriver.runUpdateSchema(alterStatement.sql)];
168
+ case 2:
169
+ _z.sent();
170
+ _z.label = 3;
171
+ case 3:
172
+ _u++;
173
+ return [3 /*break*/, 1];
174
+ case 4:
175
+ _v = 0, _w = tableChanges.indexesToDrop;
176
+ _z.label = 5;
177
+ case 5:
178
+ if (!(_v < _w.length)) return [3 /*break*/, 8];
179
+ index = _w[_v];
180
+ dropIndexSql = new db_1.StatementFactory().dropIndex(index, table.name).sql;
181
+ this.logger.info("[".concat(table.name, "] Dropping index: ").concat(index.name, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"));
182
+ return [4 /*yield*/, this.spannerDriver.runUpdateSchema(dropIndexSql)];
183
+ case 6:
184
+ _z.sent();
185
+ this.logger.info("[".concat(table.name, "] Dropped index: ").concat(index.name, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"));
186
+ _z.label = 7;
187
+ case 7:
188
+ _v++;
189
+ return [3 /*break*/, 5];
190
+ case 8:
191
+ _x = 0, _y = tableChanges.indexesToCreate;
192
+ _z.label = 9;
193
+ case 9:
194
+ if (!(_x < _y.length)) return [3 /*break*/, 12];
195
+ index = _y[_x];
196
+ createIndexSql = new db_1.StatementFactory().createIndex(index, table.name).sql;
197
+ indexName = db_1.StatementUtil.getIndexName(table.name, index);
198
+ this.logger.info("[".concat(table.name, "] Creating index: ").concat(indexName, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"));
199
+ return [4 /*yield*/, this.spannerDriver.runUpdateSchema(createIndexSql)];
200
+ case 10:
201
+ _z.sent();
202
+ this.logger.info("[".concat(table.name, "] Created index: ").concat(indexName, " (").concat(typeof index.columns === 'string' ? index.columns : index.columns.join(', '), ")"));
203
+ _z.label = 11;
204
+ case 11:
205
+ _x++;
206
+ return [3 /*break*/, 9];
207
+ case 12: return [2 /*return*/];
208
+ }
209
+ });
210
+ });
211
+ };
212
+ return SpannerSchemaOperations;
213
+ }());
214
+ exports.SpannerSchemaOperations = SpannerSchemaOperations;
215
+ //# sourceMappingURL=SpannerSchemaOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpannerSchemaOperations.js","sourceRoot":"","sources":["../../src/SpannerSchemaOperations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Crud.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Crud.test.d.ts","sourceRoot":"","sources":["../../test/Crud.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var db_1 = require("@proteinjs/db");
4
+ var SpannerDriver_1 = require("../src/SpannerDriver");
5
+ var dropTable_1 = require("./dropTable");
6
+ var spannerDriver = new SpannerDriver_1.SpannerDriver({
7
+ projectId: 'proteinjs-test',
8
+ instanceName: 'proteinjs-test',
9
+ databaseName: 'test',
10
+ });
11
+ describe('CRUD Tests', (0, db_1.crudTests)(spannerDriver, (0, dropTable_1.getDropTable)(spannerDriver)));
12
+ //# sourceMappingURL=Crud.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Crud.test.js","sourceRoot":"","sources":["../../test/Crud.test.ts"],"names":[],"mappings":";;AAAA,oCAAyC;AACzC,sDAAoD;AACpD,yCAA0C;AAE1C,IAAM,aAAa,GAAG,IAAI,6BAAa,CAAC;IACvC,SAAS,EAAE,gBAAgB;IAC3B,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,MAAM;CACpB,CAAC,CAAC;AAEH,QAAQ,CACP,YAAY,EACZ,IAAA,cAAS,EACR,aAAa,EACb,IAAA,wBAAY,EAAC,aAAa,CAAC,CAC3B,CACD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TableManager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableManager.test.d.ts","sourceRoot":"","sources":["../../test/TableManager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var db_1 = require("@proteinjs/db");
4
+ var SpannerDriver_1 = require("../src/SpannerDriver");
5
+ var SpannerColumnTypeFactory_1 = require("../src/SpannerColumnTypeFactory");
6
+ var dropTable_1 = require("./dropTable");
7
+ var spannerDriver = new SpannerDriver_1.SpannerDriver({
8
+ projectId: 'proteinjs-test',
9
+ instanceName: 'proteinjs-test',
10
+ databaseName: 'test',
11
+ });
12
+ describe('Table Manager Tests', (0, db_1.tableManagerTests)(spannerDriver, (0, dropTable_1.getDropTable)(spannerDriver), new SpannerColumnTypeFactory_1.SpannerColumnTypeFactory().getType, {
13
+ alterColumnName: true,
14
+ alterColumnTypes: true,
15
+ alterNullableConstraint: true,
16
+ }));
17
+ //# sourceMappingURL=TableManager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableManager.test.js","sourceRoot":"","sources":["../../test/TableManager.test.ts"],"names":[],"mappings":";;AAAA,oCAAiD;AACjD,sDAAoD;AACpD,4EAA2E;AAC3E,yCAA2C;AAE3C,IAAM,aAAa,GAAG,IAAI,6BAAa,CAAC;IACvC,SAAS,EAAE,gBAAgB;IAC3B,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,MAAM;CACpB,CAAC,CAAC;AAEH,QAAQ,CACP,qBAAqB,EACrB,IAAA,sBAAiB,EAChB,aAAa,EACb,IAAA,wBAAY,EAAC,aAAa,CAAC,EAC3B,IAAI,mDAAwB,EAAE,CAAC,OAAO,EACtC;IACC,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,IAAI;CAC7B,CACD,CACD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Table } from '@proteinjs/db';
2
+ import { SpannerDriver } from '../src/SpannerDriver';
3
+ export declare const getDropTable: (spannerDriver: SpannerDriver) => (table: Table<any>) => Promise<void>;
4
+ //# sourceMappingURL=dropTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropTable.d.ts","sourceRoot":"","sources":["../../test/dropTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,eAAO,MAAM,YAAY,kBAAmB,aAAa,aAClC,MAAM,GAAG,CAAC,kBA2BhC,CAAA"}