@asapjs/sequelize 0.10.44 → 1.0.0-20
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/console/index.js +4 -4
- package/dist/console/index.js.map +1 -1
- package/dist/dbml/index.d.ts.map +1 -1
- package/dist/dbml/index.js +2 -2
- package/dist/dbml/index.js.map +1 -1
- package/dist/dto/ExtendableDto.d.ts +42 -3
- package/dist/dto/ExtendableDto.d.ts.map +1 -1
- package/dist/dto/ExtendableDto.js +62 -49
- package/dist/dto/ExtendableDto.js.map +1 -1
- package/dist/dto/PaginationQueryDto.d.ts +2 -0
- package/dist/dto/PaginationQueryDto.d.ts.map +1 -1
- package/dist/dto/PaginationQueryDto.js +5 -4
- package/dist/dto/PaginationQueryDto.js.map +1 -1
- package/dist/dto/index.d.ts +2 -2
- package/dist/dto/index.d.ts.map +1 -1
- package/dist/dto/index.js +2 -2
- package/dist/dto/index.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -4
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +8 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +68 -0
- package/dist/plugin.js.map +1 -0
- package/dist/repository/index.d.ts +18 -9
- package/dist/repository/index.d.ts.map +1 -1
- package/dist/repository/index.js +27 -24
- package/dist/repository/index.js.map +1 -1
- package/dist/sequelize/index.d.ts.map +1 -1
- package/dist/sequelize/index.js +47 -21
- package/dist/sequelize/index.js.map +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +17 -3
- package/dist/table/index.js.map +1 -1
- package/dist/types/belongsto.d.ts +1 -1
- package/dist/types/belongsto.d.ts.map +1 -1
- package/dist/types/belongsto.js +6 -2
- package/dist/types/belongsto.js.map +1 -1
- package/dist/types/decorators.d.ts +4 -0
- package/dist/types/decorators.d.ts.map +1 -0
- package/dist/types/decorators.js +56 -0
- package/dist/types/decorators.js.map +1 -0
- package/dist/types/foreignkey.d.ts +1 -1
- package/dist/types/foreignkey.d.ts.map +1 -1
- package/dist/types/foreignkey.js +12 -7
- package/dist/types/foreignkey.js.map +1 -1
- package/dist/types/generators/toSequelizeGenerator.d.ts +1 -1
- package/dist/types/generators/toSequelizeGenerator.d.ts.map +1 -1
- package/dist/types/generators/toSwaggerGenerator.d.ts +1 -1
- package/dist/types/generators/toSwaggerGenerator.d.ts.map +1 -1
- package/dist/types/generators/typeGenerator.d.ts +1 -1
- package/dist/types/generators/typeGenerator.d.ts.map +1 -1
- package/dist/types/generators/typeGenerator.js +27 -4
- package/dist/types/generators/typeGenerator.js.map +1 -1
- package/dist/types/index.d.ts +5 -23
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -38
- package/dist/types/index.js.map +1 -1
- package/dist/types/paging.d.ts +1 -1
- package/dist/types/paging.d.ts.map +1 -1
- package/dist/types/paging.js +3 -3
- package/dist/types/paging.js.map +1 -1
- package/dist/types/query.d.ts +1 -1
- package/dist/types/query.d.ts.map +1 -1
- package/dist/types/query.js +2 -2
- package/dist/types/query.js.map +1 -1
- package/dist/types/register.d.ts +2 -0
- package/dist/types/register.d.ts.map +1 -0
- package/dist/types/register.js +53 -0
- package/dist/types/register.js.map +1 -0
- package/dist/types/schema-extensions.d.ts +116 -0
- package/dist/types/schema-extensions.d.ts.map +1 -0
- package/dist/types/schema-extensions.js +150 -0
- package/dist/types/schema-extensions.js.map +1 -0
- package/dist/utils/getUserIdInQuery.d.ts.map +1 -1
- package/dist/utils/isClass.d.ts.map +1 -1
- package/dist/utils/promiseTimeout.d.ts.map +1 -1
- package/dist/utils/swagger.d.ts +4 -0
- package/dist/utils/swagger.d.ts.map +1 -0
- package/dist/utils/swagger.js +26 -0
- package/dist/utils/swagger.js.map +1 -0
- package/package.json +44 -33
- package/.yarnrc.yml +0 -1
- package/dist/types/array.d.ts +0 -7
- package/dist/types/array.d.ts.map +0 -1
- package/dist/types/array.js +0 -58
- package/dist/types/array.js.map +0 -1
- package/dist/types/base64.d.ts +0 -10
- package/dist/types/base64.d.ts.map +0 -1
- package/dist/types/base64.js +0 -20
- package/dist/types/base64.js.map +0 -1
- package/dist/types/bigint.d.ts +0 -12
- package/dist/types/bigint.d.ts.map +0 -1
- package/dist/types/bigint.js +0 -27
- package/dist/types/bigint.js.map +0 -1
- package/dist/types/binary.d.ts +0 -10
- package/dist/types/binary.d.ts.map +0 -1
- package/dist/types/binary.js +0 -20
- package/dist/types/binary.js.map +0 -1
- package/dist/types/boolean.d.ts +0 -9
- package/dist/types/boolean.d.ts.map +0 -1
- package/dist/types/boolean.js +0 -27
- package/dist/types/boolean.js.map +0 -1
- package/dist/types/dateonly.d.ts +0 -8
- package/dist/types/dateonly.d.ts.map +0 -1
- package/dist/types/dateonly.js +0 -20
- package/dist/types/dateonly.js.map +0 -1
- package/dist/types/datetime.d.ts +0 -8
- package/dist/types/datetime.d.ts.map +0 -1
- package/dist/types/datetime.js +0 -20
- package/dist/types/datetime.js.map +0 -1
- package/dist/types/decemal.d.ts +0 -11
- package/dist/types/decemal.d.ts.map +0 -1
- package/dist/types/decemal.js +0 -30
- package/dist/types/decemal.js.map +0 -1
- package/dist/types/double.d.ts +0 -11
- package/dist/types/double.d.ts.map +0 -1
- package/dist/types/double.js +0 -27
- package/dist/types/double.js.map +0 -1
- package/dist/types/dto.d.ts +0 -10
- package/dist/types/dto.d.ts.map +0 -1
- package/dist/types/dto.js +0 -23
- package/dist/types/dto.js.map +0 -1
- package/dist/types/enum.d.ts +0 -9
- package/dist/types/enum.d.ts.map +0 -1
- package/dist/types/enum.js +0 -26
- package/dist/types/enum.js.map +0 -1
- package/dist/types/float.d.ts +0 -11
- package/dist/types/float.d.ts.map +0 -1
- package/dist/types/float.js +0 -27
- package/dist/types/float.js.map +0 -1
- package/dist/types/int.d.ts +0 -12
- package/dist/types/int.d.ts.map +0 -1
- package/dist/types/int.js +0 -27
- package/dist/types/int.js.map +0 -1
- package/dist/types/json.d.ts +0 -9
- package/dist/types/json.d.ts.map +0 -1
- package/dist/types/json.js +0 -31
- package/dist/types/json.js.map +0 -1
- package/dist/types/long.d.ts +0 -12
- package/dist/types/long.d.ts.map +0 -1
- package/dist/types/long.js +0 -27
- package/dist/types/long.js.map +0 -1
- package/dist/types/password.d.ts +0 -6
- package/dist/types/password.d.ts.map +0 -1
- package/dist/types/password.js +0 -20
- package/dist/types/password.js.map +0 -1
- package/dist/types/string.d.ts +0 -11
- package/dist/types/string.d.ts.map +0 -1
- package/dist/types/string.js +0 -26
- package/dist/types/string.js.map +0 -1
- package/dist/types/text.d.ts +0 -9
- package/dist/types/text.d.ts.map +0 -1
- package/dist/types/text.js +0 -16
- package/dist/types/text.js.map +0 -1
- package/tsconfig.json +0 -21
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2CAAwC;AACxC,2CAAkD;AAClD,2CAA2D;AAC3D,+CAA0D;AAC1D,qCAAmC,CAAC,eAAe;AAEnD,MAAa,eAAe;IAA5B;QACE,SAAI,GAAG,mBAAmB,CAAC;IA4C7B,CAAC;IA1CO,IAAI,CAAC,MAAoB,EAAE,OAAsB;;YACrD,eAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC;YAEnD,IAAI,CAAC;gBACH,+CAA+C;gBAC/C,IAAI,CAAC,iBAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,iBAAQ,CAAC,QAAQ,CAAC,wBAAe,CAAC,CAAC;gBACrC,CAAC;gBAED,oCAAoC;gBACpC,IAAA,iCAAsB,GAAE,CAAC;gBAEzB,MAAM,IAAA,+BAAmB,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC1C,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,kCAAkC,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,KAAc,CAAC;gBAC3B,eAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,IAAI,SAAS,EAAE;oBACvD,GAAG,EAAE,KAAK;oBACV,OAAO,EAAE;wBACP,OAAO,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO;wBACrB,KAAK,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK;wBACjB,IAAI,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI;qBAChB;iBACF,CAAC,CAAC;gBACH,OAAO,CAAC,KAAK,CAAC,+DAA+D,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,KAAI,KAAK,CAAC,CAAC;gBACpG,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;IAEK,OAAO;;YACX,uCAAuC;YACvC,IAAI,CAAC;gBACH,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;gBAChD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;gBACjC,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;oBACxB,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,gCAAgC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,SAAS,EAAE,KAAK,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;KAAA;CACF;AA7CD,0CA6CC"}
|
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
import { Model, ModelCtor } from 'sequelize-typescript';
|
|
2
2
|
import { FindOptions } from 'sequelize';
|
|
3
|
-
import { ExtendableDto } from '../dto';
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { ExtendableDto, type DtoData, type PagingResponse } from '../dto';
|
|
4
|
+
/** @internal */
|
|
5
|
+
export interface IArgs<T extends Model, D extends ExtendableDto = ExtendableDto> extends FindOptions<T> {
|
|
6
|
+
exportTo: new (...args: any[]) => D;
|
|
6
7
|
user?: any;
|
|
7
8
|
paging?: {
|
|
8
9
|
page: number;
|
|
9
10
|
limit: number;
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
/** repository 객체의 공개 API. 반환 타입은 Dto 데이터 필드만 포함(메서드 제외). */
|
|
14
|
+
interface RepositoryApi {
|
|
15
|
+
findAll<M extends Model, D extends ExtendableDto>(model: ModelCtor<M>, args: IArgs<M, D> & {
|
|
16
|
+
paging?: undefined;
|
|
17
|
+
}): Promise<M[]>;
|
|
18
|
+
findAll<M extends Model, D extends ExtendableDto>(model: ModelCtor<M>, args: IArgs<M, D> & {
|
|
19
|
+
paging: {
|
|
20
|
+
page: number;
|
|
21
|
+
limit: number;
|
|
22
|
+
};
|
|
23
|
+
}): Promise<PagingResponse<DtoData<D>>>;
|
|
24
|
+
findOne<M extends Model, D extends ExtendableDto>(model: ModelCtor<M>, args: IArgs<M, D>): Promise<DtoData<D> | null>;
|
|
25
|
+
}
|
|
14
26
|
export default class Repository {
|
|
15
27
|
private getOptionsWithArgs;
|
|
16
28
|
private findAll;
|
|
17
29
|
private findOne;
|
|
18
|
-
repository:
|
|
19
|
-
findAll: <T extends Model<any, any>>(model: ModelCtor<T>, args: IArgs<T>) => Promise<FindAllResponse<T>>;
|
|
20
|
-
findOne: <T_1 extends Model<any, any>>(model: ModelCtor<T_1>, args: IArgs<T_1>) => Promise<FindOneResponse<T_1>>;
|
|
21
|
-
};
|
|
30
|
+
repository: RepositoryApi;
|
|
22
31
|
}
|
|
23
32
|
export {};
|
|
24
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE1E,gBAAgB;AAChB,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,aAAa,GAAG,aAAa,CAC9E,SAAQ,WAAW,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAED,4DAA4D;AAC5D,UAAU,aAAa;IACtB,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,aAAa,EAC/C,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,SAAS,CAAA;KAAE,GACxC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,aAAa,EAC/C,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAC7D,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,aAAa,EAC/C,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACf,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,OAAO,UAAU;IAC9B,OAAO,CAAC,kBAAkB;YAsBZ,OAAO;YAkCP,OAAO;IASd,UAAU,EAAE,aAAa,CAG9B;CACF"}
|
package/dist/repository/index.js
CHANGED
|
@@ -22,29 +22,34 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
class Repository {
|
|
24
24
|
constructor() {
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const _a = exportDto.middleware(undefined, user), { model: _ } = _a, queryOptions = __rest(_a, ["model"]);
|
|
29
|
-
const page = parseInt(String(paging === null || paging === void 0 ? void 0 : paging.page), 10);
|
|
30
|
-
const limit = parseInt(String(paging === null || paging === void 0 ? void 0 : paging.limit), 10);
|
|
31
|
-
const pagingOptions = paging
|
|
32
|
-
? {
|
|
33
|
-
limit,
|
|
34
|
-
offset: limit * page,
|
|
35
|
-
}
|
|
36
|
-
: {};
|
|
37
|
-
const additionalOptions = { distinct: true };
|
|
38
|
-
const query = Object.assign(Object.assign(Object.assign(Object.assign({}, queryOptions), options), pagingOptions), additionalOptions);
|
|
39
|
-
return query;
|
|
25
|
+
this.repository = {
|
|
26
|
+
findAll: this.findAll.bind(this),
|
|
27
|
+
findOne: this.findOne.bind(this),
|
|
40
28
|
};
|
|
41
|
-
|
|
42
|
-
|
|
29
|
+
}
|
|
30
|
+
getOptionsWithArgs(args) {
|
|
31
|
+
const { exportTo: Dto, user, paging } = args, options = __rest(args, ["exportTo", "user", "paging"]);
|
|
32
|
+
const exportDto = new Dto();
|
|
33
|
+
const _a = exportDto.middleware(undefined, user), { model: _ } = _a, queryOptions = __rest(_a, ["model"]);
|
|
34
|
+
const page = parseInt(String(paging === null || paging === void 0 ? void 0 : paging.page), 10);
|
|
35
|
+
const limit = parseInt(String(paging === null || paging === void 0 ? void 0 : paging.limit), 10);
|
|
36
|
+
const pagingOptions = paging
|
|
37
|
+
? {
|
|
38
|
+
limit,
|
|
39
|
+
offset: limit * page,
|
|
40
|
+
}
|
|
41
|
+
: {};
|
|
42
|
+
const additionalOptions = { distinct: true };
|
|
43
|
+
const query = Object.assign(Object.assign(Object.assign(Object.assign({}, queryOptions), options), pagingOptions), additionalOptions);
|
|
44
|
+
return query;
|
|
45
|
+
}
|
|
46
|
+
findAll(model, args) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
48
|
const query = this.getOptionsWithArgs(args);
|
|
44
49
|
if (args === null || args === void 0 ? void 0 : args.paging) {
|
|
45
50
|
const { rows: raws, count: total } = yield model.findAndCountAll(query);
|
|
46
|
-
const page = parseInt(String(
|
|
47
|
-
const limit = parseInt(String(
|
|
51
|
+
const page = parseInt(String(args.paging.page), 10);
|
|
52
|
+
const limit = parseInt(String(args.paging.limit), 10);
|
|
48
53
|
const max_page = Math.ceil(total / limit) - 1;
|
|
49
54
|
return {
|
|
50
55
|
data: raws,
|
|
@@ -59,15 +64,13 @@ class Repository {
|
|
|
59
64
|
const raws = yield model.findAll(query);
|
|
60
65
|
return raws;
|
|
61
66
|
});
|
|
62
|
-
|
|
67
|
+
}
|
|
68
|
+
findOne(model, args) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
70
|
const query = this.getOptionsWithArgs(args);
|
|
64
71
|
const raw = yield model.findOne(query);
|
|
65
72
|
return raw;
|
|
66
73
|
});
|
|
67
|
-
this.repository = {
|
|
68
|
-
findAll: this.findAll,
|
|
69
|
-
findOne: this.findOne,
|
|
70
|
-
};
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
76
|
exports.default = Repository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAqB,UAAU;IAA/B;QAkEQ,eAAU,GAAkB;YAClC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAA6B;YAC5D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAA6B;SAC5D,CAAC;IACH,CAAC;IArEQ,kBAAkB,CAA2C,IAAiB;QACrF,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAiB,IAAI,EAAhB,OAAO,UAAK,IAAI,EAAlD,8BAA2C,CAAO,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,MAAM,KAAgC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,EAArE,EAAE,KAAK,EAAE,CAAC,OAA2D,EAAtD,YAAY,cAA3B,SAA6B,CAAwC,CAAC;QAE5E,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAElD,MAAM,aAAa,GAAG,MAAM;YAC3B,CAAC,CAAC;gBACA,KAAK;gBACL,MAAM,EAAE,KAAK,GAAG,IAAI;aACpB;YACF,CAAC,CAAC,EAAE,CAAC;QAEN,MAAM,iBAAiB,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE7C,MAAM,KAAK,+DAAQ,YAAY,GAAK,OAAO,GAAK,aAAa,GAAK,iBAAiB,CAAE,CAAC;QAEtF,OAAO,KAAK,CAAC;IACd,CAAC;IAUa,OAAO,CACpB,KAAmB,EACnB,IAAiB;;YAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,EAAE,CAAC;gBAClB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9C,OAAO;oBACN,IAAI,EAAE,IAAI;oBACV,IAAI;oBACJ,SAAS,EAAE,KAAK;oBAChB,QAAQ;oBACR,QAAQ,EAAE,IAAI,KAAK,CAAC;oBACpB,QAAQ,EAAE,QAAQ,GAAG,IAAI;oBACzB,cAAc,EAAE,KAAK;iBACoB,CAAC;YAC5C,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,IAAW,CAAC;QACpB,CAAC;KAAA;IAEa,OAAO,CACpB,KAAmB,EACnB,IAAiB;;YAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,GAAmC,CAAC;QAC5C,CAAC;KAAA;CAMD;AAtED,6BAsEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sequelize/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKrF,OAAO,kBAAkB,CAAC;AAS1B,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sequelize/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKrF,OAAO,kBAAkB,CAAC;AAS1B,eAAO,MAAM,MAAM,GAAU,QAAQ,gBAAgB,uBA8CpD,CAAC;AAWF,eAAO,MAAM,QAAQ,GAAU,MAAM,MAAM,EAAE,SAAS,MAAM,kBAyC3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,qBAGhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBAc5B,CAAC;AAEF,eAAO,MAAM,UAAU,wBAItB,CAAC;AAEF,eAAO,MAAM,YAAY,iBAAmB,CAAC;AAE7C,eAAO,MAAM,mBAAmB,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,SAAS,CAM5E,CAAC;AAEF,eAAO,MAAM,YAAY,qBAAiB,CAAC;AAE3C,eAAO,MAAM,WAAW,wBAgBvB,CAAC"}
|
package/dist/sequelize/index.js
CHANGED
|
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.healthCheck = exports.generateDBML = exports.initSequelizeModule = exports.getSequelize = exports.modelsSync = exports.addDtosToSwagger = exports.addModelsToSequelize = exports.loadPath = exports.dbInit = void 0;
|
|
16
16
|
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
17
17
|
const fs_1 = __importDefault(require("fs"));
|
|
18
|
-
const
|
|
18
|
+
const common_1 = require("@asapjs/common");
|
|
19
19
|
require("reflect-metadata");
|
|
20
20
|
const promiseTimeout_1 = require("../utils/promiseTimeout");
|
|
21
21
|
let container = null;
|
|
@@ -27,7 +27,7 @@ const dbInit = (config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
27
27
|
sequelize
|
|
28
28
|
.authenticate()
|
|
29
29
|
.then(() => {
|
|
30
|
-
|
|
30
|
+
common_1.logger.info('@sequelize :: Database connected.');
|
|
31
31
|
})
|
|
32
32
|
.catch((err) => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
33
|
// if error occured for database is not exist, create it
|
|
@@ -35,30 +35,32 @@ const dbInit = (config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
35
35
|
err.original.code === 'ER_BAD_DB_ERROR' &&
|
|
36
36
|
err.original.sqlMessage.startsWith('Unknown database')) {
|
|
37
37
|
const databaseName = config.database;
|
|
38
|
-
|
|
38
|
+
common_1.logger.error(`@sequelize :: Database ${databaseName} has not craeted. Run auto database create process`);
|
|
39
39
|
const temp_config = Object.assign({}, config);
|
|
40
40
|
temp_config.database = undefined;
|
|
41
41
|
// create temp sequelize connection
|
|
42
42
|
const sequelize_temp = new sequelize_typescript_1.Sequelize(temp_config);
|
|
43
43
|
sequelize_temp.authenticate().then(() => {
|
|
44
|
-
|
|
44
|
+
common_1.logger.info('@sequelize(temp_session) :: Database connected.');
|
|
45
45
|
});
|
|
46
46
|
// if database is not exist, run create database query
|
|
47
|
-
yield sequelize_temp
|
|
48
|
-
|
|
47
|
+
yield sequelize_temp
|
|
48
|
+
.query(`CREATE DATABASE IF NOT EXISTS \`${databaseName}\`;`)
|
|
49
|
+
.then(() => {
|
|
50
|
+
common_1.logger.info(`@sequelize(temp_session) :: Database ${databaseName} Create Successfully`);
|
|
49
51
|
});
|
|
50
52
|
sequelize_temp.close().then(() => {
|
|
51
|
-
|
|
53
|
+
common_1.logger.info(`@sequelize(temp_session) :: Release temp session successfully`);
|
|
52
54
|
});
|
|
53
55
|
sequelize.authenticate().then(() => {
|
|
54
|
-
|
|
56
|
+
common_1.logger.info('@sequelize :: Database Reconnect Successfully');
|
|
55
57
|
});
|
|
56
58
|
}
|
|
57
59
|
else {
|
|
58
|
-
|
|
60
|
+
common_1.logger.error('@sequelize :: Unable to connect to the database:\n', err);
|
|
59
61
|
}
|
|
60
62
|
}));
|
|
61
|
-
|
|
63
|
+
common_1.logger.info('@sequelize :: database initalize.');
|
|
62
64
|
return sequelize;
|
|
63
65
|
});
|
|
64
66
|
exports.dbInit = dbInit;
|
|
@@ -71,14 +73,38 @@ const extensionInlcude = (includeFileName, fileName) => {
|
|
|
71
73
|
};
|
|
72
74
|
const loadPath = (path, subPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
75
|
const files = yield fs_1.default.readdirSync(path + subPath, { withFileTypes: true });
|
|
74
|
-
|
|
75
|
-
const
|
|
76
|
+
const extension = process.env.NODE_ENV === 'production' ? 'js' : 'ts';
|
|
77
|
+
const otherDirs = files.filter((f) => f.isDirectory() && f.name !== 'src');
|
|
78
|
+
const hasOtherDirsAtRoot = extension === 'js' && subPath === '' && otherDirs.length > 0;
|
|
76
79
|
for (const file of files) {
|
|
77
80
|
if (file.isDirectory()) {
|
|
81
|
+
// production에서 dist/ 아래에 dist/afreeca, dist/auth 등과 dist/src/ 가 공존할 때,
|
|
82
|
+
// dist/src/ 쪽은 건너뜀. 동일 테이블 중복 로드 및 dist/src/ 컴파일 결과의
|
|
83
|
+
// 모듈 해석 차이(TypeIs undefined) 방지. src만 있을 때는 건너뛰지 않음.
|
|
84
|
+
if (hasOtherDirsAtRoot && file.name === 'src') {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
78
87
|
yield (0, exports.loadPath)(path, `${subPath}/${file.name}`);
|
|
79
88
|
}
|
|
80
89
|
else if (extensionInlcude('Table', file.name) && file.name.endsWith('map') === false) {
|
|
81
|
-
|
|
90
|
+
const tablePath = `${path}/${subPath}/${file.name}`;
|
|
91
|
+
common_1.logger.info(`@sequelize :: Loading table: ${tablePath}`);
|
|
92
|
+
try {
|
|
93
|
+
models.push(require(tablePath).default);
|
|
94
|
+
}
|
|
95
|
+
catch (loadError) {
|
|
96
|
+
const e = loadError;
|
|
97
|
+
common_1.logger.error('@sequelize :: Failed to load table file', {
|
|
98
|
+
err: loadError,
|
|
99
|
+
context: {
|
|
100
|
+
file: tablePath,
|
|
101
|
+
message: e === null || e === void 0 ? void 0 : e.message,
|
|
102
|
+
stack: e === null || e === void 0 ? void 0 : e.stack,
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
console.error(`[@sequelize] Failed to load table (full stack):`, (e === null || e === void 0 ? void 0 : e.stack) || loadError);
|
|
106
|
+
throw loadError;
|
|
107
|
+
}
|
|
82
108
|
}
|
|
83
109
|
else if (extensionInlcude('Dto', file.name) && file.name.endsWith('map') === false) {
|
|
84
110
|
const dto = require(`${path}/${subPath}/${file.name}`).default;
|
|
@@ -91,32 +117,32 @@ const loadPath = (path, subPath) => __awaiter(void 0, void 0, void 0, function*
|
|
|
91
117
|
exports.loadPath = loadPath;
|
|
92
118
|
const addModelsToSequelize = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
93
119
|
container.addModels(models);
|
|
94
|
-
|
|
120
|
+
common_1.logger.info('@sequelize :: add models to sequelize instance.');
|
|
95
121
|
});
|
|
96
122
|
exports.addModelsToSequelize = addModelsToSequelize;
|
|
97
123
|
const addDtosToSwagger = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
98
124
|
yield Promise.all(dtos.map((Dto) => {
|
|
99
125
|
const dto = new Dto();
|
|
100
126
|
if (!(dto === null || dto === void 0 ? void 0 : dto.init)) {
|
|
101
|
-
|
|
127
|
+
common_1.logger.warn(`@sequelize :: ${dto.constructor.name} is not a valid dto class. It should extends with ExtendableDto.`);
|
|
102
128
|
}
|
|
103
129
|
else {
|
|
104
130
|
dto === null || dto === void 0 ? void 0 : dto.init();
|
|
105
131
|
}
|
|
106
132
|
}));
|
|
107
|
-
|
|
133
|
+
common_1.logger.info('@sequelize :: add dto to swagger schemas.');
|
|
108
134
|
});
|
|
109
135
|
exports.addDtosToSwagger = addDtosToSwagger;
|
|
110
136
|
const modelsSync = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
111
137
|
yield container.sync({ alter: { drop: false } });
|
|
112
|
-
|
|
138
|
+
common_1.logger.info('@sequelize :: models sync finished');
|
|
113
139
|
return true;
|
|
114
140
|
});
|
|
115
141
|
exports.modelsSync = modelsSync;
|
|
116
142
|
const getSequelize = () => container;
|
|
117
143
|
exports.getSequelize = getSequelize;
|
|
118
144
|
const initSequelizeModule = (dirname) => __awaiter(void 0, void 0, void 0, function* () {
|
|
119
|
-
const dbContainer = yield (0, exports.dbInit)((0,
|
|
145
|
+
const dbContainer = yield (0, exports.dbInit)((0, common_1.getConfig)().db);
|
|
120
146
|
yield (0, exports.loadPath)(dirname, '');
|
|
121
147
|
yield (0, exports.addModelsToSequelize)();
|
|
122
148
|
yield (0, exports.addDtosToSwagger)();
|
|
@@ -128,17 +154,17 @@ exports.generateDBML = generateDBML;
|
|
|
128
154
|
const healthCheck = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
129
155
|
const connection = container;
|
|
130
156
|
if (!connection) {
|
|
131
|
-
|
|
157
|
+
common_1.logger.error(`@sequelize(health-check) :: Sequelize connection is not initialized`);
|
|
132
158
|
throw Error('Sequelize connection is not initialized');
|
|
133
159
|
}
|
|
134
160
|
try {
|
|
135
161
|
const check = connection.query(`SELECT 1`);
|
|
136
162
|
yield (0, promiseTimeout_1.promiseTimeout)(1000, check);
|
|
137
|
-
|
|
163
|
+
common_1.logger.info(`@sequelize(health-check) :: Sequelize connection is healthy`);
|
|
138
164
|
return true;
|
|
139
165
|
}
|
|
140
166
|
catch (err) {
|
|
141
|
-
|
|
167
|
+
common_1.logger.error(`@sequelize(health-check) :: Sequelize connection is not healthy`);
|
|
142
168
|
throw Error('Sequelize connection is not healthy');
|
|
143
169
|
}
|
|
144
170
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequelize/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+DAAqF;AACrF,4CAAoB;AAEpB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequelize/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAAgB,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAAgB,SAAS,EAAE,MAAM,UAAU,CAAC;AAInD,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,IACxB,CAAC,SAAS,SAAS,EAAE,QAAQ,CAAC,UAsDhD"}
|
package/dist/table/index.js
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Table =
|
|
3
|
+
exports.Table = Table;
|
|
4
4
|
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
5
5
|
const belongsto_1 = require("../types/belongsto");
|
|
6
6
|
const foreignkey_1 = require("../types/foreignkey");
|
|
7
7
|
const dbml_1 = require("../dbml");
|
|
8
8
|
const console_1 = require("../console");
|
|
9
9
|
const types_1 = require("../types");
|
|
10
|
+
const schema_1 = require("@asapjs/schema");
|
|
11
|
+
const register_1 = require("../types/register");
|
|
10
12
|
function Table(options) {
|
|
11
13
|
return function (target) {
|
|
14
|
+
// Sequelize 플러그인과 타입 등록 확인
|
|
15
|
+
if (!schema_1.registry.has('sequelize')) {
|
|
16
|
+
schema_1.registry.register(schema_1.sequelizePlugin);
|
|
17
|
+
}
|
|
18
|
+
(0, register_1.registerSequelizeTypes)();
|
|
12
19
|
const modelName = options.tableName || target.name;
|
|
13
20
|
const types = (0, types_1.getTypesData)(target);
|
|
14
21
|
Object.entries(types).forEach(([key, type]) => {
|
|
@@ -19,7 +26,15 @@ function Table(options) {
|
|
|
19
26
|
(0, belongsto_1.TypeIsBelongsToAddColumn)(target, type, key);
|
|
20
27
|
}
|
|
21
28
|
else {
|
|
22
|
-
|
|
29
|
+
let sequelizeConfig = type.toSequelize();
|
|
30
|
+
// id 필드에 대한 특별 처리
|
|
31
|
+
if (key === 'id' && sequelizeConfig && !sequelizeConfig.primaryKey) {
|
|
32
|
+
// 오류 메시지로 보아 primaryKey가 제대로 전달되지 않고 있음
|
|
33
|
+
// 임시로 primaryKey를 true로 설정
|
|
34
|
+
console.warn(`Warning: 'id' field missing primaryKey in table '${modelName}'. Adding primaryKey: true`);
|
|
35
|
+
sequelizeConfig = Object.assign(Object.assign({}, sequelizeConfig), { primaryKey: true });
|
|
36
|
+
}
|
|
37
|
+
(0, sequelize_typescript_1.addAttribute)(target.prototype, key, sequelizeConfig);
|
|
23
38
|
}
|
|
24
39
|
});
|
|
25
40
|
if ((options === null || options === void 0 ? void 0 : options.timestamps) !== false) {
|
|
@@ -40,5 +55,4 @@ function Table(options) {
|
|
|
40
55
|
(0, sequelize_typescript_1.addOptions)(target.prototype, Object.assign(Object.assign({}, options), { charset: 'utf8mb4', collate: 'utf8mb4_general_ci' }));
|
|
41
56
|
};
|
|
42
57
|
}
|
|
43
|
-
exports.Table = Table;
|
|
44
58
|
//# sourceMappingURL=index.js.map
|
package/dist/table/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":";;AAUA,sBAuDC;AAhED,+DAA8E;AAC9E,kDAA8D;AAC9D,oDAA+D;AAC/D,kCAAmD;AACnD,wCAAyD;AACzD,oCAAmD;AACnD,2CAA2D;AAC3D,gDAA2D;AAE3D,SAAgB,KAAK,CAAC,OAAqB;IACzC,OAAO,UAA+B,MAAS;QAC7C,2BAA2B;QAC3B,IAAI,CAAC,iBAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,iBAAQ,CAAC,QAAQ,CAAC,wBAAe,CAAC,CAAC;QACrC,CAAC;QACD,IAAA,iCAAsB,GAAE,CAAC;QAEzB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC;QACnD,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC;QAEnC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACjC,IAAA,qCAAwB,EAAI,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACvC,IAAA,oCAAwB,EAAI,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,IAAI,eAAe,GAAI,IAAY,CAAC,WAAW,EAAE,CAAC;gBAElD,kBAAkB;gBAClB,IAAI,GAAG,KAAK,IAAI,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;oBACnE,wCAAwC;oBACxC,2BAA2B;oBAC3B,OAAO,CAAC,IAAI,CAAC,oDAAoD,SAAS,4BAA4B,CAAC,CAAC;oBACxG,eAAe,mCAAQ,eAAe,KAAE,UAAU,EAAE,IAAI,GAAE,CAAC;gBAC7D,CAAC;gBAED,IAAA,mCAAY,EAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,MAAK,KAAK,EAAE,CAAC;YAClC,IAAA,iCAAU,EAAC,MAAM,CAAC,SAAS,EAAE;gBAC3B,SAAS,EAAE,YAAY;gBACvB,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,IAAA,iCAAU,EAAC,MAAM,CAAC,SAAS,EAAE;gBAC3B,SAAS,EAAE,YAAY;gBACvB,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;QAED,gCAAgC;QAChC,IAAA,eAAY,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAA,kBAAe,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE/C,uBAAuB;QACvB,IAAA,mCAAY,EAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1C,IAAA,iCAAU,EAAC,MAAM,CAAC,SAAS,kCACtB,OAAO,KACV,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,oBAAoB,IAC7B,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ClassType } from './index';
|
|
2
2
|
import { TypeIsData } from './generators/typeGenerator';
|
|
3
3
|
export declare const TypeIsBelongsToAddColumn: <T extends ClassType>(target: T, type: TypeIsData, key: string) => void;
|
|
4
|
-
declare const TypeIsBelongsTo: (...options: any[]) => (target?: any, propertyName?: string
|
|
4
|
+
declare const TypeIsBelongsTo: (...options: any[]) => (target?: any, propertyName?: string, propertyDescriptor?: PropertyDescriptor) => void & TypeIsData;
|
|
5
5
|
export default TypeIsBelongsTo;
|
|
6
6
|
//# sourceMappingURL=belongsto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongsto.d.ts","sourceRoot":"","sources":["../../src/types/belongsto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAiB,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEvE,eAAO,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"belongsto.d.ts","sourceRoot":"","sources":["../../src/types/belongsto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAiB,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEvE,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,UAAU,EAAE,KAAK,MAAM,SAarG,CAAC;AAEF,QAAA,MAAM,eAAe,0BASmsB,YAAY,EAAC,qBAAsB,EAAC,uCAAwC,sBAHjyB,CAAC;AAEJ,eAAe,eAAe,CAAC"}
|
package/dist/types/belongsto.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TypeIsBelongsToAddColumn = void 0;
|
|
4
|
-
const
|
|
4
|
+
const common_1 = require("@asapjs/common");
|
|
5
5
|
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
6
6
|
const typeGenerator_1 = require("./generators/typeGenerator");
|
|
7
7
|
const TypeIsBelongsToAddColumn = (target, type, key) => {
|
|
8
8
|
if (!type.toSequelize) {
|
|
9
|
-
|
|
9
|
+
common_1.logger.error('@asapjs/sequelize :: TypeIs.BELONGSTO에 toSequelize가 정의되지 않았습니다.');
|
|
10
10
|
process.exit(1);
|
|
11
11
|
}
|
|
12
12
|
const { associatedClassGetter, optionsOrForeignKey } = type.toSequelize();
|
|
13
|
+
if (typeof associatedClassGetter !== 'function') {
|
|
14
|
+
common_1.logger.error('@asapjs/sequelize :: TypeIs.BELONGSTO associatedClassGetter가 함수가 아닙니다.');
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
13
17
|
const options = (0, sequelize_typescript_1.getPreparedAssociationOptions)(optionsOrForeignKey);
|
|
14
18
|
if (!options.as)
|
|
15
19
|
options.as = key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongsto.js","sourceRoot":"","sources":["../../src/types/belongsto.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"belongsto.js","sourceRoot":"","sources":["../../src/types/belongsto.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,+DAA2G;AAE3G,8DAAuE;AAEhE,MAAM,wBAAwB,GAAG,CAAsB,MAAS,EAAE,IAAgB,EAAE,GAAW,EAAE,EAAE;IACxG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,eAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1E,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE,CAAC;QAChD,eAAM,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,oDAA6B,EAAC,mBAAmB,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC;IAClC,IAAA,qCAAc,EAAC,MAAM,CAAC,SAAS,EAAE,IAAI,2CAAoB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7F,CAAC,CAAC;AAbW,QAAA,wBAAwB,4BAanC;AAEF,MAAM,eAAe,GAAG,IAAA,6BAAa,EAAC,CAAC,qBAA0B,EAAE,mBAAyB,EAAE,EAAE,CAAC,CAAC;IAChG,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClB,qBAAqB;QACrB,mBAAmB;KACpB,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,kBAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TypeIs } from '@asapjs/schema';
|
|
2
|
+
export declare function createDecorator(typeName: keyof typeof TypeIs): (options?: any) => (target: any, propertyName: string, propertyDescriptor?: PropertyDescriptor) => void;
|
|
3
|
+
export declare const TypeIsDecorators: any;
|
|
4
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/types/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA6B,MAAM,gBAAgB,CAAC;AAWnE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,OAAO,MAAM,IACnD,UAAU,GAAG,MACX,QAAQ,GAAG,EAAE,cAAc,MAAM,EAAE,qBAAqB,kBAAkB,UA4BrF;AAiBD,eAAO,MAAM,gBAAgB,KAA2B,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeIsDecorators = void 0;
|
|
4
|
+
exports.createDecorator = createDecorator;
|
|
5
|
+
const schema_1 = require("@asapjs/schema");
|
|
6
|
+
const typeGenerator_1 = require("./generators/typeGenerator");
|
|
7
|
+
const register_1 = require("./register");
|
|
8
|
+
// 데코레이터가 생성될 때 sequelize 플러그인 확인
|
|
9
|
+
if (!schema_1.registry.has('sequelize')) {
|
|
10
|
+
schema_1.registry.register(schema_1.sequelizePlugin);
|
|
11
|
+
}
|
|
12
|
+
(0, register_1.registerSequelizeTypes)();
|
|
13
|
+
// 데코레이터로 사용할 수 있도록 wrapper 함수 생성
|
|
14
|
+
function createDecorator(typeName) {
|
|
15
|
+
return (options) => {
|
|
16
|
+
return (target, propertyName, propertyDescriptor) => {
|
|
17
|
+
// TypeIs에서 타입 생성
|
|
18
|
+
const typeFactory = schema_1.TypeIs[typeName];
|
|
19
|
+
if (!typeFactory) {
|
|
20
|
+
throw new Error(`Type ${typeName} is not registered in TypeIs`);
|
|
21
|
+
}
|
|
22
|
+
const schemaType = typeFactory(options);
|
|
23
|
+
// 기존 sequelize 메타데이터 시스템과 호환
|
|
24
|
+
(0, typeGenerator_1.saveTypesData)(target, propertyName, {
|
|
25
|
+
__name: schemaType.__name,
|
|
26
|
+
toSwagger: () => schemaType.toSwagger ? schemaType.toSwagger() : {},
|
|
27
|
+
toSequelize: () => schemaType.toSequelize ? schemaType.toSequelize() : {},
|
|
28
|
+
fixValue: schemaType.parse ? (v) => {
|
|
29
|
+
try {
|
|
30
|
+
return schemaType.parse(v);
|
|
31
|
+
}
|
|
32
|
+
catch (_a) {
|
|
33
|
+
return v;
|
|
34
|
+
}
|
|
35
|
+
} : undefined,
|
|
36
|
+
});
|
|
37
|
+
if (propertyDescriptor) {
|
|
38
|
+
propertyDescriptor.value = schemaType;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// 모든 TypeIs 타입에 대한 데코레이터를 동적으로 생성
|
|
44
|
+
function createTypeIsDecorators() {
|
|
45
|
+
const decorators = {};
|
|
46
|
+
// TypeIs의 모든 속성에 대해 데코레이터 생성
|
|
47
|
+
for (const key in schema_1.TypeIs) {
|
|
48
|
+
if (schema_1.TypeIs.hasOwnProperty(key) && typeof schema_1.TypeIs[key] === 'function') {
|
|
49
|
+
decorators[key] = createDecorator(key);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return decorators;
|
|
53
|
+
}
|
|
54
|
+
// 모든 TypeIs 타입에 대한 데코레이터 export
|
|
55
|
+
exports.TypeIsDecorators = createTypeIsDecorators();
|
|
56
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/types/decorators.ts"],"names":[],"mappings":";;;AAWA,0CA8BC;AAzCD,2CAAmE;AACnE,8DAA2D;AAC3D,yCAAoD;AAEpD,iCAAiC;AACjC,IAAI,CAAC,iBAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,iBAAQ,CAAC,QAAQ,CAAC,wBAAe,CAAC,CAAC;AACrC,CAAC;AACD,IAAA,iCAAsB,GAAE,CAAC;AAEzB,iCAAiC;AACjC,SAAgB,eAAe,CAAC,QAA6B;IAC3D,OAAO,CAAC,OAAa,EAAE,EAAE;QACvB,OAAO,CAAC,MAAW,EAAE,YAAoB,EAAE,kBAAuC,EAAE,EAAE;YACpF,iBAAiB;YACjB,MAAM,WAAW,GAAG,eAAM,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,8BAA8B,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YAExC,6BAA6B;YAC7B,IAAA,6BAAa,EAAC,MAAM,EAAE,YAAY,EAAE;gBAClC,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;gBACnE,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;gBACzE,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAM,EAAE,EAAE;oBACtC,IAAI,CAAC;wBACH,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC7B,CAAC;oBAAC,WAAM,CAAC;wBACP,OAAO,CAAC,CAAC;oBACX,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;YAEH,IAAI,kBAAkB,EAAE,CAAC;gBACvB,kBAAkB,CAAC,KAAK,GAAG,UAAU,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,SAAS,sBAAsB;IAC7B,MAAM,UAAU,GAAQ,EAAE,CAAC;IAE3B,6BAA6B;IAC7B,KAAK,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;QACzB,IAAI,eAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,OAAO,eAAM,CAAC,GAA0B,CAAC,KAAK,UAAU,EAAE,CAAC;YAC3F,UAAU,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAA0B,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,gCAAgC;AACnB,QAAA,gBAAgB,GAAG,sBAAsB,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TypeIsData } from './generators/typeGenerator';
|
|
2
2
|
import { ClassType } from './index';
|
|
3
3
|
export declare const TypeIsForienKeyAddColumn: <T extends ClassType>(target: T, type: TypeIsData, key: string) => void;
|
|
4
|
-
declare const TypeIsForeignKey: (...options: any[]) => (target?: any, propertyName?: string
|
|
4
|
+
declare const TypeIsForeignKey: (...options: any[]) => (target?: any, propertyName?: string, propertyDescriptor?: PropertyDescriptor) => void & TypeIsData;
|
|
5
5
|
export default TypeIsForeignKey;
|
|
6
6
|
//# sourceMappingURL=foreignkey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foreignkey.d.ts","sourceRoot":"","sources":["../../src/types/foreignkey.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"foreignkey.d.ts","sourceRoot":"","sources":["../../src/types/foreignkey.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAOpC,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,UAAU,EAAE,KAAK,MAAM,SAyBrG,CAAC;AAEF,QAAA,MAAM,gBAAgB,0BASqT,YAAY,EAAC,qBAAsB,EAAC,uCAAwC,sBAHpZ,CAAC;AAEJ,eAAe,gBAAgB,CAAC"}
|
package/dist/types/foreignkey.js
CHANGED
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TypeIsForienKeyAddColumn = void 0;
|
|
4
|
-
const
|
|
4
|
+
const common_1 = require("@asapjs/common");
|
|
5
5
|
const typeGenerator_1 = require("./generators/typeGenerator");
|
|
6
|
-
const
|
|
6
|
+
const schema_1 = require("@asapjs/schema");
|
|
7
7
|
// sequelize-typescript
|
|
8
8
|
const foreign_key_service_1 = require("sequelize-typescript/dist/associations/foreign-key/foreign-key-service");
|
|
9
9
|
const attribute_service_1 = require("sequelize-typescript/dist/model/column/attribute-service");
|
|
10
10
|
const TypeIsForienKeyAddColumn = (target, type, key) => {
|
|
11
11
|
if (!type.toSequelize) {
|
|
12
|
-
|
|
12
|
+
common_1.logger.error('@asapjs/sequelize :: TypeIs.FOREIGNKEY에 toSequelize가 정의되지 않았습니다.');
|
|
13
13
|
process.exit(1);
|
|
14
14
|
}
|
|
15
15
|
const { extraData, table } = type.toSequelize();
|
|
16
|
-
|
|
16
|
+
// sequelize-typescript addForeignKey는 relatedClassGetter 함수를 기대
|
|
17
|
+
if (typeof table === 'function') {
|
|
18
|
+
(0, foreign_key_service_1.addForeignKey)(target.prototype, table, key);
|
|
19
|
+
}
|
|
17
20
|
if (extraData) {
|
|
18
21
|
// 지정한 type이 없을 경우 INT로 지정
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
(0
|
|
22
|
+
const resolvedType = (extraData === null || extraData === void 0 ? void 0 : extraData.type) || schema_1.TypeIs.INT;
|
|
23
|
+
const schemaType = typeof resolvedType === 'function' ? resolvedType() : resolvedType;
|
|
24
|
+
const sequelizeType = (schemaType === null || schemaType === void 0 ? void 0 : schemaType.toSequelize) ? schemaType.toSequelize() : {};
|
|
25
|
+
const referenceOption = table && typeof table === 'object' && table.model && table.key ? { references: table } : {};
|
|
26
|
+
(0, attribute_service_1.addAttribute)(target.prototype, key, Object.assign(Object.assign(Object.assign({}, extraData), referenceOption), sequelizeType));
|
|
22
27
|
}
|
|
23
28
|
};
|
|
24
29
|
exports.TypeIsForienKeyAddColumn = TypeIsForienKeyAddColumn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foreignkey.js","sourceRoot":"","sources":["../../src/types/foreignkey.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"foreignkey.js","sourceRoot":"","sources":["../../src/types/foreignkey.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,8DAAuE;AAGvE,2CAAwC;AAExC,uBAAuB;AACvB,gHAAuG;AACvG,gGAAwF;AAEjF,MAAM,wBAAwB,GAAG,CAAsB,MAAS,EAAE,IAAgB,EAAE,GAAW,EAAE,EAAE;IACxG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,eAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChD,gEAAgE;IAChE,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,IAAA,mCAAa,EAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,0BAA0B;QAC1B,MAAM,YAAY,GAAG,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,KAAI,eAAM,CAAC,GAAG,CAAC;QACnD,MAAM,UAAU,GAAG,OAAO,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QACtF,MAAM,aAAa,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,MAAM,eAAe,GACnB,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE9F,IAAA,gCAAY,EAAC,MAAM,CAAC,SAAS,EAAE,GAAG,gDAC7B,SAAS,GACT,eAAe,GACf,aAAa,EAChB,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAzBW,QAAA,wBAAwB,4BAyBnC;AAEF,MAAM,gBAAgB,GAAG,IAAA,6BAAa,EAAC,CAAC,KAAU,EAAE,SAAe,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,EAAE,YAAY;IACpB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClB,KAAK;QACL,SAAS;KACV,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,kBAAe,gBAAgB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ModelAttributeColumnOptions } from 'sequelize';
|
|
2
|
-
export declare const toSequelizeGenerator: <T>(generator: (options?:
|
|
2
|
+
export declare const toSequelizeGenerator: <T>(generator: (options?: T & ModelAttributeColumnOptions) => ModelAttributeColumnOptions) => (options?: T & ModelAttributeColumnOptions) => ModelAttributeColumnOptions;
|
|
3
3
|
//# sourceMappingURL=toSequelizeGenerator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toSequelizeGenerator.d.ts","sourceRoot":"","sources":["../../../src/types/generators/toSequelizeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAExD,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"toSequelizeGenerator.d.ts","sourceRoot":"","sources":["../../../src/types/generators/toSequelizeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAExD,eAAO,MAAM,oBAAoB,GAAI,CAAC,EACpC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,2BAA2B,KAAK,2BAA2B,gBAA/D,CAAC,GAAG,2BAA2B,KAAK,2BAC9C,CAAC"}
|
|
@@ -6,5 +6,5 @@ export interface ISwaggerData {
|
|
|
6
6
|
items?: any;
|
|
7
7
|
$ref?: string;
|
|
8
8
|
}
|
|
9
|
-
export declare const toSwaggerGenerator: <T>(generator: (options?:
|
|
9
|
+
export declare const toSwaggerGenerator: <T>(generator: (options?: T & ModelAttributeColumnOptions) => ISwaggerData) => (options?: T & ModelAttributeColumnOptions) => ISwaggerData;
|
|
10
10
|
//# sourceMappingURL=toSwaggerGenerator.d.ts.map
|