@asapjs/sequelize 0.10.43 → 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 +3 -3
- 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 +26 -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 +1 -0
- package/dist/sequelize/index.d.ts.map +1 -1
- package/dist/sequelize/index.js +73 -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 -22
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -36
- 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 +2 -0
- package/dist/utils/promiseTimeout.d.ts.map +1 -0
- package/dist/utils/promiseTimeout.js +12 -0
- package/dist/utils/promiseTimeout.js.map +1 -0
- 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/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
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SequelizePlugin = void 0;
|
|
13
|
+
const common_1 = require("@asapjs/common");
|
|
14
|
+
const sequelize_1 = require("./sequelize");
|
|
15
|
+
const schema_1 = require("@asapjs/schema");
|
|
16
|
+
const register_1 = require("./types/register");
|
|
17
|
+
require("./types/schema-extensions"); // 타입 확장 import
|
|
18
|
+
class SequelizePlugin {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.name = '@asapjs/sequelize';
|
|
21
|
+
}
|
|
22
|
+
init(config, context) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
common_1.logger.info(`Initializing ${this.name} plugin...`);
|
|
25
|
+
try {
|
|
26
|
+
// Register sequelize plugin for @asapjs/schema
|
|
27
|
+
if (!schema_1.registry.has('sequelize')) {
|
|
28
|
+
schema_1.registry.register(schema_1.sequelizePlugin);
|
|
29
|
+
}
|
|
30
|
+
// Register Sequelize-specific types
|
|
31
|
+
(0, register_1.registerSequelizeTypes)();
|
|
32
|
+
yield (0, sequelize_1.initSequelizeModule)(config.dirname);
|
|
33
|
+
common_1.logger.info(`${this.name} plugin initialized successfully`);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
const err = error;
|
|
37
|
+
common_1.logger.error(`Failed to initialize ${this.name} plugin`, {
|
|
38
|
+
err: error,
|
|
39
|
+
context: {
|
|
40
|
+
message: err === null || err === void 0 ? void 0 : err.message,
|
|
41
|
+
stack: err === null || err === void 0 ? void 0 : err.stack,
|
|
42
|
+
name: err === null || err === void 0 ? void 0 : err.name,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
console.error(`[@asapjs/sequelize] Plugin initialization error (full stack):`, (err === null || err === void 0 ? void 0 : err.stack) || error);
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
destroy() {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
// Close database connections if needed
|
|
53
|
+
try {
|
|
54
|
+
const { getSequelize } = require('./sequelize');
|
|
55
|
+
const sequelize = getSequelize();
|
|
56
|
+
if (sequelize) {
|
|
57
|
+
yield sequelize.close();
|
|
58
|
+
common_1.logger.info(`${this.name} plugin destroyed successfully`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
common_1.logger.error(`Error destroying ${this.name} plugin`, error);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.SequelizePlugin = SequelizePlugin;
|
|
68
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -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"}
|
|
@@ -8,4 +8,5 @@ export declare const modelsSync: () => Promise<boolean>;
|
|
|
8
8
|
export declare const getSequelize: () => Sequelize;
|
|
9
9
|
export declare const initSequelizeModule: (dirname: string) => Promise<Sequelize>;
|
|
10
10
|
export declare const generateDBML: () => Promise<void>;
|
|
11
|
+
export declare const healthCheck: () => Promise<boolean>;
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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;
|
|
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
|
@@ -12,11 +12,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.generateDBML = exports.initSequelizeModule = exports.getSequelize = exports.modelsSync = exports.addDtosToSwagger = exports.addModelsToSequelize = exports.loadPath = exports.dbInit = void 0;
|
|
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
|
+
const promiseTimeout_1 = require("../utils/promiseTimeout");
|
|
20
21
|
let container = null;
|
|
21
22
|
const models = [];
|
|
22
23
|
const dtos = [];
|
|
@@ -26,7 +27,7 @@ const dbInit = (config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
26
27
|
sequelize
|
|
27
28
|
.authenticate()
|
|
28
29
|
.then(() => {
|
|
29
|
-
|
|
30
|
+
common_1.logger.info('@sequelize :: Database connected.');
|
|
30
31
|
})
|
|
31
32
|
.catch((err) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
33
|
// if error occured for database is not exist, create it
|
|
@@ -34,45 +35,78 @@ const dbInit = (config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
34
35
|
err.original.code === 'ER_BAD_DB_ERROR' &&
|
|
35
36
|
err.original.sqlMessage.startsWith('Unknown database')) {
|
|
36
37
|
const databaseName = config.database;
|
|
37
|
-
|
|
38
|
+
common_1.logger.error(`@sequelize :: Database ${databaseName} has not craeted. Run auto database create process`);
|
|
38
39
|
const temp_config = Object.assign({}, config);
|
|
39
40
|
temp_config.database = undefined;
|
|
40
41
|
// create temp sequelize connection
|
|
41
42
|
const sequelize_temp = new sequelize_typescript_1.Sequelize(temp_config);
|
|
42
43
|
sequelize_temp.authenticate().then(() => {
|
|
43
|
-
|
|
44
|
+
common_1.logger.info('@sequelize(temp_session) :: Database connected.');
|
|
44
45
|
});
|
|
45
46
|
// if database is not exist, run create database query
|
|
46
|
-
yield sequelize_temp
|
|
47
|
-
|
|
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`);
|
|
48
51
|
});
|
|
49
52
|
sequelize_temp.close().then(() => {
|
|
50
|
-
|
|
53
|
+
common_1.logger.info(`@sequelize(temp_session) :: Release temp session successfully`);
|
|
51
54
|
});
|
|
52
55
|
sequelize.authenticate().then(() => {
|
|
53
|
-
|
|
56
|
+
common_1.logger.info('@sequelize :: Database Reconnect Successfully');
|
|
54
57
|
});
|
|
55
58
|
}
|
|
56
59
|
else {
|
|
57
|
-
|
|
60
|
+
common_1.logger.error('@sequelize :: Unable to connect to the database:\n', err);
|
|
58
61
|
}
|
|
59
62
|
}));
|
|
60
|
-
|
|
63
|
+
common_1.logger.info('@sequelize :: database initalize.');
|
|
61
64
|
return sequelize;
|
|
62
65
|
});
|
|
63
66
|
exports.dbInit = dbInit;
|
|
67
|
+
const extensions = ['js', 'ts'];
|
|
68
|
+
const extensionInlcude = (includeFileName, fileName) => {
|
|
69
|
+
return extensions
|
|
70
|
+
.map((extension) => `${includeFileName}.${extension}`)
|
|
71
|
+
.map((v) => fileName.includes(v))
|
|
72
|
+
.some((v) => v === true);
|
|
73
|
+
};
|
|
64
74
|
const loadPath = (path, subPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
75
|
const files = yield fs_1.default.readdirSync(path + subPath, { withFileTypes: true });
|
|
66
|
-
|
|
67
|
-
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;
|
|
68
79
|
for (const file of files) {
|
|
69
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
|
+
}
|
|
70
87
|
yield (0, exports.loadPath)(path, `${subPath}/${file.name}`);
|
|
71
88
|
}
|
|
72
|
-
else if (file.name
|
|
73
|
-
|
|
89
|
+
else if (extensionInlcude('Table', file.name) && file.name.endsWith('map') === false) {
|
|
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
|
+
}
|
|
74
108
|
}
|
|
75
|
-
else if (file.name
|
|
109
|
+
else if (extensionInlcude('Dto', file.name) && file.name.endsWith('map') === false) {
|
|
76
110
|
const dto = require(`${path}/${subPath}/${file.name}`).default;
|
|
77
111
|
if (dto) {
|
|
78
112
|
dtos.push(dto);
|
|
@@ -83,32 +117,32 @@ const loadPath = (path, subPath) => __awaiter(void 0, void 0, void 0, function*
|
|
|
83
117
|
exports.loadPath = loadPath;
|
|
84
118
|
const addModelsToSequelize = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
119
|
container.addModels(models);
|
|
86
|
-
|
|
120
|
+
common_1.logger.info('@sequelize :: add models to sequelize instance.');
|
|
87
121
|
});
|
|
88
122
|
exports.addModelsToSequelize = addModelsToSequelize;
|
|
89
123
|
const addDtosToSwagger = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
124
|
yield Promise.all(dtos.map((Dto) => {
|
|
91
125
|
const dto = new Dto();
|
|
92
126
|
if (!(dto === null || dto === void 0 ? void 0 : dto.init)) {
|
|
93
|
-
|
|
127
|
+
common_1.logger.warn(`@sequelize :: ${dto.constructor.name} is not a valid dto class. It should extends with ExtendableDto.`);
|
|
94
128
|
}
|
|
95
129
|
else {
|
|
96
130
|
dto === null || dto === void 0 ? void 0 : dto.init();
|
|
97
131
|
}
|
|
98
132
|
}));
|
|
99
|
-
|
|
133
|
+
common_1.logger.info('@sequelize :: add dto to swagger schemas.');
|
|
100
134
|
});
|
|
101
135
|
exports.addDtosToSwagger = addDtosToSwagger;
|
|
102
136
|
const modelsSync = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
103
137
|
yield container.sync({ alter: { drop: false } });
|
|
104
|
-
|
|
138
|
+
common_1.logger.info('@sequelize :: models sync finished');
|
|
105
139
|
return true;
|
|
106
140
|
});
|
|
107
141
|
exports.modelsSync = modelsSync;
|
|
108
142
|
const getSequelize = () => container;
|
|
109
143
|
exports.getSequelize = getSequelize;
|
|
110
144
|
const initSequelizeModule = (dirname) => __awaiter(void 0, void 0, void 0, function* () {
|
|
111
|
-
const dbContainer = yield (0, exports.dbInit)((0,
|
|
145
|
+
const dbContainer = yield (0, exports.dbInit)((0, common_1.getConfig)().db);
|
|
112
146
|
yield (0, exports.loadPath)(dirname, '');
|
|
113
147
|
yield (0, exports.addModelsToSequelize)();
|
|
114
148
|
yield (0, exports.addDtosToSwagger)();
|
|
@@ -117,4 +151,22 @@ const initSequelizeModule = (dirname) => __awaiter(void 0, void 0, void 0, funct
|
|
|
117
151
|
exports.initSequelizeModule = initSequelizeModule;
|
|
118
152
|
const generateDBML = () => __awaiter(void 0, void 0, void 0, function* () { });
|
|
119
153
|
exports.generateDBML = generateDBML;
|
|
154
|
+
const healthCheck = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
155
|
+
const connection = container;
|
|
156
|
+
if (!connection) {
|
|
157
|
+
common_1.logger.error(`@sequelize(health-check) :: Sequelize connection is not initialized`);
|
|
158
|
+
throw Error('Sequelize connection is not initialized');
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
const check = connection.query(`SELECT 1`);
|
|
162
|
+
yield (0, promiseTimeout_1.promiseTimeout)(1000, check);
|
|
163
|
+
common_1.logger.info(`@sequelize(health-check) :: Sequelize connection is healthy`);
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
common_1.logger.error(`@sequelize(health-check) :: Sequelize connection is not healthy`);
|
|
168
|
+
throw Error('Sequelize connection is not healthy');
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
exports.healthCheck = healthCheck;
|
|
120
172
|
//# sourceMappingURL=index.js.map
|
|
@@ -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"}
|