@asapjs/sequelize 0.2.1 → 0.2.5
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/dbml/index.d.ts +1 -1
- package/dist/dbml/index.d.ts.map +1 -1
- package/dist/dbml/index.js +39 -36
- package/dist/dbml/index.js.map +1 -1
- package/dist/dto/ExtendableDto.d.ts +22 -0
- package/dist/dto/ExtendableDto.d.ts.map +1 -0
- package/dist/dto/ExtendableDto.js +133 -0
- package/dist/dto/ExtendableDto.js.map +1 -0
- package/dist/dto/PaginationQueryDto.d.ts +6 -0
- package/dist/dto/PaginationQueryDto.d.ts.map +1 -0
- package/dist/dto/PaginationQueryDto.js +25 -0
- package/dist/dto/PaginationQueryDto.js.map +1 -0
- package/dist/dto/index.d.ts +2 -37
- package/dist/dto/index.d.ts.map +1 -1
- package/dist/dto/index.js +8 -187
- package/dist/dto/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -7
- package/dist/index.js.map +1 -1
- package/dist/table/index.d.ts +2 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +22 -21
- package/dist/table/index.js.map +1 -1
- package/dist/types/array.d.ts +7 -0
- package/dist/types/array.d.ts.map +1 -0
- package/dist/types/array.js +42 -0
- package/dist/types/array.js.map +1 -0
- package/dist/types/base64.d.ts +10 -0
- package/dist/types/base64.d.ts.map +1 -0
- package/dist/types/base64.js +20 -0
- package/dist/types/base64.js.map +1 -0
- package/dist/types/belongsto.d.ts +6 -0
- package/dist/types/belongsto.d.ts.map +1 -0
- package/dist/types/belongsto.js +27 -0
- package/dist/types/belongsto.js.map +1 -0
- package/dist/types/binary.d.ts +10 -0
- package/dist/types/binary.d.ts.map +1 -0
- package/dist/types/binary.js +20 -0
- package/dist/types/binary.js.map +1 -0
- package/dist/types/boolean.d.ts +9 -0
- package/dist/types/boolean.d.ts.map +1 -0
- package/dist/types/boolean.js +27 -0
- package/dist/types/boolean.js.map +1 -0
- package/dist/types/dateonly.d.ts +8 -0
- package/dist/types/dateonly.d.ts.map +1 -0
- package/dist/types/dateonly.js +20 -0
- package/dist/types/dateonly.js.map +1 -0
- package/dist/types/datetime.d.ts +8 -0
- package/dist/types/datetime.d.ts.map +1 -0
- package/dist/types/datetime.js +20 -0
- package/dist/types/datetime.js.map +1 -0
- package/dist/types/decemal.d.ts +11 -0
- package/dist/types/decemal.d.ts.map +1 -0
- package/dist/types/decemal.js +30 -0
- package/dist/types/decemal.js.map +1 -0
- package/dist/types/double.d.ts +11 -0
- package/dist/types/double.d.ts.map +1 -0
- package/dist/types/double.js +27 -0
- package/dist/types/double.js.map +1 -0
- package/dist/types/dto.d.ts +10 -0
- package/dist/types/dto.d.ts.map +1 -0
- package/dist/types/dto.js +22 -0
- package/dist/types/dto.js.map +1 -0
- package/dist/types/enum.d.ts +9 -0
- package/dist/types/enum.d.ts.map +1 -0
- package/dist/types/enum.js +26 -0
- package/dist/types/enum.js.map +1 -0
- package/dist/types/float.d.ts +11 -0
- package/dist/types/float.d.ts.map +1 -0
- package/dist/types/float.js +27 -0
- package/dist/types/float.js.map +1 -0
- package/dist/types/foreignkey.d.ts +6 -0
- package/dist/types/foreignkey.d.ts.map +1 -0
- package/dist/types/foreignkey.js +33 -0
- package/dist/types/foreignkey.js.map +1 -0
- package/dist/types/generators/toSequelizeGenerator.d.ts +3 -0
- package/dist/types/generators/toSequelizeGenerator.d.ts.map +1 -0
- package/dist/types/generators/toSequelizeGenerator.js +6 -0
- package/dist/types/generators/toSequelizeGenerator.js.map +1 -0
- package/dist/types/generators/toSwaggerGenerator.d.ts +9 -0
- package/dist/types/generators/toSwaggerGenerator.d.ts.map +1 -0
- package/dist/types/generators/toSwaggerGenerator.js +6 -0
- package/dist/types/generators/toSwaggerGenerator.js.map +1 -0
- package/dist/types/generators/typeGenerator.d.ts +15 -0
- package/dist/types/generators/typeGenerator.d.ts.map +1 -0
- package/dist/types/generators/typeGenerator.js +38 -0
- package/dist/types/generators/typeGenerator.js.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +53 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/int.d.ts +12 -0
- package/dist/types/int.d.ts.map +1 -0
- package/dist/types/int.js +27 -0
- package/dist/types/int.js.map +1 -0
- package/dist/types/json.d.ts +9 -0
- package/dist/types/json.d.ts.map +1 -0
- package/dist/types/json.js +31 -0
- package/dist/types/json.js.map +1 -0
- package/dist/types/long.d.ts +12 -0
- package/dist/types/long.d.ts.map +1 -0
- package/dist/types/long.js +27 -0
- package/dist/types/long.js.map +1 -0
- package/dist/types/paging.d.ts +6 -0
- package/dist/types/paging.d.ts.map +1 -0
- package/dist/types/paging.js +65 -0
- package/dist/types/paging.js.map +1 -0
- package/dist/types/password.d.ts +6 -0
- package/dist/types/password.d.ts.map +1 -0
- package/dist/types/password.js +20 -0
- package/dist/types/password.js.map +1 -0
- package/dist/types/query.d.ts +20 -0
- package/dist/types/query.d.ts.map +1 -0
- package/dist/types/query.js +31 -0
- package/dist/types/query.js.map +1 -0
- package/dist/types/string.d.ts +11 -0
- package/dist/types/string.d.ts.map +1 -0
- package/dist/types/string.js +26 -0
- package/dist/types/string.js.map +1 -0
- package/dist/types/text.d.ts +9 -0
- package/dist/types/text.d.ts.map +1 -0
- package/dist/types/text.js +16 -0
- package/dist/types/text.js.map +1 -0
- package/dist/types/type.d.ts +7 -0
- package/dist/types/type.d.ts.map +1 -0
- package/dist/types/type.js +3 -0
- package/dist/types/type.js.map +1 -0
- package/package.json +1 -1
- package/dist/type/index.d.ts +0 -159
- package/dist/type/index.d.ts.map +0 -1
- package/dist/type/index.js +0 -340
- package/dist/type/index.js.map +0 -1
package/dist/dbml/index.d.ts
CHANGED
package/dist/dbml/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dbml/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dbml/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAuJtC,eAAO,MAAQ,QAAQ,SA/GU,MAAM,aAAa,MAAM;;qBA+GjC,WAAW,oBAA0B,CAAC"}
|
package/dist/dbml/index.js
CHANGED
|
@@ -17,7 +17,7 @@ exports.getDBMLData = exports.addTable = void 0;
|
|
|
17
17
|
/* eslint-disable no-nested-ternary */
|
|
18
18
|
const core_1 = require("@asapjs/core");
|
|
19
19
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
20
|
-
const idColumnData = `id
|
|
20
|
+
const idColumnData = `id int PK`;
|
|
21
21
|
class DBMLApplication {
|
|
22
22
|
constructor() {
|
|
23
23
|
this.tableNames = {};
|
|
@@ -28,38 +28,7 @@ class DBMLApplication {
|
|
|
28
28
|
this.addTable = (name, className, data) => __awaiter(this, void 0, void 0, function* () {
|
|
29
29
|
this.tableNames = Object.assign(Object.assign({}, this.tableNames), { [className]: name });
|
|
30
30
|
// console.log(this.tableNames);
|
|
31
|
-
const tableInfo = { name, columns: [] };
|
|
32
|
-
Object.entries(data).forEach(([key, v]) => {
|
|
33
|
-
var _a, _b, _c, _d;
|
|
34
|
-
if (v.__name === 'foreignkey') {
|
|
35
|
-
tableInfo.columns.push({
|
|
36
|
-
name: key,
|
|
37
|
-
type: 'tinyint',
|
|
38
|
-
note: '',
|
|
39
|
-
});
|
|
40
|
-
this.relations.push({
|
|
41
|
-
fromTableName: name,
|
|
42
|
-
fromTableColumnName: key,
|
|
43
|
-
toTableClassName: (_a = v.toSequelize) === null || _a === void 0 ? void 0 : _a.call(v)().name,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
else if (v.__name !== 'belongsto') {
|
|
47
|
-
const enumData = (_c = (_b = v.toSwagger) === null || _b === void 0 ? void 0 : _b.call(v)) === null || _c === void 0 ? void 0 : _c.enum;
|
|
48
|
-
const enumName = `${name}_${key}_enum`;
|
|
49
|
-
tableInfo.columns.push({
|
|
50
|
-
name: key,
|
|
51
|
-
type: enumData ? enumName : v.__name,
|
|
52
|
-
note: (_d = v.toSwagger) === null || _d === void 0 ? void 0 : _d.call(v).description,
|
|
53
|
-
enum: enumData,
|
|
54
|
-
});
|
|
55
|
-
if (enumData) {
|
|
56
|
-
this.enums.push({
|
|
57
|
-
name: enumName,
|
|
58
|
-
values: enumData,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
});
|
|
31
|
+
const tableInfo = { name, columns: [], data };
|
|
63
32
|
this.tables.push(tableInfo);
|
|
64
33
|
});
|
|
65
34
|
this.generateProjectData = () => {
|
|
@@ -102,14 +71,48 @@ class DBMLApplication {
|
|
|
102
71
|
var _a;
|
|
103
72
|
return `ref: ${relationInfo.fromTableName}.${relationInfo.fromTableColumnName} > ${((_a = this.tableNames) === null || _a === void 0 ? void 0 : _a[relationInfo.toTableClassName]) || relationInfo.toTableClassName}.id`;
|
|
104
73
|
};
|
|
105
|
-
this.generateDBMLData = () => {
|
|
74
|
+
this.generateDBMLData = () => __awaiter(this, void 0, void 0, function* () {
|
|
106
75
|
const projectData = this.generateProjectData();
|
|
107
|
-
const
|
|
76
|
+
const tableData = yield Promise.all(this.tables.map((tableInfo) => {
|
|
77
|
+
Object.entries(tableInfo.data).forEach(([key, v]) => {
|
|
78
|
+
var _a, _b, _c, _d;
|
|
79
|
+
if (v.__name === 'foreignkey') {
|
|
80
|
+
tableInfo.columns.push({
|
|
81
|
+
name: key,
|
|
82
|
+
type: 'int',
|
|
83
|
+
note: '',
|
|
84
|
+
});
|
|
85
|
+
this.relations.push({
|
|
86
|
+
fromTableName: tableInfo === null || tableInfo === void 0 ? void 0 : tableInfo.name,
|
|
87
|
+
fromTableColumnName: key,
|
|
88
|
+
toTableClassName: (_a = v.toSequelize) === null || _a === void 0 ? void 0 : _a.call(v)().name,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
else if (v.__name !== 'belongsto') {
|
|
92
|
+
const enumData = (_c = (_b = v.toSwagger) === null || _b === void 0 ? void 0 : _b.call(v)) === null || _c === void 0 ? void 0 : _c.enum;
|
|
93
|
+
const enumName = `${tableInfo === null || tableInfo === void 0 ? void 0 : tableInfo.name}_${key}_enum`;
|
|
94
|
+
tableInfo.columns.push({
|
|
95
|
+
name: key,
|
|
96
|
+
type: enumData ? enumName : v.__name,
|
|
97
|
+
note: (_d = v.toSwagger) === null || _d === void 0 ? void 0 : _d.call(v).description,
|
|
98
|
+
enum: enumData,
|
|
99
|
+
});
|
|
100
|
+
if (enumData) {
|
|
101
|
+
this.enums.push({
|
|
102
|
+
name: enumName,
|
|
103
|
+
values: enumData,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return tableInfo;
|
|
109
|
+
}));
|
|
110
|
+
const tableDatas = tableData.map((table) => this.generateTableData(table));
|
|
108
111
|
const enumDatas = this.enums.map((enumData) => this.generateEnumData(enumData));
|
|
109
112
|
const relationDatas = this.relations.map((relationData) => this.generateRelationData(relationData));
|
|
110
113
|
const combinedData = [projectData, ...tableDatas, ...enumDatas, ...relationDatas];
|
|
111
114
|
this.generatedDBMLData = combinedData.join('\n\n');
|
|
112
|
-
};
|
|
115
|
+
});
|
|
113
116
|
this.getDBMLData = () => __awaiter(this, void 0, void 0, function* () {
|
|
114
117
|
if (this.generatedDBMLData === null) {
|
|
115
118
|
this.generateDBMLData();
|
package/dist/dbml/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dbml/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sCAAsC;AACtC,uCAAyC;AAEzC,2DAA6B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dbml/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { Model } from 'sequelize-typescript';
|
|
3
|
+
import { Attributes, Includeable } from 'sequelize';
|
|
4
|
+
interface DtoMiddlewareReturn {
|
|
5
|
+
as?: string;
|
|
6
|
+
model: typeof Model;
|
|
7
|
+
attributes: Attributes<Model>;
|
|
8
|
+
include?: Includeable[];
|
|
9
|
+
}
|
|
10
|
+
export default class ExtendableDto {
|
|
11
|
+
map: (data: any) => any;
|
|
12
|
+
pagingMap: (data: any) => any;
|
|
13
|
+
middleware: (as?: string | undefined, user?: any, extraAs?: string[] | undefined) => DtoMiddlewareReturn;
|
|
14
|
+
swagger: () => {
|
|
15
|
+
type: string;
|
|
16
|
+
properties: {
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=ExtendableDto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtendableDto.d.ts","sourceRoot":"","sources":["../../src/dto/ExtendableDto.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAW,MAAM,WAAW,CAAC;AAM7D,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;IACzB,GAAG,SAAU,GAAG,KAAG,GAAG,CAsC3B;IAEK,SAAS,SAAU,GAAG,KAAG,GAAG,CAIjC;IAEK,UAAU,mCAAwB,GAAG,yDAmF1C;IAEK,OAAO;;;;;MAsBZ;CACH"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("reflect-metadata");
|
|
4
|
+
const sequelize_1 = require("sequelize");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const core_1 = require("@asapjs/core");
|
|
7
|
+
class ExtendableDto {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.map = (data) => {
|
|
10
|
+
const types = (0, types_1.getTypesData)(this);
|
|
11
|
+
const properties = Object.assign({}, types);
|
|
12
|
+
const o = (data === null || data === void 0 ? void 0 : data.dataValues) || data;
|
|
13
|
+
const isArray = Array.isArray(o);
|
|
14
|
+
if (isArray) {
|
|
15
|
+
return o.map((item) => this.map(item));
|
|
16
|
+
}
|
|
17
|
+
return Object.keys(properties).reduce((p, key) => {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
const property = properties[key];
|
|
20
|
+
if (property.__name === 'dto') {
|
|
21
|
+
// DTO TYPE인데 toSequelize가 없을 경우
|
|
22
|
+
if (!property.toSequelize) {
|
|
23
|
+
core_1.logger.error(`@asapjs/sequelize :: @TypeIs.DTO - ${key}에서 에러가 발생했습니다.`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
const data = property.toSequelize();
|
|
27
|
+
if (!data.dto) {
|
|
28
|
+
core_1.logger.error(`@asapjs/sequelize :: @TypeIs.DTO - ${key}에 dto가 전달되지 않았습니다..`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
p[key] = new data.dto().map(o === null || o === void 0 ? void 0 : o[key]);
|
|
32
|
+
}
|
|
33
|
+
else if (property.__name === 'query') {
|
|
34
|
+
p[key] = (_a = property === null || property === void 0 ? void 0 : property.fixValue) === null || _a === void 0 ? void 0 : _a.call(property, o === null || o === void 0 ? void 0 : o[key]);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
p[key] = ((_b = property === null || property === void 0 ? void 0 : property.fixValue) === null || _b === void 0 ? void 0 : _b.call(property, o === null || o === void 0 ? void 0 : o[key])) || (o === null || o === void 0 ? void 0 : o[key]);
|
|
38
|
+
}
|
|
39
|
+
return p;
|
|
40
|
+
}, {});
|
|
41
|
+
};
|
|
42
|
+
this.pagingMap = (data) => {
|
|
43
|
+
const o = data.data;
|
|
44
|
+
return Object.assign(Object.assign({}, data), { data: o.map((item) => this.map(item)) });
|
|
45
|
+
};
|
|
46
|
+
this.middleware = (as, user, extraAs) => {
|
|
47
|
+
const modelInfo = Reflect.getMetadata('sequelize::dtoInfo', this);
|
|
48
|
+
const types = (0, types_1.getTypesData)(this);
|
|
49
|
+
const extraAsData = extraAs ? [...extraAs, as].filter((v) => !!v) : as ? [as] : [];
|
|
50
|
+
const attributes = [];
|
|
51
|
+
const include = [];
|
|
52
|
+
if (types) {
|
|
53
|
+
// DTO와 QUERY TYPE은 따로 Include 필요하기 때문에 필터링
|
|
54
|
+
const attributesOptions = Object.entries(types).filter(([key, v]) => !['dto', 'query'].includes(v.__name));
|
|
55
|
+
if (attributesOptions) {
|
|
56
|
+
attributesOptions.forEach(([key, v]) => {
|
|
57
|
+
attributes.push(key);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// QUERY TYPE 필터링
|
|
61
|
+
const queryOptions = Object.entries(types).filter(([key, v]) => v.__name === 'query');
|
|
62
|
+
if (queryOptions) {
|
|
63
|
+
queryOptions.forEach(([key, v]) => {
|
|
64
|
+
// QUERY TYPE인데 toSequelize가 없을 경우
|
|
65
|
+
if (!v.toSequelize) {
|
|
66
|
+
core_1.logger.error(`@asapjs/sequelize :: @TypeIs.QUERY - ${key}에서 에러가 발생했습니다.`);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
if (!v.toSequelize().query) {
|
|
70
|
+
core_1.logger.error(`@asapjs/sequelize :: @TypeIs.QUERY - ${key}에 query가 전달되지 않았습니다..`);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
const association = extraAsData.length >= 2 ? '`' + `${extraAsData.join('->')}` + '`' : as || modelInfo.defineTable.name;
|
|
74
|
+
attributes.push([
|
|
75
|
+
(0, sequelize_1.literal)(v.toSequelize().query({
|
|
76
|
+
association: association,
|
|
77
|
+
user,
|
|
78
|
+
})),
|
|
79
|
+
key,
|
|
80
|
+
]);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// DTO TYPE 필터링
|
|
84
|
+
const connectOptions = Object.entries(types).filter(([key, v]) => v.__name === 'dto');
|
|
85
|
+
if (connectOptions) {
|
|
86
|
+
connectOptions.forEach(([key, v]) => {
|
|
87
|
+
// DTO TYPE인데 toSequelize가 없을 경우
|
|
88
|
+
if (!v.toSequelize) {
|
|
89
|
+
core_1.logger.error(`@asapjs/sequelize :: @TypeIs.DTO - ${key}에서 에러가 발생했습니다.`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
const data = v.toSequelize();
|
|
93
|
+
if (!data.dto) {
|
|
94
|
+
core_1.logger.error(`@asapjs/sequelize :: @TypeIs.DTO - ${key}에 dto가 전달되지 않았습니다..`);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
include.push(new data.dto().middleware((data === null || data === void 0 ? void 0 : data.as) || key, user, extraAsData));
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const result = {
|
|
102
|
+
model: modelInfo.defineTable,
|
|
103
|
+
attributes,
|
|
104
|
+
};
|
|
105
|
+
if (as)
|
|
106
|
+
result.as = as;
|
|
107
|
+
if (include.length > 0)
|
|
108
|
+
result.include = include;
|
|
109
|
+
return result;
|
|
110
|
+
};
|
|
111
|
+
this.swagger = () => {
|
|
112
|
+
const types = (0, types_1.getTypesData)(this);
|
|
113
|
+
const data = Object.keys(types).reduce((p, key) => {
|
|
114
|
+
var _a, _b;
|
|
115
|
+
const property = types[key];
|
|
116
|
+
if (property.toSwagger) {
|
|
117
|
+
p[key] = property.toSwagger() || null;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
core_1.logger.warn(`@asapjs/sequelize :: TypeIs.${(_b = (_a = property === null || property === void 0 ? void 0 : property.__name) === null || _a === void 0 ? void 0 : _a.toUpperCase) === null || _b === void 0 ? void 0 : _b.call(_a)}에 toSwagger가 정의되지 않았습니다.`);
|
|
121
|
+
p[key] = null;
|
|
122
|
+
}
|
|
123
|
+
return p;
|
|
124
|
+
}, {});
|
|
125
|
+
return {
|
|
126
|
+
type: 'object',
|
|
127
|
+
properties: data,
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.default = ExtendableDto;
|
|
133
|
+
//# sourceMappingURL=ExtendableDto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtendableDto.js","sourceRoot":"","sources":["../../src/dto/ExtendableDto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaginationQueryDto.d.ts","sourceRoot":"","sources":["../../src/dto/PaginationQueryDto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,aAAa;IAE3D,IAAI,EAAE,MAAM,CAAC;IAGb,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const types_1 = require("../types");
|
|
13
|
+
const index_1 = require("./index");
|
|
14
|
+
class PaginationQueryDto extends index_1.ExtendableDto {
|
|
15
|
+
}
|
|
16
|
+
__decorate([
|
|
17
|
+
types_1.TypeIs.INT({ comment: '페이지' }),
|
|
18
|
+
__metadata("design:type", Number)
|
|
19
|
+
], PaginationQueryDto.prototype, "page", void 0);
|
|
20
|
+
__decorate([
|
|
21
|
+
types_1.TypeIs.INT({ comment: '한 페이지당 표시 개수' }),
|
|
22
|
+
__metadata("design:type", Number)
|
|
23
|
+
], PaginationQueryDto.prototype, "limit", void 0);
|
|
24
|
+
exports.default = PaginationQueryDto;
|
|
25
|
+
//# sourceMappingURL=PaginationQueryDto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaginationQueryDto.js","sourceRoot":"","sources":["../../src/dto/PaginationQueryDto.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,oCAAkC;AAClC,mCAAwC;AAExC,MAAqB,kBAAmB,SAAQ,qBAAa;CAM5D;AAJC;IADC,cAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;gDAClB;AAGb;IADC,cAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;;iDAC1B;AALhB,qCAMC"}
|
package/dist/dto/index.d.ts
CHANGED
|
@@ -1,45 +1,10 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
import { Model, TableOptions } from 'sequelize-typescript';
|
|
3
|
-
import { AbstractDataTypeConstructor, Includeable } from 'sequelize';
|
|
4
|
-
interface DtoMiddlewareReturn {
|
|
5
|
-
as?: string;
|
|
6
|
-
model: typeof Model;
|
|
7
|
-
attributes: string[];
|
|
8
|
-
include?: Includeable[];
|
|
9
|
-
}
|
|
10
|
-
export declare class ExtendableDto {
|
|
11
|
-
id?: number;
|
|
12
|
-
version?: number | any;
|
|
13
|
-
private fixValue;
|
|
14
|
-
map: (data: any) => any;
|
|
15
|
-
pagingMap: (data: any) => any;
|
|
16
|
-
middleware: (as?: string | undefined, user?: any, extraAs?: string[] | undefined) => DtoMiddlewareReturn;
|
|
17
|
-
swagger: () => {
|
|
18
|
-
type: string;
|
|
19
|
-
properties: {
|
|
20
|
-
[key: string]: any;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export declare class PaginationQueryDto extends ExtendableDto {
|
|
25
|
-
page: number;
|
|
26
|
-
limit: number;
|
|
27
|
-
}
|
|
28
3
|
export declare function Dto(info: {
|
|
29
4
|
timestamps?: boolean;
|
|
30
5
|
name?: string;
|
|
31
6
|
defineTable: typeof Model;
|
|
32
7
|
}): (target: any, options?: TableOptions) => void;
|
|
33
|
-
export
|
|
34
|
-
|
|
35
|
-
user?: any;
|
|
36
|
-
association?: string;
|
|
37
|
-
}
|
|
38
|
-
interface DtoQueryParams {
|
|
39
|
-
query: (props: QueryParams) => string;
|
|
40
|
-
type?: AbstractDataTypeConstructor;
|
|
41
|
-
example?: any;
|
|
42
|
-
}
|
|
43
|
-
export declare function DtoQuery({ query, type, example }: DtoQueryParams): (target: any, propertyName: string, propertyDescriptor?: PropertyDescriptor | undefined) => void;
|
|
44
|
-
export {};
|
|
8
|
+
export { default as ExtendableDto } from './ExtendableDto';
|
|
9
|
+
export { default as PaginationQueryDto } from './PaginationQueryDto';
|
|
45
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/dto/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,GAAG,CAAC,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,KAAK,CAAA;CAAE,YACjE,GAAG,YAAW,YAAY,KAAQ,IAAI,CAOhE;AAED,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/dto/index.js
CHANGED
|
@@ -1,198 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
4
|
};
|
|
11
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
6
|
+
exports.PaginationQueryDto = exports.ExtendableDto = exports.Dto = void 0;
|
|
13
7
|
require("reflect-metadata");
|
|
14
|
-
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
15
|
-
const sequelize_1 = require("sequelize");
|
|
16
|
-
const type_1 = require("../type");
|
|
17
|
-
class ExtendableDto {
|
|
18
|
-
constructor() {
|
|
19
|
-
this.fixValue = (type, value) => {
|
|
20
|
-
switch (type) {
|
|
21
|
-
case sequelize_typescript_1.DataType.INTEGER:
|
|
22
|
-
if (value === undefined || value === null)
|
|
23
|
-
return value;
|
|
24
|
-
return parseInt(String(value), 10);
|
|
25
|
-
case sequelize_typescript_1.DataType.FLOAT:
|
|
26
|
-
if (value === undefined || value === null)
|
|
27
|
-
return value;
|
|
28
|
-
return parseFloat(String(value));
|
|
29
|
-
case sequelize_typescript_1.DataType.ARRAY:
|
|
30
|
-
return value;
|
|
31
|
-
case sequelize_typescript_1.DataType.STRING:
|
|
32
|
-
if (value === undefined || value === null)
|
|
33
|
-
return value;
|
|
34
|
-
return String(value);
|
|
35
|
-
case sequelize_typescript_1.DataType.BOOLEAN:
|
|
36
|
-
return !!value;
|
|
37
|
-
default:
|
|
38
|
-
return value;
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
this.map = (data) => {
|
|
42
|
-
const types = (0, type_1.getTypesData)(this);
|
|
43
|
-
const properties = Object.assign({}, types);
|
|
44
|
-
const o = (data === null || data === void 0 ? void 0 : data.dataValues) || data;
|
|
45
|
-
const isArray = Array.isArray(o);
|
|
46
|
-
if (isArray) {
|
|
47
|
-
return o.map((item) => this.map(item));
|
|
48
|
-
}
|
|
49
|
-
return Object.keys(properties).reduce((p, key) => {
|
|
50
|
-
var _a, _b, _c, _d, _e;
|
|
51
|
-
const property = properties[key];
|
|
52
|
-
if (property.__name === 'dto') {
|
|
53
|
-
p[key] = (_d = (_c = new ((_b = (_a = property === null || property === void 0 ? void 0 : property.toSequelize) === null || _a === void 0 ? void 0 : _a.call(property)) === null || _b === void 0 ? void 0 : _b.dto)()) === null || _c === void 0 ? void 0 : _c.map) === null || _d === void 0 ? void 0 : _d.call(_c, o === null || o === void 0 ? void 0 : o[key]);
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
p[key] = ((_e = property === null || property === void 0 ? void 0 : property.fixValue) === null || _e === void 0 ? void 0 : _e.call(property, o === null || o === void 0 ? void 0 : o[key])) || (o === null || o === void 0 ? void 0 : o[key]);
|
|
57
|
-
}
|
|
58
|
-
return p;
|
|
59
|
-
}, {});
|
|
60
|
-
};
|
|
61
|
-
this.pagingMap = (data) => {
|
|
62
|
-
const o = data.data;
|
|
63
|
-
return Object.assign(Object.assign({}, data), { data: o.map((item) => this.map(item)) });
|
|
64
|
-
};
|
|
65
|
-
this.middleware = (as, user, extraAs) => {
|
|
66
|
-
const modelInfo = Reflect.getMetadata('sequelize::dtoInfo', this);
|
|
67
|
-
const types = (0, type_1.getTypesData)(this);
|
|
68
|
-
// const attributesOptions = Reflect.getMetadata('sequelize:attributes', this);
|
|
69
|
-
// const connectOptions = Reflect.getMetadata('sequelize::dtoTypes', this);
|
|
70
|
-
// const queryOptions = Reflect.getMetadata('sequelize::queryTypes', this);
|
|
71
|
-
const extraAsData = extraAs ? [...extraAs, as].filter((v) => !!v) : as ? [as] : [];
|
|
72
|
-
const attributes = [];
|
|
73
|
-
const include = [];
|
|
74
|
-
if (types) {
|
|
75
|
-
const attributesOptions = Object.entries(types).filter(([key, v]) => !['dto', 'query'].includes(v.__name));
|
|
76
|
-
if (attributesOptions) {
|
|
77
|
-
attributesOptions.forEach(([key, v]) => {
|
|
78
|
-
attributes.push(key);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
const queryOptions = Object.entries(types).filter(([key, v]) => v.__name === 'query');
|
|
82
|
-
if (queryOptions) {
|
|
83
|
-
queryOptions.forEach(([key, v]) => {
|
|
84
|
-
var _a, _b, _c;
|
|
85
|
-
attributes.push([
|
|
86
|
-
(0, sequelize_1.literal)((_c = (_b = (_a = v === null || v === void 0 ? void 0 : v.toSequelize) === null || _a === void 0 ? void 0 : _a.call(v)) === null || _b === void 0 ? void 0 : _b.query) === null || _c === void 0 ? void 0 : _c.call(_b, {
|
|
87
|
-
association: extraAsData.length >= 2 ? '`' + `${extraAsData.join('->')}` + '`' : as || modelInfo.defineTable.name,
|
|
88
|
-
user,
|
|
89
|
-
})),
|
|
90
|
-
key,
|
|
91
|
-
]);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
const connectOptions = Object.entries(types).filter(([key, v]) => v.__name === 'dto');
|
|
95
|
-
if (connectOptions) {
|
|
96
|
-
connectOptions.forEach(([key, v]) => {
|
|
97
|
-
var _a;
|
|
98
|
-
const data = (_a = v === null || v === void 0 ? void 0 : v.toSequelize) === null || _a === void 0 ? void 0 : _a.call(v);
|
|
99
|
-
include.push(new (data === null || data === void 0 ? void 0 : data.dto)().middleware(data === null || data === void 0 ? void 0 : data.as, user, extraAsData));
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// if (modelInfo.timestamps) {
|
|
104
|
-
// attributes.push('created_at');
|
|
105
|
-
// attributes.push('updated_at');
|
|
106
|
-
// }
|
|
107
|
-
const result = {
|
|
108
|
-
model: modelInfo.defineTable,
|
|
109
|
-
attributes,
|
|
110
|
-
};
|
|
111
|
-
if (as)
|
|
112
|
-
result.as = as;
|
|
113
|
-
if (include.length > 0)
|
|
114
|
-
result.include = include;
|
|
115
|
-
return result;
|
|
116
|
-
};
|
|
117
|
-
this.swagger = () => {
|
|
118
|
-
const types = (0, type_1.getTypesData)(this);
|
|
119
|
-
const data = Object.keys(types).reduce((p, key) => {
|
|
120
|
-
var _a;
|
|
121
|
-
const property = types[key];
|
|
122
|
-
p[key] = ((_a = property === null || property === void 0 ? void 0 : property.toSwagger) === null || _a === void 0 ? void 0 : _a.call(property)) || null;
|
|
123
|
-
return p;
|
|
124
|
-
}, {});
|
|
125
|
-
return {
|
|
126
|
-
type: 'object',
|
|
127
|
-
properties: data,
|
|
128
|
-
};
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
exports.ExtendableDto = ExtendableDto;
|
|
133
|
-
class PaginationQueryDto extends ExtendableDto {
|
|
134
|
-
}
|
|
135
|
-
__decorate([
|
|
136
|
-
type_1.TypeIs.INT({ comment: '페이지' }),
|
|
137
|
-
__metadata("design:type", Number)
|
|
138
|
-
], PaginationQueryDto.prototype, "page", void 0);
|
|
139
|
-
__decorate([
|
|
140
|
-
type_1.TypeIs.INT({ comment: '한 페이지당 표시 개수' }),
|
|
141
|
-
__metadata("design:type", Number)
|
|
142
|
-
], PaginationQueryDto.prototype, "limit", void 0);
|
|
143
|
-
exports.PaginationQueryDto = PaginationQueryDto;
|
|
144
8
|
function Dto(info) {
|
|
145
|
-
return function
|
|
9
|
+
return function (target, options = {}) {
|
|
146
10
|
const args = Object.assign(Object.assign({}, info), { timestamps: info.timestamps === undefined });
|
|
147
11
|
Reflect.defineMetadata('sequelize::dtoInfo', args, target.prototype);
|
|
148
12
|
};
|
|
149
13
|
}
|
|
150
14
|
exports.Dto = Dto;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
copy[key] = Object.assign({}, attributes[key]);
|
|
156
|
-
return copy;
|
|
157
|
-
}, {});
|
|
158
|
-
}
|
|
159
|
-
if (!attributes) {
|
|
160
|
-
attributes = {};
|
|
161
|
-
}
|
|
162
|
-
return attributes;
|
|
163
|
-
};
|
|
164
|
-
const getDtoTypes = (target) => getAttributes(target, 'sequelize::dtoTypes');
|
|
165
|
-
const getDtoQueries = (target) => getAttributes(target, 'sequelize::queryTypes');
|
|
166
|
-
function DtoType(ConnectTo, as) {
|
|
167
|
-
return (target, propertyName, propertyDescriptor) => {
|
|
168
|
-
const attributes = getDtoTypes(target);
|
|
169
|
-
const ConnectDto = ConnectTo();
|
|
170
|
-
const swaggerExampleData = new ConnectDto().swagger(as);
|
|
171
|
-
const options = {
|
|
172
|
-
type: 'dto',
|
|
173
|
-
as,
|
|
174
|
-
ConnectDto,
|
|
175
|
-
example: swaggerExampleData,
|
|
176
|
-
};
|
|
177
|
-
attributes[propertyName] = Object.assign({}, options);
|
|
178
|
-
Reflect.defineMetadata('sequelize::dtoTypes', Object.assign({}, attributes), target);
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
exports.DtoType = DtoType;
|
|
182
|
-
function DtoQuery({ query, type, example }) {
|
|
183
|
-
return (target, propertyName, propertyDescriptor) => {
|
|
184
|
-
const queries = getDtoQueries(target);
|
|
185
|
-
queries[propertyName] = {
|
|
186
|
-
type: 'query',
|
|
187
|
-
data: {
|
|
188
|
-
as: propertyName,
|
|
189
|
-
query: (props) => query(props),
|
|
190
|
-
type,
|
|
191
|
-
},
|
|
192
|
-
example,
|
|
193
|
-
};
|
|
194
|
-
Reflect.defineMetadata('sequelize::queryTypes', Object.assign({}, queries), target);
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
exports.DtoQuery = DtoQuery;
|
|
15
|
+
var ExtendableDto_1 = require("./ExtendableDto");
|
|
16
|
+
Object.defineProperty(exports, "ExtendableDto", { enumerable: true, get: function () { return __importDefault(ExtendableDto_1).default; } });
|
|
17
|
+
var PaginationQueryDto_1 = require("./PaginationQueryDto");
|
|
18
|
+
Object.defineProperty(exports, "PaginationQueryDto", { enumerable: true, get: function () { return __importDefault(PaginationQueryDto_1).default; } });
|
|
198
19
|
//# sourceMappingURL=index.js.map
|
package/dist/dto/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":";;;;;;AAAA,4BAA0B;AAI1B,SAAgB,GAAG,CAAC,IAAwE;IAC1F,OAAO,UAAU,MAAW,EAAE,UAAwB,EAAE;QACtD,MAAM,IAAI,mCACL,IAAI,KACP,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,GAC1C,CAAC;QACF,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC;AARD,kBAQC;AAED,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,2DAAqE;AAA5D,yIAAA,OAAO,OAAsB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ExtendableDto, PaginationQueryDto, Dto
|
|
1
|
+
export { ExtendableDto, PaginationQueryDto, Dto } from './dto';
|
|
2
2
|
export { initSequelizeModule, getSequelize, modelsSync, generateDBML } from './sequelize';
|
|
3
3
|
export { default as Repository } from './repository';
|
|
4
4
|
export { Table } from './table';
|
|
5
|
-
export { TypeIs,
|
|
5
|
+
export { TypeIs, DtoOrTypeIs } from './types';
|
|
6
6
|
export { getUserIdInQuery } from './utils/getUserIdInQuery';
|
|
7
7
|
export { getDBMLData } from './dbml';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|