pg-mvc-service 1.0.5 → 1.0.7
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/dist/Service.js +1 -1
- package/dist/exceptions/Exception.js +3 -3
- package/dist/index.js +1 -1
- package/dist/models/TableModel.js +9 -12
- package/dist/models/ValidateClient.js +6 -5
- package/package.json +1 -1
- package/src/Service.ts +2 -2
- package/src/exceptions/Exception.ts +1 -1
- package/src/index.ts +1 -1
- package/src/models/TableModel.ts +10 -13
- package/src/models/ValidateClient.ts +6 -5
- package/dist/models/index.js +0 -14
- package/src/models/index.ts +0 -7
package/dist/Service.js
CHANGED
|
@@ -127,7 +127,7 @@ class Service {
|
|
|
127
127
|
});
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
130
|
-
else if (ex instanceof Exception_1.
|
|
130
|
+
else if (ex instanceof Exception_1.UnprocessableException) {
|
|
131
131
|
this.res.status(422).json({
|
|
132
132
|
errorCode: `${this.apiCode}-${ex.ErrorId}`,
|
|
133
133
|
errorMessage: ex.message
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.UnprocessableException = exports.DbConflictException = exports.MaintenanceException = exports.InputErrorException = exports.ForbiddenException = exports.AuthException = void 0;
|
|
4
4
|
class AuthException extends Error {
|
|
5
5
|
get Id() {
|
|
6
6
|
return this.id;
|
|
@@ -44,7 +44,7 @@ class DbConflictException extends Error {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
exports.DbConflictException = DbConflictException;
|
|
47
|
-
class
|
|
47
|
+
class UnprocessableException extends Error {
|
|
48
48
|
get ErrorId() {
|
|
49
49
|
return this.errorId;
|
|
50
50
|
}
|
|
@@ -55,4 +55,4 @@ class BusinessLogicException extends Error {
|
|
|
55
55
|
this.errorId = errorId;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
exports.
|
|
58
|
+
exports.UnprocessableException = UnprocessableException;
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "AuthException", { enumerable: true, get: functio
|
|
|
9
9
|
Object.defineProperty(exports, "InputErrorException", { enumerable: true, get: function () { return Exception_1.InputErrorException; } });
|
|
10
10
|
Object.defineProperty(exports, "ForbiddenException", { enumerable: true, get: function () { return Exception_1.ForbiddenException; } });
|
|
11
11
|
Object.defineProperty(exports, "DbConflictException", { enumerable: true, get: function () { return Exception_1.DbConflictException; } });
|
|
12
|
-
Object.defineProperty(exports, "BusinessLogicException", { enumerable: true, get: function () { return Exception_1.
|
|
12
|
+
Object.defineProperty(exports, "BusinessLogicException", { enumerable: true, get: function () { return Exception_1.UnprocessableException; } });
|
|
13
13
|
var Swagger_1 = require("./documents/Swagger");
|
|
14
14
|
Object.defineProperty(exports, "createSwagger", { enumerable: true, get: function () { return Swagger_1.createSwagger; } });
|
|
15
15
|
var AwsS3Client_1 = require("./clients/AwsS3Client");
|
|
@@ -366,9 +366,6 @@ class TableModel {
|
|
|
366
366
|
return { datas: data.rows, count: Number(countData.rows[0].count), lastPage: Math.ceil(Number(countData.rows[0].count) / this.PageCount) };
|
|
367
367
|
});
|
|
368
368
|
}
|
|
369
|
-
throwValidationError(code, message) {
|
|
370
|
-
throw new Exception_1.InputErrorException(code, message);
|
|
371
|
-
}
|
|
372
369
|
validateOptions(options, isInsert) {
|
|
373
370
|
return __awaiter(this, void 0, void 0, function* () {
|
|
374
371
|
if (Object.keys(options).length === 0) {
|
|
@@ -384,17 +381,17 @@ class TableModel {
|
|
|
384
381
|
if (column.attribute === 'nullable') {
|
|
385
382
|
continue;
|
|
386
383
|
}
|
|
387
|
-
|
|
384
|
+
throw new Exception_1.UnprocessableException("001", this.errorMessages.null.replace('{name}', name));
|
|
388
385
|
}
|
|
389
386
|
if (ValidateValueUtil_1.default.isErrorValue(column.type, value)) {
|
|
390
|
-
|
|
387
|
+
throw new Exception_1.UnprocessableException("002", this.errorMessages[column.type].replace('{name}', name));
|
|
391
388
|
}
|
|
392
389
|
if (column.type === 'string') {
|
|
393
390
|
if (Number.isInteger(column.length) === false) {
|
|
394
391
|
throw new Error(`For strings, please specify the length of the column.(column: ${column.columnName})`);
|
|
395
392
|
}
|
|
396
393
|
if (value.toString().length > column.length) {
|
|
397
|
-
|
|
394
|
+
throw new Exception_1.UnprocessableException("003", this.errorMessages.length.replace('{name}', name).replace('{length}', column.length.toString()));
|
|
398
395
|
}
|
|
399
396
|
}
|
|
400
397
|
else if (column.type === 'string[]') {
|
|
@@ -404,7 +401,7 @@ class TableModel {
|
|
|
404
401
|
// ValidateValueUtil.isErrorValue(column.type, value)で型チェックしてるのでas []にしている
|
|
405
402
|
for (const v of value) {
|
|
406
403
|
if (v.toString().length > column.length) {
|
|
407
|
-
|
|
404
|
+
throw new Exception_1.UnprocessableException("004", this.errorMessages.length.replace('{name}', name).replace('{length}', column.length.toString()));
|
|
408
405
|
}
|
|
409
406
|
}
|
|
410
407
|
}
|
|
@@ -420,14 +417,14 @@ class TableModel {
|
|
|
420
417
|
// 一部の値がnullの場合はエラー
|
|
421
418
|
if (refValues.some(value => value === null || value === undefined)) {
|
|
422
419
|
const name = ref.columns.map(col => { var _a; return (_a = this.getColumn(col.target).alias) !== null && _a !== void 0 ? _a : this.getColumn(col.target).columnName; }).join(',');
|
|
423
|
-
|
|
420
|
+
throw new Exception_1.UnprocessableException("004", this.errorMessages.fk.replace('{name}', name));
|
|
424
421
|
}
|
|
425
422
|
let refIndex = 1;
|
|
426
423
|
const sql = `SELECT COUNT(*) as count FROM ${ref.table} WHERE ${ref.columns.map(col => `${col.ref} = $${refIndex++}`).join(" AND ")}`;
|
|
427
424
|
const datas = yield this.clientQuery(sql, refValues);
|
|
428
425
|
if (datas.rows[0].count == "0") {
|
|
429
426
|
const name = ref.columns.map(col => { var _a; return (_a = this.getColumn(col.target).alias) !== null && _a !== void 0 ? _a : this.getColumn(col.target).columnName; }).join(',');
|
|
430
|
-
|
|
427
|
+
throw new Exception_1.UnprocessableException("004", this.errorMessages.fk.replace('{name}', name));
|
|
431
428
|
}
|
|
432
429
|
}
|
|
433
430
|
}
|
|
@@ -441,7 +438,7 @@ class TableModel {
|
|
|
441
438
|
if (options[key] === undefined || options[key] === null) {
|
|
442
439
|
// Null許容されていないカラムにNULLを入れようとしているか?
|
|
443
440
|
if (column.attribute === "primary" || column.attribute === "noDefault") {
|
|
444
|
-
|
|
441
|
+
throw new Exception_1.UnprocessableException("101", this.errorMessages.notInput.replace('{name}', name));
|
|
445
442
|
}
|
|
446
443
|
}
|
|
447
444
|
}
|
|
@@ -531,7 +528,7 @@ class TableModel {
|
|
|
531
528
|
const sql = `UPDATE ${this.TableName} SET ${updateExpressions.join(',')} WHERE id = $${vars.length}`;
|
|
532
529
|
const data = yield this.executeQuery(sql, vars);
|
|
533
530
|
if (data.rowCount !== 1) {
|
|
534
|
-
throw new Exception_1.
|
|
531
|
+
throw new Exception_1.UnprocessableException("201", this.errorMessages.idNotExist.replace('{id}', id));
|
|
535
532
|
}
|
|
536
533
|
});
|
|
537
534
|
}
|
|
@@ -565,7 +562,7 @@ class TableModel {
|
|
|
565
562
|
let sql = `DELETE FROM ${this.TableName} WHERE id = $1`;
|
|
566
563
|
const datas = yield this.executeQuery(sql, [id]);
|
|
567
564
|
if (datas.rowCount !== 1) {
|
|
568
|
-
throw new Exception_1.
|
|
565
|
+
throw new Exception_1.UnprocessableException("301", this.errorMessages.idNotExist.replace('{id}', id));
|
|
569
566
|
}
|
|
570
567
|
});
|
|
571
568
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const Exception_1 = require("../exceptions/Exception");
|
|
3
4
|
class ValidateClient {
|
|
4
5
|
constructor(model) {
|
|
5
6
|
this.model = model;
|
|
@@ -50,7 +51,7 @@ class ValidateClient {
|
|
|
50
51
|
message = message.replace('{column}', (_b = column.alias) !== null && _b !== void 0 ? _b : column.columnName);
|
|
51
52
|
message = message.replace('{value}', value.toString());
|
|
52
53
|
message = message.replace('{list}', list.join(', '));
|
|
53
|
-
|
|
54
|
+
throw new Exception_1.UnprocessableException(code, message);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
validateUnderNow(option, key, error) {
|
|
@@ -73,7 +74,7 @@ class ValidateClient {
|
|
|
73
74
|
}
|
|
74
75
|
message = message.replace('{column}', (_b = column.alias) !== null && _b !== void 0 ? _b : column.columnName);
|
|
75
76
|
message = message.replace('{value}', value.toString());
|
|
76
|
-
|
|
77
|
+
throw new Exception_1.UnprocessableException(code, message);
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
validateUnderToday(option, key, isErrorToday, error) {
|
|
@@ -109,7 +110,7 @@ class ValidateClient {
|
|
|
109
110
|
}
|
|
110
111
|
message = message.replace('{column}', (_b = column.alias) !== null && _b !== void 0 ? _b : column.columnName);
|
|
111
112
|
message = message.replace('{value}', value.toString());
|
|
112
|
-
|
|
113
|
+
throw new Exception_1.UnprocessableException(code, message);
|
|
113
114
|
}
|
|
114
115
|
}
|
|
115
116
|
validateRegExp(option, key, regExp, error) {
|
|
@@ -133,7 +134,7 @@ class ValidateClient {
|
|
|
133
134
|
}
|
|
134
135
|
message = message.replace('{column}', (_b = column.alias) !== null && _b !== void 0 ? _b : column.columnName);
|
|
135
136
|
message = message.replace('{value}', value.toString());
|
|
136
|
-
|
|
137
|
+
throw new Exception_1.UnprocessableException(code, message);
|
|
137
138
|
}
|
|
138
139
|
}
|
|
139
140
|
validatePositiveNumber(option, key, error) {
|
|
@@ -157,7 +158,7 @@ class ValidateClient {
|
|
|
157
158
|
}
|
|
158
159
|
message = message.replace('{column}', (_b = column.alias) !== null && _b !== void 0 ? _b : column.columnName);
|
|
159
160
|
message = message.replace('{value}', value.toString());
|
|
160
|
-
|
|
161
|
+
throw new Exception_1.UnprocessableException(code, message);
|
|
161
162
|
}
|
|
162
163
|
}
|
|
163
164
|
}
|
package/package.json
CHANGED
package/src/Service.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import axios, { AxiosResponse } from "axios";
|
|
2
2
|
import { Request, Response } from 'express';
|
|
3
3
|
import { Pool, type PoolClient } from 'pg';
|
|
4
|
-
import { MaintenanceException, AuthException, InputErrorException, ForbiddenException, DbConflictException,
|
|
4
|
+
import { MaintenanceException, AuthException, InputErrorException, ForbiddenException, DbConflictException, UnprocessableException } from './exceptions/Exception';
|
|
5
5
|
import { RequestType } from './reqestResponse/RequestType';
|
|
6
6
|
import { ResponseType } from './reqestResponse/ResponseType';
|
|
7
7
|
import { AwsS3Client } from './clients/AwsS3Client';
|
|
@@ -110,7 +110,7 @@ export class Service {
|
|
|
110
110
|
errorMessage : ex.message
|
|
111
111
|
});
|
|
112
112
|
return;
|
|
113
|
-
} else if (ex instanceof
|
|
113
|
+
} else if (ex instanceof UnprocessableException) {
|
|
114
114
|
this.res.status(422).json({
|
|
115
115
|
errorCode : `${this.apiCode}-${ex.ErrorId}`,
|
|
116
116
|
errorMessage : ex.message
|
|
@@ -45,7 +45,7 @@ export class DbConflictException extends Error {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
export class
|
|
48
|
+
export class UnprocessableException extends Error {
|
|
49
49
|
// for 422 Unprocessable Entity
|
|
50
50
|
private errorId: string = "";
|
|
51
51
|
get ErrorId(): string {
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Service } from './Service';
|
|
2
|
-
export { MaintenanceException, AuthException, InputErrorException, ForbiddenException, DbConflictException, BusinessLogicException } from './exceptions/Exception';
|
|
2
|
+
export { MaintenanceException, AuthException, InputErrorException, ForbiddenException, DbConflictException, UnprocessableException as BusinessLogicException } from './exceptions/Exception';
|
|
3
3
|
export { createSwagger } from './documents/Swagger';
|
|
4
4
|
export { AwsS3Client } from './clients/AwsS3Client';
|
|
5
5
|
export { Base64Client } from './clients/Base64Client';
|
package/src/models/TableModel.ts
CHANGED
|
@@ -4,7 +4,7 @@ import ValidateValueUtil from './SqlUtils/ValidateValueUtil';
|
|
|
4
4
|
import SelectExpression from './SqlUtils/SelectExpression';
|
|
5
5
|
import WhereExpression from './SqlUtils/WhereExpression';
|
|
6
6
|
import ValidateClient from './ValidateClient';
|
|
7
|
-
import {
|
|
7
|
+
import { UnprocessableException } from '../exceptions/Exception';
|
|
8
8
|
|
|
9
9
|
export class TableModel {
|
|
10
10
|
|
|
@@ -422,9 +422,6 @@ export class TableModel {
|
|
|
422
422
|
'fk': 'The value of {name} does not exist in the table.',
|
|
423
423
|
'idNotExist': 'The specified ID({id}) does not exist in the table.',
|
|
424
424
|
}
|
|
425
|
-
public throwValidationError(code: string, message: string): never {
|
|
426
|
-
throw new InputErrorException(code, message);
|
|
427
|
-
}
|
|
428
425
|
|
|
429
426
|
protected async validateOptions(options: TOption, isInsert: boolean): Promise<void> {
|
|
430
427
|
if (Object.keys(options).length === 0) {
|
|
@@ -442,11 +439,11 @@ export class TableModel {
|
|
|
442
439
|
if (column.attribute === 'nullable') {
|
|
443
440
|
continue;
|
|
444
441
|
}
|
|
445
|
-
|
|
442
|
+
throw new UnprocessableException("001", this.errorMessages.null.replace('{name}', name));
|
|
446
443
|
}
|
|
447
444
|
|
|
448
445
|
if (ValidateValueUtil.isErrorValue(column.type, value)) {
|
|
449
|
-
|
|
446
|
+
throw new UnprocessableException("002", this.errorMessages[column.type].replace('{name}', name));
|
|
450
447
|
}
|
|
451
448
|
|
|
452
449
|
if (column.type === 'string') {
|
|
@@ -455,7 +452,7 @@ export class TableModel {
|
|
|
455
452
|
}
|
|
456
453
|
|
|
457
454
|
if (value.toString().length > column.length) {
|
|
458
|
-
|
|
455
|
+
throw new UnprocessableException("003", this.errorMessages.length.replace('{name}', name).replace('{length}', column.length.toString()));
|
|
459
456
|
}
|
|
460
457
|
} else if (column.type === 'string[]') {
|
|
461
458
|
if (Number.isInteger(column.length) === false) {
|
|
@@ -465,7 +462,7 @@ export class TableModel {
|
|
|
465
462
|
// ValidateValueUtil.isErrorValue(column.type, value)で型チェックしてるのでas []にしている
|
|
466
463
|
for (const v of value as Array<string | number | boolean>) {
|
|
467
464
|
if (v.toString().length > column.length) {
|
|
468
|
-
|
|
465
|
+
throw new UnprocessableException("004", this.errorMessages.length.replace('{name}', name).replace('{length}', column.length.toString()));
|
|
469
466
|
}
|
|
470
467
|
}
|
|
471
468
|
}
|
|
@@ -483,7 +480,7 @@ export class TableModel {
|
|
|
483
480
|
// 一部の値がnullの場合はエラー
|
|
484
481
|
if (refValues.some(value => value === null || value === undefined)) {
|
|
485
482
|
const name = ref.columns.map(col => this.getColumn(col.target).alias ?? this.getColumn(col.target).columnName).join(',');
|
|
486
|
-
|
|
483
|
+
throw new UnprocessableException("004", this.errorMessages.fk.replace('{name}', name));
|
|
487
484
|
}
|
|
488
485
|
|
|
489
486
|
let refIndex = 1;
|
|
@@ -491,7 +488,7 @@ export class TableModel {
|
|
|
491
488
|
const datas = await this.clientQuery(sql, refValues);
|
|
492
489
|
if (datas.rows[0].count == "0") {
|
|
493
490
|
const name = ref.columns.map(col => this.getColumn(col.target).alias ?? this.getColumn(col.target).columnName).join(',');
|
|
494
|
-
|
|
491
|
+
throw new UnprocessableException("004", this.errorMessages.fk.replace('{name}', name));
|
|
495
492
|
}
|
|
496
493
|
}
|
|
497
494
|
}
|
|
@@ -504,7 +501,7 @@ export class TableModel {
|
|
|
504
501
|
if (options[key] === undefined || options[key] === null) {
|
|
505
502
|
// Null許容されていないカラムにNULLを入れようとしているか?
|
|
506
503
|
if (column.attribute === "primary" || column.attribute === "noDefault") {
|
|
507
|
-
|
|
504
|
+
throw new UnprocessableException("101", this.errorMessages.notInput.replace('{name}', name));
|
|
508
505
|
}
|
|
509
506
|
}
|
|
510
507
|
}
|
|
@@ -599,7 +596,7 @@ export class TableModel {
|
|
|
599
596
|
const sql = `UPDATE ${this.TableName} SET ${updateExpressions.join(',')} WHERE id = $${vars.length}`;
|
|
600
597
|
const data = await this.executeQuery(sql, vars);
|
|
601
598
|
if (data.rowCount !== 1) {
|
|
602
|
-
throw new
|
|
599
|
+
throw new UnprocessableException("201", this.errorMessages.idNotExist.replace('{id}', id));
|
|
603
600
|
}
|
|
604
601
|
}
|
|
605
602
|
|
|
@@ -636,7 +633,7 @@ export class TableModel {
|
|
|
636
633
|
|
|
637
634
|
const datas = await this.executeQuery(sql, [id]);
|
|
638
635
|
if (datas.rowCount !== 1) {
|
|
639
|
-
throw new
|
|
636
|
+
throw new UnprocessableException("301", this.errorMessages.idNotExist.replace('{id}', id));
|
|
640
637
|
}
|
|
641
638
|
}
|
|
642
639
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UnprocessableException } from "../exceptions/Exception";
|
|
1
2
|
import { TableModel } from "./TableModel";
|
|
2
3
|
import { TOption, TSqlValue } from "./Type";
|
|
3
4
|
|
|
@@ -58,7 +59,7 @@ export default class ValidateClient {
|
|
|
58
59
|
message = message.replace('{column}', column.alias ?? column.columnName);
|
|
59
60
|
message = message.replace('{value}', value.toString());
|
|
60
61
|
message = message.replace('{list}', list.join(', '));
|
|
61
|
-
|
|
62
|
+
throw new UnprocessableException(code, message);
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
|
|
@@ -83,7 +84,7 @@ export default class ValidateClient {
|
|
|
83
84
|
}
|
|
84
85
|
message = message.replace('{column}', column.alias ?? column.columnName);
|
|
85
86
|
message = message.replace('{value}', value.toString());
|
|
86
|
-
|
|
87
|
+
throw new UnprocessableException(code, message);
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
|
|
@@ -122,7 +123,7 @@ export default class ValidateClient {
|
|
|
122
123
|
}
|
|
123
124
|
message = message.replace('{column}', column.alias ?? column.columnName);
|
|
124
125
|
message = message.replace('{value}', value.toString());
|
|
125
|
-
|
|
126
|
+
throw new UnprocessableException(code, message);
|
|
126
127
|
}
|
|
127
128
|
}
|
|
128
129
|
|
|
@@ -149,7 +150,7 @@ export default class ValidateClient {
|
|
|
149
150
|
}
|
|
150
151
|
message = message.replace('{column}', column.alias ?? column.columnName);
|
|
151
152
|
message = message.replace('{value}', value.toString());
|
|
152
|
-
|
|
153
|
+
throw new UnprocessableException(code, message);
|
|
153
154
|
}
|
|
154
155
|
}
|
|
155
156
|
|
|
@@ -176,7 +177,7 @@ export default class ValidateClient {
|
|
|
176
177
|
}
|
|
177
178
|
message = message.replace('{column}', column.alias ?? column.columnName);
|
|
178
179
|
message = message.replace('{value}', value.toString());
|
|
179
|
-
|
|
180
|
+
throw new UnprocessableException(code, message);
|
|
180
181
|
}
|
|
181
182
|
}
|
|
182
183
|
}
|
package/dist/models/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MigrateDatabase = exports.rollback = exports.migrate = exports.MigrateTable = exports.createTableDoc = exports.TableModel = void 0;
|
|
4
|
-
var TableModel_1 = require("./TableModel");
|
|
5
|
-
Object.defineProperty(exports, "TableModel", { enumerable: true, get: function () { return TableModel_1.TableModel; } });
|
|
6
|
-
var TableDoc_1 = require("./TableDoc");
|
|
7
|
-
Object.defineProperty(exports, "createTableDoc", { enumerable: true, get: function () { return TableDoc_1.createTableDoc; } });
|
|
8
|
-
var MigrateTable_1 = require("./MigrateTable");
|
|
9
|
-
Object.defineProperty(exports, "MigrateTable", { enumerable: true, get: function () { return MigrateTable_1.MigrateTable; } });
|
|
10
|
-
var MigrateRollback_1 = require("./MigrateRollback");
|
|
11
|
-
Object.defineProperty(exports, "migrate", { enumerable: true, get: function () { return MigrateRollback_1.migrate; } });
|
|
12
|
-
Object.defineProperty(exports, "rollback", { enumerable: true, get: function () { return MigrateRollback_1.rollback; } });
|
|
13
|
-
var MigrateDatabase_1 = require("./MigrateDatabase");
|
|
14
|
-
Object.defineProperty(exports, "MigrateDatabase", { enumerable: true, get: function () { return MigrateDatabase_1.MigrateDatabase; } });
|
package/src/models/index.ts
DELETED