@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.
Files changed (157) hide show
  1. package/dist/console/index.js +4 -4
  2. package/dist/console/index.js.map +1 -1
  3. package/dist/dbml/index.d.ts.map +1 -1
  4. package/dist/dbml/index.js +3 -3
  5. package/dist/dbml/index.js.map +1 -1
  6. package/dist/dto/ExtendableDto.d.ts +42 -3
  7. package/dist/dto/ExtendableDto.d.ts.map +1 -1
  8. package/dist/dto/ExtendableDto.js +62 -49
  9. package/dist/dto/ExtendableDto.js.map +1 -1
  10. package/dist/dto/PaginationQueryDto.d.ts +2 -0
  11. package/dist/dto/PaginationQueryDto.d.ts.map +1 -1
  12. package/dist/dto/PaginationQueryDto.js +5 -4
  13. package/dist/dto/PaginationQueryDto.js.map +1 -1
  14. package/dist/dto/index.d.ts +2 -2
  15. package/dist/dto/index.d.ts.map +1 -1
  16. package/dist/dto/index.js +2 -2
  17. package/dist/dto/index.js.map +1 -1
  18. package/dist/index.d.ts +8 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +26 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/plugin.d.ts +8 -0
  23. package/dist/plugin.d.ts.map +1 -0
  24. package/dist/plugin.js +68 -0
  25. package/dist/plugin.js.map +1 -0
  26. package/dist/repository/index.d.ts +18 -9
  27. package/dist/repository/index.d.ts.map +1 -1
  28. package/dist/repository/index.js +27 -24
  29. package/dist/repository/index.js.map +1 -1
  30. package/dist/sequelize/index.d.ts +1 -0
  31. package/dist/sequelize/index.d.ts.map +1 -1
  32. package/dist/sequelize/index.js +73 -21
  33. package/dist/sequelize/index.js.map +1 -1
  34. package/dist/table/index.d.ts.map +1 -1
  35. package/dist/table/index.js +17 -3
  36. package/dist/table/index.js.map +1 -1
  37. package/dist/types/belongsto.d.ts +1 -1
  38. package/dist/types/belongsto.d.ts.map +1 -1
  39. package/dist/types/belongsto.js +6 -2
  40. package/dist/types/belongsto.js.map +1 -1
  41. package/dist/types/decorators.d.ts +4 -0
  42. package/dist/types/decorators.d.ts.map +1 -0
  43. package/dist/types/decorators.js +56 -0
  44. package/dist/types/decorators.js.map +1 -0
  45. package/dist/types/foreignkey.d.ts +1 -1
  46. package/dist/types/foreignkey.d.ts.map +1 -1
  47. package/dist/types/foreignkey.js +12 -7
  48. package/dist/types/foreignkey.js.map +1 -1
  49. package/dist/types/generators/toSequelizeGenerator.d.ts +1 -1
  50. package/dist/types/generators/toSequelizeGenerator.d.ts.map +1 -1
  51. package/dist/types/generators/toSwaggerGenerator.d.ts +1 -1
  52. package/dist/types/generators/toSwaggerGenerator.d.ts.map +1 -1
  53. package/dist/types/generators/typeGenerator.d.ts +1 -1
  54. package/dist/types/generators/typeGenerator.d.ts.map +1 -1
  55. package/dist/types/generators/typeGenerator.js +27 -4
  56. package/dist/types/generators/typeGenerator.js.map +1 -1
  57. package/dist/types/index.d.ts +5 -22
  58. package/dist/types/index.d.ts.map +1 -1
  59. package/dist/types/index.js +4 -36
  60. package/dist/types/index.js.map +1 -1
  61. package/dist/types/paging.d.ts +1 -1
  62. package/dist/types/paging.d.ts.map +1 -1
  63. package/dist/types/paging.js +3 -3
  64. package/dist/types/paging.js.map +1 -1
  65. package/dist/types/query.d.ts +1 -1
  66. package/dist/types/query.d.ts.map +1 -1
  67. package/dist/types/query.js +2 -2
  68. package/dist/types/query.js.map +1 -1
  69. package/dist/types/register.d.ts +2 -0
  70. package/dist/types/register.d.ts.map +1 -0
  71. package/dist/types/register.js +53 -0
  72. package/dist/types/register.js.map +1 -0
  73. package/dist/types/schema-extensions.d.ts +116 -0
  74. package/dist/types/schema-extensions.d.ts.map +1 -0
  75. package/dist/types/schema-extensions.js +150 -0
  76. package/dist/types/schema-extensions.js.map +1 -0
  77. package/dist/utils/getUserIdInQuery.d.ts.map +1 -1
  78. package/dist/utils/isClass.d.ts.map +1 -1
  79. package/dist/utils/promiseTimeout.d.ts +2 -0
  80. package/dist/utils/promiseTimeout.d.ts.map +1 -0
  81. package/dist/utils/promiseTimeout.js +12 -0
  82. package/dist/utils/promiseTimeout.js.map +1 -0
  83. package/dist/utils/swagger.d.ts +4 -0
  84. package/dist/utils/swagger.d.ts.map +1 -0
  85. package/dist/utils/swagger.js +26 -0
  86. package/dist/utils/swagger.js.map +1 -0
  87. package/package.json +44 -33
  88. package/.yarnrc.yml +0 -1
  89. package/dist/types/array.d.ts +0 -7
  90. package/dist/types/array.d.ts.map +0 -1
  91. package/dist/types/array.js +0 -58
  92. package/dist/types/array.js.map +0 -1
  93. package/dist/types/base64.d.ts +0 -10
  94. package/dist/types/base64.d.ts.map +0 -1
  95. package/dist/types/base64.js +0 -20
  96. package/dist/types/base64.js.map +0 -1
  97. package/dist/types/binary.d.ts +0 -10
  98. package/dist/types/binary.d.ts.map +0 -1
  99. package/dist/types/binary.js +0 -20
  100. package/dist/types/binary.js.map +0 -1
  101. package/dist/types/boolean.d.ts +0 -9
  102. package/dist/types/boolean.d.ts.map +0 -1
  103. package/dist/types/boolean.js +0 -27
  104. package/dist/types/boolean.js.map +0 -1
  105. package/dist/types/dateonly.d.ts +0 -8
  106. package/dist/types/dateonly.d.ts.map +0 -1
  107. package/dist/types/dateonly.js +0 -20
  108. package/dist/types/dateonly.js.map +0 -1
  109. package/dist/types/datetime.d.ts +0 -8
  110. package/dist/types/datetime.d.ts.map +0 -1
  111. package/dist/types/datetime.js +0 -20
  112. package/dist/types/datetime.js.map +0 -1
  113. package/dist/types/decemal.d.ts +0 -11
  114. package/dist/types/decemal.d.ts.map +0 -1
  115. package/dist/types/decemal.js +0 -30
  116. package/dist/types/decemal.js.map +0 -1
  117. package/dist/types/double.d.ts +0 -11
  118. package/dist/types/double.d.ts.map +0 -1
  119. package/dist/types/double.js +0 -27
  120. package/dist/types/double.js.map +0 -1
  121. package/dist/types/dto.d.ts +0 -10
  122. package/dist/types/dto.d.ts.map +0 -1
  123. package/dist/types/dto.js +0 -23
  124. package/dist/types/dto.js.map +0 -1
  125. package/dist/types/enum.d.ts +0 -9
  126. package/dist/types/enum.d.ts.map +0 -1
  127. package/dist/types/enum.js +0 -26
  128. package/dist/types/enum.js.map +0 -1
  129. package/dist/types/float.d.ts +0 -11
  130. package/dist/types/float.d.ts.map +0 -1
  131. package/dist/types/float.js +0 -27
  132. package/dist/types/float.js.map +0 -1
  133. package/dist/types/int.d.ts +0 -12
  134. package/dist/types/int.d.ts.map +0 -1
  135. package/dist/types/int.js +0 -27
  136. package/dist/types/int.js.map +0 -1
  137. package/dist/types/json.d.ts +0 -9
  138. package/dist/types/json.d.ts.map +0 -1
  139. package/dist/types/json.js +0 -31
  140. package/dist/types/json.js.map +0 -1
  141. package/dist/types/long.d.ts +0 -12
  142. package/dist/types/long.d.ts.map +0 -1
  143. package/dist/types/long.js +0 -27
  144. package/dist/types/long.js.map +0 -1
  145. package/dist/types/password.d.ts +0 -6
  146. package/dist/types/password.d.ts.map +0 -1
  147. package/dist/types/password.js +0 -20
  148. package/dist/types/password.js.map +0 -1
  149. package/dist/types/string.d.ts +0 -11
  150. package/dist/types/string.d.ts.map +0 -1
  151. package/dist/types/string.js +0 -26
  152. package/dist/types/string.js.map +0 -1
  153. package/dist/types/text.d.ts +0 -9
  154. package/dist/types/text.d.ts.map +0 -1
  155. package/dist/types/text.js +0 -16
  156. package/dist/types/text.js.map +0 -1
  157. 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
- interface IArgs<T extends Model> extends FindOptions<T> {
5
- exportTo: typeof ExtendableDto;
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
- type FindAllResponse<T> = T[];
13
- type FindOneResponse<T> = T | null;
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;AAEvC,UAAU,KAAK,CAAC,CAAC,SAAS,KAAK,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACrD,QAAQ,EAAE,OAAO,aAAa,CAAC;IAC/B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9B,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,kBAAkB,CAoBxB;IAEF,OAAO,CAAC,OAAO,CAqBb;IAEF,OAAO,CAAC,OAAO,CAIb;IAEK,UAAU;;;MAGf;CACH"}
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"}
@@ -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.getOptionsWithArgs = (args) => {
26
- const { exportTo: Dto, user, paging } = args, options = __rest(args, ["exportTo", "user", "paging"]);
27
- const exportDto = new Dto();
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
- this.findAll = (model, args) => __awaiter(this, void 0, void 0, function* () {
42
- var _a, _b;
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((_a = args === null || args === void 0 ? void 0 : args.paging) === null || _a === void 0 ? void 0 : _a.page), 10);
47
- const limit = parseInt(String((_b = args === null || args === void 0 ? void 0 : args.paging) === null || _b === void 0 ? void 0 : _b.limit), 10);
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
- this.findOne = (model, args) => __awaiter(this, void 0, void 0, function* () {
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":"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"}
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;AAQ1B,eAAO,MAAM,MAAM,WAAkB,gBAAgB,uBA0CpD,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAgB,MAAM,WAAW,MAAM,kBAgB3D,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,YAAmB,MAAM,KAAG,QAAQ,SAAS,CAM5E,CAAC;AAEF,eAAO,MAAM,YAAY,qBAAiB,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"}
@@ -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 core_1 = require("@asapjs/core");
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
- core_1.logger.info('@sequelize :: Database connected.');
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
- core_1.logger.error(`@sequelize :: Database ${databaseName} has not craeted. Run auto database create process`);
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
- core_1.logger.info('@sequelize(temp_session) :: Database connected.');
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.query(`CREATE DATABASE IF NOT EXISTS \`${databaseName}\`;`).then(() => {
47
- core_1.logger.info(`@sequelize(temp_session) :: Database ${databaseName} Create Successfully`);
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
- core_1.logger.info(`@sequelize(temp_session) :: Release temp session successfully`);
53
+ common_1.logger.info(`@sequelize(temp_session) :: Release temp session successfully`);
51
54
  });
52
55
  sequelize.authenticate().then(() => {
53
- core_1.logger.info('@sequelize :: Database Reconnect Successfully');
56
+ common_1.logger.info('@sequelize :: Database Reconnect Successfully');
54
57
  });
55
58
  }
56
59
  else {
57
- core_1.logger.error('@sequelize :: Unable to connect to the database:\n', err);
60
+ common_1.logger.error('@sequelize :: Unable to connect to the database:\n', err);
58
61
  }
59
62
  }));
60
- core_1.logger.info('@sequelize :: database initalize.');
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
- // const extension = process.env.NODE_ENV === 'production' ? 'js' : 'ts';
67
- const extension = 'js';
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.includes(`Table.${extension}`) && file.name.endsWith('map') === false) {
73
- models.push(require(`${path}/${subPath}/${file.name}`).default);
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.includes(`Dto.${extension}`) && file.name.endsWith('map') === false) {
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
- core_1.logger.info('@sequelize :: add models to sequelize instance.');
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
- core_1.logger.warn(`@sequelize :: ${dto.constructor.name} is not a valid dto class. It should extends with ExtendableDto.`);
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
- core_1.logger.info('@sequelize :: add dto to swagger schemas.');
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
- core_1.logger.info('@sequelize :: models sync finished');
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, core_1.getConfig)().db);
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":"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"}
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;AAEnD,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,4CAuC1C"}
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"}
@@ -1,14 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Table = void 0;
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
- (0, sequelize_typescript_1.addAttribute)(target.prototype, key, type.toSequelize());
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":";;;AACA,+DAA8E;AAC9E,kDAA8D;AAC9D,oDAA+D;AAC/D,kCAAmD;AACnD,wCAAyD;AACzD,oCAAmD;AAEnD,SAAgB,KAAK,CAAC,OAAqB;IACzC,OAAO,UAA+B,MAAS;QAC7C,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;gBAChC,IAAA,qCAAwB,EAAI,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;aAChD;iBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;gBACtC,IAAA,oCAAwB,EAAI,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;aAChD;iBAAM;gBACL,IAAA,mCAAY,EAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAG,IAAY,CAAC,WAAW,EAAE,CAAC,CAAC;aAClE;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,MAAK,KAAK,EAAE;YACjC,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;SACJ;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;AAvCD,sBAuCC"}
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 | undefined, propertyDescriptor?: PropertyDescriptor | undefined) => void & TypeIsData;
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,yCAA0C,UAAU,OAAO,MAAM,SASrG,CAAC;AAEF,QAAA,MAAM,eAAe,oJAMlB,CAAC;AAEJ,eAAe,eAAe,CAAC"}
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"}
@@ -1,15 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TypeIsBelongsToAddColumn = void 0;
4
- const core_1 = require("@asapjs/core");
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
- core_1.logger.error('@asapjs/sequelize :: TypeIs.BELONGSTO에 toSequelize가 정의되지 않았습니다.');
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,uCAAsC;AACtC,+DAA2G;AAE3G,8DAAuE;AAEhE,MAAM,wBAAwB,GAAG,CAAsB,MAAS,EAAE,IAAgB,EAAE,GAAW,EAAE,EAAE;IACxG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QACrB,aAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,MAAM,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1E,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;AATW,QAAA,wBAAwB,4BASnC;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"}
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"}