@hichchi/nest-crud 0.0.2 → 0.0.4

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 (92) hide show
  1. package/CHANGELOG.md +36 -12
  2. package/README.md +2475 -2085
  3. package/base/base-entity-extension.js +10 -6
  4. package/base/base-entity-extension.js.map +1 -1
  5. package/base/base-entity.js +47 -43
  6. package/base/base-entity.js.map +1 -1
  7. package/base/base-repository.js +16 -12
  8. package/base/base-repository.js.map +1 -1
  9. package/base/base-user.entity.js +85 -81
  10. package/base/base-user.entity.js.map +1 -1
  11. package/base/index.js +7 -4
  12. package/base/index.js.map +1 -1
  13. package/constants.js +10 -7
  14. package/constants.js.map +1 -1
  15. package/crud.module.js +29 -26
  16. package/crud.module.js.map +1 -1
  17. package/decorators/entity-extension.decorator.js +20 -17
  18. package/decorators/entity-extension.decorator.js.map +1 -1
  19. package/decorators/entity.decorator.js +30 -27
  20. package/decorators/entity.decorator.js.map +1 -1
  21. package/decorators/filter.decorator.js +8 -5
  22. package/decorators/filter.decorator.js.map +1 -1
  23. package/decorators/index.js +11 -8
  24. package/decorators/index.js.map +1 -1
  25. package/decorators/join-column.decorator.js +11 -8
  26. package/decorators/join-column.decorator.js.map +1 -1
  27. package/decorators/page.decorator.js +8 -5
  28. package/decorators/page.decorator.js.map +1 -1
  29. package/decorators/repository.decorator.js +14 -11
  30. package/decorators/repository.decorator.js.map +1 -1
  31. package/decorators/search.decorator.js +8 -5
  32. package/decorators/search.decorator.js.map +1 -1
  33. package/decorators/sort.decorator.js +8 -5
  34. package/decorators/sort.decorator.js.map +1 -1
  35. package/dtos/bulk-delete.dto.js +15 -12
  36. package/dtos/bulk-delete.dto.js.map +1 -1
  37. package/dtos/bulk-update.dto.js +18 -15
  38. package/dtos/bulk-update.dto.js.map +1 -1
  39. package/dtos/ids.dto.js +15 -12
  40. package/dtos/ids.dto.js.map +1 -1
  41. package/dtos/index.js +5 -2
  42. package/dtos/index.js.map +1 -1
  43. package/enums/crud.enums.js +7 -4
  44. package/enums/crud.enums.js.map +1 -1
  45. package/enums/index.js +4 -1
  46. package/enums/index.js.map +1 -1
  47. package/enums/metadata-keys.enum.js +5 -2
  48. package/enums/metadata-keys.enum.js.map +1 -1
  49. package/exceptions/index.js +4 -1
  50. package/exceptions/index.js.map +1 -1
  51. package/exceptions/typeorm.exception.js +9 -4
  52. package/exceptions/typeorm.exception.js.map +1 -1
  53. package/index.js +19 -12
  54. package/index.js.map +1 -1
  55. package/interfaces/connection-options.interface.js +2 -1
  56. package/interfaces/crud-options.interfaces.js +2 -1
  57. package/interfaces/index.js +5 -2
  58. package/interfaces/index.js.map +1 -1
  59. package/package.json +7 -6
  60. package/readme-top.md +1 -5
  61. package/responses/crud.error.responses.js +31 -28
  62. package/responses/crud.error.responses.js.map +1 -1
  63. package/responses/crud.success.responses.js +24 -21
  64. package/responses/crud.success.responses.js.map +1 -1
  65. package/responses/index.js +5 -2
  66. package/responses/index.js.map +1 -1
  67. package/services/crud.service.js +43 -39
  68. package/services/crud.service.js.map +1 -1
  69. package/services/index.js +4 -1
  70. package/services/index.js.map +1 -1
  71. package/tokens.js +5 -2
  72. package/tokens.js.map +1 -1
  73. package/types/database.types.d.ts +1 -1
  74. package/types/database.types.js +2 -1
  75. package/types/decorator.types.js +2 -1
  76. package/types/decorator.types.js.map +1 -1
  77. package/types/entity-option-unique.js +2 -1
  78. package/types/error-handler.type.js +2 -1
  79. package/types/filter-options.type.js +2 -1
  80. package/types/find-conditions.type.js +2 -1
  81. package/types/index.js +11 -8
  82. package/types/index.js.map +1 -1
  83. package/types/repository-decorator.type.js +2 -1
  84. package/types/sort-options.type.js +2 -1
  85. package/utils/entity.utils.js +46 -42
  86. package/utils/entity.utils.js.map +1 -1
  87. package/utils/http.utils.js +11 -6
  88. package/utils/http.utils.js.map +1 -1
  89. package/utils/index.js +5 -2
  90. package/utils/index.js.map +1 -1
  91. package/utils/repository.utils.js +12 -7
  92. package/utils/repository.utils.js.map +1 -1
package/crud.module.js CHANGED
@@ -1,13 +1,16 @@
1
+ "use strict";
1
2
  // noinspection JSUnusedGlobalSymbols
2
3
  var HichchiCrudModule_1;
3
- import { __decorate } from "tslib";
4
- import { Module } from "@nestjs/common";
5
- import { TypeOrmModule } from "@nestjs/typeorm";
6
- import { CONNECTION_OPTIONS } from "./tokens";
7
- import { EntityUtils } from "./utils";
8
- import { BaseEntity, BaseEntityExtension, HichchiUserEntity } from "./base";
9
- import { hichchiMetadata, ImplementationException } from "@hichchi/nest-core";
10
- import { DEFAULT_MYSQL_PORT } from "@hichchi/nest-connector";
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.HichchiCrudModule = void 0;
6
+ const tslib_1 = require("tslib");
7
+ const common_1 = require("@nestjs/common");
8
+ const typeorm_1 = require("@nestjs/typeorm");
9
+ const tokens_1 = require("./tokens");
10
+ const utils_1 = require("./utils");
11
+ const base_1 = require("./base");
12
+ const nest_core_1 = require("@hichchi/nest-core");
13
+ const nest_connector_1 = require("@hichchi/nest-connector");
11
14
  /**
12
15
  * Module for integrating TypeORM with NestJS and providing CRUD functionality
13
16
  *
@@ -73,30 +76,30 @@ let HichchiCrudModule = HichchiCrudModule_1 = class HichchiCrudModule {
73
76
  return {
74
77
  module: HichchiCrudModule_1,
75
78
  imports: [
76
- TypeOrmModule.forRoot({
79
+ typeorm_1.TypeOrmModule.forRoot({
77
80
  type: options.type || "mysql",
78
81
  host: options.host || "localhost",
79
- port: options.port || DEFAULT_MYSQL_PORT,
82
+ port: options.port || nest_connector_1.DEFAULT_MYSQL_PORT,
80
83
  username: options.username || "root",
81
84
  password: options.password || "",
82
85
  database: options.database,
83
86
  entities: options.entities,
84
87
  migrations: options.migrations,
85
- charset: options.charset || "utf8mb4",
88
+ charset: options.type === "mysql" ? options.charset || "utf8mb4" : undefined,
86
89
  extra: {
87
90
  charset: options.charset || "utf8mb4",
88
91
  },
89
92
  synchronize: Boolean(options.synchronize),
90
- legacySpatialSupport: Boolean(options.legacySpatialSupport),
93
+ legacySpatialSupport: options.type === "mysql" ? Boolean(options.legacySpatialSupport) : undefined,
91
94
  autoLoadEntities: options.autoLoadEntities === undefined ? true : options.autoLoadEntities,
92
95
  }),
93
96
  ],
94
97
  providers: [
95
98
  {
96
- provide: CONNECTION_OPTIONS,
99
+ provide: tokens_1.CONNECTION_OPTIONS,
97
100
  useValue: options,
98
101
  },
99
- EntityUtils,
102
+ utils_1.EntityUtils,
100
103
  ],
101
104
  };
102
105
  }
@@ -128,8 +131,8 @@ let HichchiCrudModule = HichchiCrudModule_1 = class HichchiCrudModule {
128
131
  this.validateEntities(entities);
129
132
  return {
130
133
  module: HichchiCrudModule_1,
131
- imports: [TypeOrmModule.forFeature(entities)],
132
- exports: [TypeOrmModule],
134
+ imports: [typeorm_1.TypeOrmModule.forFeature(entities)],
135
+ exports: [typeorm_1.TypeOrmModule],
133
136
  };
134
137
  }
135
138
  /**
@@ -162,7 +165,7 @@ let HichchiCrudModule = HichchiCrudModule_1 = class HichchiCrudModule {
162
165
  option = "migrations";
163
166
  }
164
167
  if (option) {
165
- throw new ImplementationException("Missing connection option", `Connection option '${option}' cannot be empty in HichchiCrudModule.forRoot()'.`, `Please provide a valid value for the '${option}' connection option.`);
168
+ throw new nest_core_1.ImplementationException("Missing connection option", `Connection option '${option}' cannot be empty in HichchiCrudModule.forRoot()'.`, `Please provide a valid value for the '${option}' connection option.`);
166
169
  }
167
170
  return true;
168
171
  }
@@ -189,21 +192,21 @@ let HichchiCrudModule = HichchiCrudModule_1 = class HichchiCrudModule {
189
192
  */
190
193
  static validateEntities(entities) {
191
194
  for (const entity of entities) {
192
- if (!hichchiMetadata().isHichchiEntity(entity)) {
193
- throw new ImplementationException("Invalid entity", `'${entity.name}' must be decorated with '@HichchiEntity()'.`);
195
+ if (!(0, nest_core_1.hichchiMetadata)().isHichchiEntity(entity)) {
196
+ throw new nest_core_1.ImplementationException("Invalid entity", `'${entity.name}' must be decorated with '@HichchiEntity()'.`);
194
197
  }
195
- if (Object.getPrototypeOf(entity) !== BaseEntity &&
196
- Object.getPrototypeOf(entity) !== BaseEntityExtension &&
197
- Object.getPrototypeOf(entity) !== HichchiUserEntity) {
198
- throw new ImplementationException("Invalid entity", `'${entity.name}' must extend 'BaseEntity' or 'BaseEntityExtension' or 'HichchiUserEntity'.`);
198
+ if (Object.getPrototypeOf(entity) !== base_1.BaseEntity &&
199
+ Object.getPrototypeOf(entity) !== base_1.BaseEntityExtension &&
200
+ Object.getPrototypeOf(entity) !== base_1.HichchiUserEntity) {
201
+ throw new nest_core_1.ImplementationException("Invalid entity", `'${entity.name}' must extend 'BaseEntity' or 'BaseEntityExtension' or 'HichchiUserEntity'.`);
199
202
  }
200
203
  }
201
204
  }
202
205
  };
203
- HichchiCrudModule = HichchiCrudModule_1 = __decorate([
204
- Module({})
206
+ exports.HichchiCrudModule = HichchiCrudModule;
207
+ exports.HichchiCrudModule = HichchiCrudModule = HichchiCrudModule_1 = tslib_1.__decorate([
208
+ (0, common_1.Module)({})
205
209
  ], HichchiCrudModule);
206
- export { HichchiCrudModule };
207
210
  // TODO: need to update doc to say install `@nestjs/cache-manager, @keyv/redis, cacheable` to use cache
208
211
  // TODO: winston, @nestjs/axios, @nestjs/passport, passport-jwt, bcrypt, @nestjs/jwt, passport-local, passport-google-oauth2
209
212
  //# sourceMappingURL=crud.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crud.module.js","sourceRoot":"","sources":["../../../libs/nest-crud/src/crud.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.module.js","sourceRoot":"","sources":["../../../libs/nest-crud/src/crud.module.ts"],"names":[],"mappings":";AAAA,qCAAqC;;;;;AAErC,2CAAuD;AACvD,6CAAgD;AAEhD,qCAA8C;AAC9C,mCAAsC;AACtC,iCAA4E;AAC5E,kDAA8E;AAC9E,4DAA6D;AAE7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEI,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACI,MAAM,CAAC,OAAO,CAAC,OAA0B;QAC5C,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO;YACH,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE;gBACL,uBAAa,CAAC,OAAO,CAAC;oBAClB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO;oBAC7B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;oBACjC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,mCAAkB;oBACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;oBACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;oBAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;oBAC5E,KAAK,EAAE;wBACH,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;qBACxC;oBACD,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;oBACzC,oBAAoB,EAAE,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS;oBAClG,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB;iBAC7F,CAAC;aACL;YACD,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,2BAAkB;oBAC3B,QAAQ,EAAE,OAAO;iBACpB;gBACD,mBAAW;aACd;SACJ,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACI,MAAM,CAAC,UAAU,CAAC,QAA4D;QACjF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEhC,OAAO;YACH,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE,CAAC,uBAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC,uBAAa,CAAC;SAC3B,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACK,MAAM,CAAC,yBAAyB,CAAC,OAA0B;QAC/D,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,GAAG,UAAU,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,GAAG,UAAU,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,GAAG,YAAY,CAAC;QAC1B,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,mCAAuB,CAC7B,2BAA2B,EAC3B,sBAAsB,MAAM,oDAAoD,EAChF,yCAAyC,MAAM,sBAAsB,CACxE,CAAC;QACN,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAA4D;QAChF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAA,2BAAe,GAAE,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,mCAAuB,CAC7B,gBAAgB,EAChB,IAAI,MAAM,CAAC,IAAI,8CAA8C,CAChE,CAAC;YACN,CAAC;YAED,IACI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,iBAAU;gBAC5C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,0BAAmB;gBACrD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,wBAAiB,EACrD,CAAC;gBACC,MAAM,IAAI,mCAAuB,CAC7B,gBAAgB,EAChB,IAAI,MAAM,CAAC,IAAI,6EAA6E,CAC/F,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;CACJ,CAAA;AAhMY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CAgM7B;AAED,uGAAuG;AACvG,4HAA4H"}
@@ -1,9 +1,12 @@
1
+ "use strict";
1
2
  // noinspection JSUnusedGlobalSymbols
2
- import { Entity, getMetadataArgsStorage } from "typeorm";
3
- import { FK_CONSTRAINT_REGEX } from "../constants";
4
- import { BaseEntityExtension } from "../base";
5
- import { hichchiMetadata, ImplementationException } from "@hichchi/nest-core";
6
- import { MetadataKeys } from "../enums/metadata-keys.enum";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.HichchiEntityExtension = HichchiEntityExtension;
5
+ const typeorm_1 = require("typeorm");
6
+ const constants_1 = require("../constants");
7
+ const base_1 = require("../base");
8
+ const nest_core_1 = require("@hichchi/nest-core");
9
+ const metadata_keys_enum_1 = require("../enums/metadata-keys.enum");
7
10
  /**
8
11
  * Decorator for creating entity extensions with enhanced validation
9
12
  *
@@ -47,37 +50,37 @@ import { MetadataKeys } from "../enums/metadata-keys.enum";
47
50
  * @see {@link HichchiJoinColumn} The decorator required for entity relationships
48
51
  * @see {@link HichchiEntity} The decorator for standard entities with full audit tracking
49
52
  */
50
- export function HichchiEntityExtension(tableName) {
53
+ function HichchiEntityExtension(tableName) {
51
54
  return function (target) {
52
- if (!(target.prototype instanceof BaseEntityExtension)) {
53
- throw new ImplementationException(`Extension entities must extend BaseEntityExtension: '${target.name}'`, `@HichchiEntityExtension("${tableName}") was used on a class that does not extend BaseEntityExtension.`, "Add `extends BaseEntityExtension` to extension entities to ensure proper behavior.");
55
+ if (!(target.prototype instanceof base_1.BaseEntityExtension)) {
56
+ throw new nest_core_1.ImplementationException(`Extension entities must extend BaseEntityExtension: '${target.name}'`, `@HichchiEntityExtension("${tableName}") was used on a class that does not extend BaseEntityExtension.`, "Add `extends BaseEntityExtension` to extension entities to ensure proper behavior.");
54
57
  }
55
- Entity(tableName)(target);
56
- const metadataArgs = getMetadataArgsStorage();
58
+ (0, typeorm_1.Entity)(tableName)(target);
59
+ const metadataArgs = (0, typeorm_1.getMetadataArgsStorage)();
57
60
  // Validate OneToOne relation with an @HichchiEntity
58
61
  const oneToOneRelations = metadataArgs.relations.filter(relation => relation.target === target && relation.relationType === "one-to-one");
59
62
  if (oneToOneRelations.length === 0) {
60
- throw new ImplementationException("Missing @OneToOne relation", `No @OneToOne relation defined in @HichchiEntityExtension("${tableName}").`, "HichchiEntityExtension must have a OneToOne relation to an entity decorated with @HichchiEntity.");
63
+ throw new nest_core_1.ImplementationException("Missing @OneToOne relation", `No @OneToOne relation defined in @HichchiEntityExtension("${tableName}").`, "HichchiEntityExtension must have a OneToOne relation to an entity decorated with @HichchiEntity.");
61
64
  }
62
65
  oneToOneRelations.forEach(relation => {
63
66
  const joinColumns = metadataArgs.joinColumns.filter(joinColumn => joinColumn.target === target && joinColumn.propertyName === relation.propertyName);
64
67
  if (joinColumns.length === 0) {
65
- throw new ImplementationException("Missing @HichchiJoinColumn", `Missing @HichchiJoinColumn on OneToOne property '${relation.propertyName}' in @HichchiEntityExtension("${tableName}").`, "Please use @HichchiJoinColumn instead of @JoinColumn for consistent foreign key validation.");
68
+ throw new nest_core_1.ImplementationException("Missing @HichchiJoinColumn", `Missing @HichchiJoinColumn on OneToOne property '${relation.propertyName}' in @HichchiEntityExtension("${tableName}").`, "Please use @HichchiJoinColumn instead of @JoinColumn for consistent foreign key validation.");
66
69
  }
67
70
  // Validate HichchiJoinColumn usage
68
71
  joinColumns.forEach(joinColumn => {
69
- const isHichchiJoinColumn = Reflect.getMetadata(MetadataKeys.HICHCHI_FOREIGN_KEY, target.prototype, joinColumn.propertyName);
72
+ const isHichchiJoinColumn = Reflect.getMetadata(metadata_keys_enum_1.MetadataKeys.HICHCHI_FOREIGN_KEY, target.prototype, joinColumn.propertyName);
70
73
  if (!isHichchiJoinColumn) {
71
- throw new ImplementationException("Invalid JoinColumn", `@JoinColumn used instead of @HichchiJoinColumn on '${joinColumn.propertyName}' in @HichchiEntityExtension("${tableName}").`, "Use @HichchiJoinColumn to maintain naming and validation consistency.");
74
+ throw new nest_core_1.ImplementationException("Invalid JoinColumn", `@JoinColumn used instead of @HichchiJoinColumn on '${joinColumn.propertyName}' in @HichchiEntityExtension("${tableName}").`, "Use @HichchiJoinColumn to maintain naming and validation consistency.");
72
75
  }
73
76
  if (joinColumn.foreignKeyConstraintName &&
74
- !FK_CONSTRAINT_REGEX.test(joinColumn.foreignKeyConstraintName)) {
75
- throw new ImplementationException(`Invalid foreign key constraint: '${joinColumn.foreignKeyConstraintName}'`, "Foreign key name must follow 'FK_entity_entity' format.", "Ensure constraint names are valid according to the FK naming pattern.");
77
+ !constants_1.FK_CONSTRAINT_REGEX.test(joinColumn.foreignKeyConstraintName)) {
78
+ throw new nest_core_1.ImplementationException(`Invalid foreign key constraint: '${joinColumn.foreignKeyConstraintName}'`, "Foreign key name must follow 'FK_entity_entity' format.", "Ensure constraint names are valid according to the FK naming pattern.");
76
79
  }
77
80
  });
78
81
  });
79
82
  // Register in app metadata
80
- hichchiMetadata().addEntity(target, tableName, []);
83
+ (0, nest_core_1.hichchiMetadata)().addEntity(target, tableName, []);
81
84
  };
82
85
  }
83
86
  // TODO: v2.0 Improve this when have better usage
@@ -1 +1 @@
1
- {"version":3,"file":"entity-extension.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/entity-extension.decorator.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACpD,OAAO,UAAU,MAAiC;QAC9C,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,mBAAmB,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,uBAAuB,CAC7B,wDAAwD,MAAM,CAAC,IAAI,GAAG,EACtE,4BAA4B,SAAS,kEAAkE,EACvG,oFAAoF,CACvF,CAAC;QACN,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;QAE9C,oDAAoD;QACpD,MAAM,iBAAiB,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CACnD,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,CACnF,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,uBAAuB,CAC7B,4BAA4B,EAC5B,6DAA6D,SAAS,KAAK,EAC3E,kGAAkG,CACrG,CAAC;QACN,CAAC;QAED,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACjC,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,CAC/C,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,MAAM,IAAI,UAAU,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,CAClG,CAAC;YAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,uBAAuB,CAC7B,4BAA4B,EAC5B,oDAAoD,QAAQ,CAAC,YAAY,iCAAiC,SAAS,KAAK,EACxH,6FAA6F,CAChG,CAAC;YACN,CAAC;YAED,mCAAmC;YACnC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC7B,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAC3C,YAAY,CAAC,mBAAmB,EAChC,MAAM,CAAC,SAAiB,EACxB,UAAU,CAAC,YAAY,CACP,CAAC;gBAErB,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACvB,MAAM,IAAI,uBAAuB,CAC7B,oBAAoB,EACpB,sDAAsD,UAAU,CAAC,YAAY,iCAAiC,SAAS,KAAK,EAC5H,uEAAuE,CAC1E,CAAC;gBACN,CAAC;gBAED,IACI,UAAU,CAAC,wBAAwB;oBACnC,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAChE,CAAC;oBACC,MAAM,IAAI,uBAAuB,CAC7B,oCAAoC,UAAU,CAAC,wBAAwB,GAAG,EAC1E,yDAAyD,EACzD,uEAAuE,CAC1E,CAAC;gBACN,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC;AACN,CAAC;AAED,iDAAiD;AACjD,qFAAqF"}
1
+ {"version":3,"file":"entity-extension.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/entity-extension.decorator.ts"],"names":[],"mappings":";AAAA,qCAAqC;;AAqDrC,wDAuEC;AA1HD,qCAAyD;AAEzD,4CAAmD;AACnD,kCAA8C;AAC9C,kDAA8E;AAC9E,oEAA2D;AAG3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,SAAgB,sBAAsB,CAAC,SAAiB;IACpD,OAAO,UAAU,MAAiC;QAC9C,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,0BAAmB,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,mCAAuB,CAC7B,wDAAwD,MAAM,CAAC,IAAI,GAAG,EACtE,4BAA4B,SAAS,kEAAkE,EACvG,oFAAoF,CACvF,CAAC;QACN,CAAC;QAED,IAAA,gBAAM,EAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,IAAA,gCAAsB,GAAE,CAAC;QAE9C,oDAAoD;QACpD,MAAM,iBAAiB,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CACnD,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,CACnF,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,mCAAuB,CAC7B,4BAA4B,EAC5B,6DAA6D,SAAS,KAAK,EAC3E,kGAAkG,CACrG,CAAC;QACN,CAAC;QAED,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACjC,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,CAC/C,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,MAAM,IAAI,UAAU,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,CAClG,CAAC;YAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,mCAAuB,CAC7B,4BAA4B,EAC5B,oDAAoD,QAAQ,CAAC,YAAY,iCAAiC,SAAS,KAAK,EACxH,6FAA6F,CAChG,CAAC;YACN,CAAC;YAED,mCAAmC;YACnC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC7B,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAC3C,iCAAY,CAAC,mBAAmB,EAChC,MAAM,CAAC,SAAiB,EACxB,UAAU,CAAC,YAAY,CACP,CAAC;gBAErB,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACvB,MAAM,IAAI,mCAAuB,CAC7B,oBAAoB,EACpB,sDAAsD,UAAU,CAAC,YAAY,iCAAiC,SAAS,KAAK,EAC5H,uEAAuE,CAC1E,CAAC;gBACN,CAAC;gBAED,IACI,UAAU,CAAC,wBAAwB;oBACnC,CAAC,+BAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAChE,CAAC;oBACC,MAAM,IAAI,mCAAuB,CAC7B,oCAAoC,UAAU,CAAC,wBAAwB,GAAG,EAC1E,yDAAyD,EACzD,uEAAuE,CAC1E,CAAC;gBACN,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,IAAA,2BAAe,GAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC;AACN,CAAC;AAED,iDAAiD;AACjD,qFAAqF"}
@@ -1,11 +1,14 @@
1
+ "use strict";
1
2
  // noinspection JSUnusedGlobalSymbols
2
- import { Entity, getMetadataArgsStorage, Unique } from "typeorm";
3
- import { FK_CONSTRAINT_REGEX, UNIQUE_CONSTRAINT_REGEX } from "../constants";
4
- import { BaseEntityTemplateRelations, HichchiUserEntity } from "../base";
5
- import { hichchiMetadata, ImplementationException } from "@hichchi/nest-core";
6
- import { toCamelCase } from "@hichchi/utils";
7
- import { USER_ENTITY_TABLE_NAME } from "../tokens";
8
- import { MetadataKeys } from "../enums/metadata-keys.enum";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.HichchiEntity = HichchiEntity;
5
+ const typeorm_1 = require("typeorm");
6
+ const constants_1 = require("../constants");
7
+ const base_1 = require("../base");
8
+ const nest_core_1 = require("@hichchi/nest-core");
9
+ const utils_1 = require("@hichchi/utils");
10
+ const tokens_1 = require("../tokens");
11
+ const metadata_keys_enum_1 = require("../enums/metadata-keys.enum");
9
12
  /**
10
13
  * Decorator for creating a new entity with enhanced validation and metadata registration
11
14
  *
@@ -101,40 +104,40 @@ import { MetadataKeys } from "../enums/metadata-keys.enum";
101
104
  * @see {@link HichchiJoinColumn} The decorator required for entity relationships
102
105
  * @see {@link EntityOptionUnique} The type definition for unique constraint configuration
103
106
  */
104
- export function HichchiEntity(tableName, unique, skipFkValidation) {
107
+ function HichchiEntity(tableName, unique, skipFkValidation) {
105
108
  return function (target) {
106
109
  if (!target.name.endsWith("Entity")) {
107
- throw new ImplementationException(`Invalid entity class name: '${target.name}'`, `Invalid entity class name assigned the class decorated with @HichchiEntity("${tableName}").`, "Entity names must end with 'Entity'.");
110
+ throw new nest_core_1.ImplementationException(`Invalid entity class name: '${target.name}'`, `Invalid entity class name assigned the class decorated with @HichchiEntity("${tableName}").`, "Entity names must end with 'Entity'.");
108
111
  }
109
- if (Object.getPrototypeOf(target) === HichchiUserEntity && tableName !== USER_ENTITY_TABLE_NAME) {
110
- throw new ImplementationException(`Invalid table name: '${tableName}'`, `The table name assigned to the class decorated with @HichchiEntity("${tableName}") is invalid.`, `The table name for an entity that extends HichchiUserEntity must be '${USER_ENTITY_TABLE_NAME}'.\n` +
112
+ if (Object.getPrototypeOf(target) === base_1.HichchiUserEntity && tableName !== tokens_1.USER_ENTITY_TABLE_NAME) {
113
+ throw new nest_core_1.ImplementationException(`Invalid table name: '${tableName}'`, `The table name assigned to the class decorated with @HichchiEntity("${tableName}") is invalid.`, `The table name for an entity that extends HichchiUserEntity must be '${tokens_1.USER_ENTITY_TABLE_NAME}'.\n` +
111
114
  "You can import the correct table name from the constant 'USER_ENTITY_TABLE_NAME' in the '@hichchi/nest-crud' package.");
112
115
  }
113
- Entity(tableName)(target);
114
- const metadataArgs = getMetadataArgsStorage();
116
+ (0, typeorm_1.Entity)(tableName)(target);
117
+ const metadataArgs = (0, typeorm_1.getMetadataArgsStorage)();
115
118
  const entityRelations = metadataArgs.relations.filter(relation => relation.target === target);
116
119
  const tableUnique = [];
117
120
  if (unique) {
118
121
  if (Array.isArray(unique)) {
119
122
  unique.forEach(unique => {
120
123
  const uq = (Array.isArray(unique) ? unique : [unique]);
121
- const entityName = toCamelCase(toCamelCase(target.name.split("Entity")[0]));
122
- const fields = uq.map(field => toCamelCase(field)).join("And");
123
- Unique(`UNIQUE_${entityName}_${fields}`, uq)(target);
124
+ const entityName = (0, utils_1.toCamelCase)((0, utils_1.toCamelCase)(target.name.split("Entity")[0]));
125
+ const fields = uq.map(field => (0, utils_1.toCamelCase)(field)).join("And");
126
+ (0, typeorm_1.Unique)(`UNIQUE_${entityName}_${fields}`, uq)(target);
124
127
  tableUnique.push(...uq);
125
128
  });
126
129
  }
127
130
  else {
128
131
  Object.entries(unique).forEach(([constraintName, columns]) => {
129
- if (!constraintName.match(UNIQUE_CONSTRAINT_REGEX)) {
130
- throw new ImplementationException(`Invalid unique constraint: '${constraintName}'`, `Invalid unique constraint format provided to @HichchiEntity("${tableName}").`, "Unique constraints must follow the format 'UNIQUE_entityName_fieldName'.");
132
+ if (!constraintName.match(constants_1.UNIQUE_CONSTRAINT_REGEX)) {
133
+ throw new nest_core_1.ImplementationException(`Invalid unique constraint: '${constraintName}'`, `Invalid unique constraint format provided to @HichchiEntity("${tableName}").`, "Unique constraints must follow the format 'UNIQUE_entityName_fieldName'.");
131
134
  }
132
- Unique(constraintName, Array.isArray(columns) ? columns : [columns])(target);
135
+ (0, typeorm_1.Unique)(constraintName, Array.isArray(columns) ? columns : [columns])(target);
133
136
  tableUnique.push(...(Array.isArray(columns) ? columns : [columns]));
134
137
  });
135
138
  }
136
139
  }
137
- if (target !== HichchiUserEntity) {
140
+ if (target !== base_1.HichchiUserEntity) {
138
141
  const uniques = metadataArgs.uniques.find(unique => unique.target === target);
139
142
  if (Array.isArray(uniques?.columns)) {
140
143
  tableUnique.push(...uniques.columns);
@@ -143,7 +146,7 @@ export function HichchiEntity(tableName, unique, skipFkValidation) {
143
146
  const columns = uniques.columns();
144
147
  tableUnique.push(...(typeof columns === "object" ? Object.keys(columns) : []));
145
148
  }
146
- hichchiMetadata().addEntity(target, tableName, tableUnique);
149
+ (0, nest_core_1.hichchiMetadata)().addEntity(target, tableName, tableUnique);
147
150
  }
148
151
  if (!skipFkValidation) {
149
152
  entityRelations.forEach(() => {
@@ -152,21 +155,21 @@ export function HichchiEntity(tableName, unique, skipFkValidation) {
152
155
  relevantRelations.forEach((relation) => {
153
156
  const joinColumns = metadataArgs.joinColumns.filter(joinColumn => joinColumn.target === target && joinColumn.propertyName === relation.propertyName);
154
157
  // Validate ManyToOne and OneToOne relations for HichchiJoinColumn
155
- if (!BaseEntityTemplateRelations.includes(relation.propertyName) &&
158
+ if (!base_1.BaseEntityTemplateRelations.includes(relation.propertyName) &&
156
159
  (relation.relationType === "many-to-one" || relation.relationType === "one-to-one") &&
157
160
  joinColumns.length === 0) {
158
- throw new ImplementationException("Missing @HichchiJoinColumn", `Missing @HichchiJoinColumn on @${relation.relationType} relation '${relation.propertyName}' in @HichchiEntity("${tableName}").`, "Please use @HichchiJoinColumn to specify a foreign key constraint for this relation.");
161
+ throw new nest_core_1.ImplementationException("Missing @HichchiJoinColumn", `Missing @HichchiJoinColumn on @${relation.relationType} relation '${relation.propertyName}' in @HichchiEntity("${tableName}").`, "Please use @HichchiJoinColumn to specify a foreign key constraint for this relation.");
159
162
  }
160
163
  // Validate HichchiJoinColumn usage
161
164
  joinColumns.forEach(joinColumn => {
162
- const isHichchiJoinColumn = Reflect.getMetadata(MetadataKeys.HICHCHI_FOREIGN_KEY, target.prototype, joinColumn.propertyName);
165
+ const isHichchiJoinColumn = Reflect.getMetadata(metadata_keys_enum_1.MetadataKeys.HICHCHI_FOREIGN_KEY, target.prototype, joinColumn.propertyName);
163
166
  if (!isHichchiJoinColumn) {
164
- throw new ImplementationException("Missing @HichchiJoinColumn", `@JoinColumn detected on property '${joinColumn.propertyName}' in @HichchiEntity("${tableName}").`, "Please use @HichchiJoinColumn instead of @JoinColumn for consistent foreign key constraint validation.");
167
+ throw new nest_core_1.ImplementationException("Missing @HichchiJoinColumn", `@JoinColumn detected on property '${joinColumn.propertyName}' in @HichchiEntity("${tableName}").`, "Please use @HichchiJoinColumn instead of @JoinColumn for consistent foreign key constraint validation.");
165
168
  }
166
169
  // Validate foreignKeyConstraintName
167
170
  const foreignKeyConstraintName = joinColumn.foreignKeyConstraintName;
168
- if (foreignKeyConstraintName && !FK_CONSTRAINT_REGEX.test(foreignKeyConstraintName)) {
169
- throw new ImplementationException(`Invalid foreign key constraint: '${foreignKeyConstraintName}'`, "Invalid foreign key constraint format provided to @HichchiJoinColumn()" +
171
+ if (foreignKeyConstraintName && !constants_1.FK_CONSTRAINT_REGEX.test(foreignKeyConstraintName)) {
172
+ throw new nest_core_1.ImplementationException(`Invalid foreign key constraint: '${foreignKeyConstraintName}'`, "Invalid foreign key constraint format provided to @HichchiJoinColumn()" +
170
173
  ` on property '${joinColumn.propertyName}' in @HichchiEntity("${tableName}").`, "Foreign key constraints must follow the format 'FK_entityName_entityName'.");
171
174
  }
172
175
  });
@@ -1 +1 @@
1
- {"version":3,"file":"entity.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/entity.decorator.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAc,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGrF,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,MAAM,UAAU,aAAa,CACzB,SAAiB,EACjB,MAAmD,EACnD,gBAA0B;IAE1B,OAAO,UAAU,MAA4C;QACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,uBAAuB,CAC7B,+BAA+B,MAAM,CAAC,IAAI,GAAG,EAC7C,+EAA+E,SAAS,KAAK,EAC7F,sCAAsC,CACzC,CAAC;QACN,CAAC;QAED,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,iBAAiB,IAAI,SAAS,KAAK,sBAAsB,EAAE,CAAC;YAC9F,MAAM,IAAI,uBAAuB,CAC7B,wBAAwB,SAAS,GAAG,EACpC,uEAAuE,SAAS,gBAAgB,EAChG,wEAAwE,sBAAsB,MAAM;gBAChG,uHAAuH,CAC9H,CAAC;QACN,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;QAE1B,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC9F,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACpB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAa,CAAC;oBACnE,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5E,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC/D,MAAM,CAAC,UAAU,UAAU,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;oBACrD,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,EAAE;oBACzD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC;wBACjD,MAAM,IAAI,uBAAuB,CAC7B,+BAA+B,cAAc,GAAG,EAChD,gEAAgE,SAAS,KAAK,EAC9E,0EAA0E,CAC7E,CAAC;oBACN,CAAC;oBACD,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC7E,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YAE9E,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBAClC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,OAAO,OAAO,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;gBAChD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnF,CAAC;YAED,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE;gBACzB,MAAM,iBAAiB,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CACnD,QAAQ,CAAC,EAAE,CACP,QAAQ,CAAC,MAAM,KAAK,MAAM;oBAC1B,CAAC,QAAQ,CAAC,YAAY,KAAK,aAAa,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,CAC1F,CAAC;gBAEF,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAA8B,EAAE,EAAE;oBACzD,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,CAC/C,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,MAAM,IAAI,UAAU,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY,CAClG,CAAC;oBAEF,kEAAkE;oBAClE,IACI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAC5D,CAAC,QAAQ,CAAC,YAAY,KAAK,aAAa,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC;wBACnF,WAAW,CAAC,MAAM,KAAK,CAAC,EAC1B,CAAC;wBACC,MAAM,IAAI,uBAAuB,CAC7B,4BAA4B,EAC5B,kCAAkC,QAAQ,CAAC,YAAY,cAAc,QAAQ,CAAC,YAAY,wBAAwB,SAAS,KAAK,EAChI,sFAAsF,CACzF,CAAC;oBACN,CAAC;oBAED,mCAAmC;oBACnC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;wBAC7B,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAC3C,YAAY,CAAC,mBAAmB,EAChC,MAAM,CAAC,SAAiB,EACxB,UAAU,CAAC,YAAY,CACP,CAAC;wBAErB,IAAI,CAAC,mBAAmB,EAAE,CAAC;4BACvB,MAAM,IAAI,uBAAuB,CAC7B,4BAA4B,EAC5B,qCAAqC,UAAU,CAAC,YAAY,wBAAwB,SAAS,KAAK,EAClG,wGAAwG,CAC3G,CAAC;wBACN,CAAC;wBAED,oCAAoC;wBACpC,MAAM,wBAAwB,GAAG,UAAU,CAAC,wBAAwB,CAAC;wBACrE,IAAI,wBAAwB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC;4BAClF,MAAM,IAAI,uBAAuB,CAC7B,oCAAoC,wBAAwB,GAAG,EAC/D,wEAAwE;gCACpE,iBAAiB,UAAU,CAAC,YAAY,wBAAwB,SAAS,KAAK,EAClF,4EAA4E,CAC/E,CAAC;wBACN,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"entity.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/entity.decorator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
+ "use strict";
1
2
  // noinspection JSUnusedGlobalSymbols
2
- import { createParamDecorator } from "@nestjs/common";
3
- import { parseFilterObject } from "../utils";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Filters = Filters;
5
+ const common_1 = require("@nestjs/common");
6
+ const utils_1 = require("../utils");
4
7
  /**
5
8
  * Filter parameter decorator
6
9
  *
@@ -77,12 +80,12 @@ import { parseFilterObject } from "../utils";
77
80
  * @see {@link Sorter} Related decorator for extracting sort parameters
78
81
  * @see {@link Pager} Related decorator for extracting pagination parameters
79
82
  */
80
- export function Filters() {
81
- return createParamDecorator((_data, ctx) => {
83
+ function Filters() {
84
+ return (0, common_1.createParamDecorator)((_data, ctx) => {
82
85
  const req = ctx.switchToHttp().getRequest();
83
86
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
84
87
  const { page, limit, sort, searchValue, searchFields, ...filters } = req.query;
85
- return parseFilterObject(filters);
88
+ return (0, utils_1.parseFilterObject)(filters);
86
89
  })();
87
90
  }
88
91
  //# sourceMappingURL=filter.decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/filter.decorator.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,oBAAoB,EAAoB,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAI7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,MAAM,UAAU,OAAO;IACnB,OAAO,oBAAoB,CAAC,CAAC,KAAc,EAAE,GAAqB,EAAgC,EAAE;QAChG,MAAM,GAAG,GAAY,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACrD,6DAA6D;QAC7D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,KAA8B,CAAC;QACxG,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"filter.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/filter.decorator.ts"],"names":[],"mappings":";AAAA,qCAAqC;;AAoFrC,0BAOC;AAzFD,2CAAwE;AAExE,oCAA6C;AAI7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,SAAgB,OAAO;IACnB,OAAO,IAAA,6BAAoB,EAAC,CAAC,KAAc,EAAE,GAAqB,EAAgC,EAAE;QAChG,MAAM,GAAG,GAAY,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACrD,6DAA6D;QAC7D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,KAA8B,CAAC;QACxG,OAAO,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}
@@ -1,9 +1,12 @@
1
- export * from "./page.decorator";
2
- export * from "./sort.decorator";
3
- export * from "./entity.decorator";
4
- export * from "./filter.decorator";
5
- export * from "./search.decorator";
6
- export * from "./repository.decorator";
7
- export * from "./join-column.decorator";
8
- export * from "./entity-extension.decorator";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./page.decorator"), exports);
5
+ tslib_1.__exportStar(require("./sort.decorator"), exports);
6
+ tslib_1.__exportStar(require("./entity.decorator"), exports);
7
+ tslib_1.__exportStar(require("./filter.decorator"), exports);
8
+ tslib_1.__exportStar(require("./search.decorator"), exports);
9
+ tslib_1.__exportStar(require("./repository.decorator"), exports);
10
+ tslib_1.__exportStar(require("./join-column.decorator"), exports);
11
+ tslib_1.__exportStar(require("./entity-extension.decorator"), exports);
9
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,2DAAiC;AACjC,6DAAmC;AACnC,6DAAmC;AACnC,6DAAmC;AACnC,iEAAuC;AACvC,kEAAwC;AACxC,uEAA6C"}
@@ -1,7 +1,10 @@
1
+ "use strict";
1
2
  // noinspection JSUnusedGlobalSymbols
2
- import { JoinColumn } from "typeorm";
3
- import { toCamelCase } from "@hichchi/utils";
4
- import { MetadataKeys } from "../enums/metadata-keys.enum";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.HichchiJoinColumn = HichchiJoinColumn;
5
+ const typeorm_1 = require("typeorm");
6
+ const utils_1 = require("@hichchi/utils");
7
+ const metadata_keys_enum_1 = require("../enums/metadata-keys.enum");
5
8
  /**
6
9
  * Decorator for creating a join column with automatic foreign key constraint naming
7
10
  *
@@ -46,16 +49,16 @@ import { MetadataKeys } from "../enums/metadata-keys.enum";
46
49
  *
47
50
  * @see {@link JoinColumn} TypeORM's JoinColumn decorator that this extends
48
51
  */
49
- export function HichchiJoinColumn(options) {
52
+ function HichchiJoinColumn(options) {
50
53
  return function (target, propertyKey) {
51
54
  // Get the constructor of the actual class, which may be a derived class
52
- const entityName = toCamelCase(target.constructor.name.split("Entity")[0]);
53
- const foreignKeyConstraintName = `FK_${entityName}_${toCamelCase(String(propertyKey))}`;
54
- JoinColumn({
55
+ const entityName = (0, utils_1.toCamelCase)(target.constructor.name.split("Entity")[0]);
56
+ const foreignKeyConstraintName = `FK_${entityName}_${(0, utils_1.toCamelCase)(String(propertyKey))}`;
57
+ (0, typeorm_1.JoinColumn)({
55
58
  ...options,
56
59
  foreignKeyConstraintName,
57
60
  })(target, propertyKey);
58
- Reflect.defineMetadata(MetadataKeys.HICHCHI_FOREIGN_KEY, true, target, propertyKey);
61
+ Reflect.defineMetadata(metadata_keys_enum_1.MetadataKeys.HICHCHI_FOREIGN_KEY, true, target, propertyKey);
59
62
  };
60
63
  }
61
64
  //# sourceMappingURL=join-column.decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"join-column.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/join-column.decorator.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,UAAU,EAAqB,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA6D;IAC3F,OAAO,UAAU,MAAc,EAAE,WAA4B;QACzD,wEAAwE;QAExE,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,wBAAwB,GAAG,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAExF,UAAU,CAAC;YACP,GAAG,OAAO;YACV,wBAAwB;SAC3B,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACxB,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACxF,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"join-column.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/join-column.decorator.ts"],"names":[],"mappings":";AAAA,qCAAqC;;AAkDrC,8CAaC;AA7DD,qCAAwD;AACxD,0CAA6C;AAC7C,oEAA2D;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,SAAgB,iBAAiB,CAAC,OAA6D;IAC3F,OAAO,UAAU,MAAc,EAAE,WAA4B;QACzD,wEAAwE;QAExE,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,wBAAwB,GAAG,MAAM,UAAU,IAAI,IAAA,mBAAW,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAExF,IAAA,oBAAU,EAAC;YACP,GAAG,OAAO;YACV,wBAAwB;SAC3B,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACxB,OAAO,CAAC,cAAc,CAAC,iCAAY,CAAC,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACxF,CAAC,CAAC;AACN,CAAC"}
@@ -1,17 +1,20 @@
1
+ "use strict";
1
2
  // noinspection JSUnusedGlobalSymbols
2
- import { createParamDecorator } from "@nestjs/common";
3
- import { DEFAULT_ITEMS_PER_PAGE } from "@hichchi/nest-connector";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Pager = Pager;
5
+ const common_1 = require("@nestjs/common");
6
+ const nest_connector_1 = require("@hichchi/nest-connector");
4
7
  /**
5
8
  * Implementation overload for extracting pagination from request query params.
6
9
  */
7
- export function Pager(input, limit) {
8
- return createParamDecorator((_data, ctx) => {
10
+ function Pager(input, limit) {
11
+ return (0, common_1.createParamDecorator)((_data, ctx) => {
9
12
  const req = ctx.switchToHttp().getRequest();
10
13
  if (req.query?.page && req.query?.limit) {
11
14
  const p = Number(req.query.page || (typeof input === "number" ? input : input?.page));
12
15
  const l = Number(req.query.limit || (typeof input === "number" ? input : input?.limit) || limit);
13
16
  const page = p ? p : 1;
14
- const take = l ? l : DEFAULT_ITEMS_PER_PAGE;
17
+ const take = l ? l : nest_connector_1.DEFAULT_ITEMS_PER_PAGE;
15
18
  delete req.query.page;
16
19
  delete req.query.limit;
17
20
  return { page: p, limit: l, take, skip: (page - 1) * take };
@@ -1 +1 @@
1
- {"version":3,"file":"page.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/page.decorator.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,oBAAoB,EAAoB,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAoHjE;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,KAAkC,EAAE,KAAc;IACpE,OAAO,oBAAoB,CAAC,CAAC,KAAc,EAAE,GAAqB,EAA0B,EAAE;QAC1F,MAAM,GAAG,GAA0C,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAEnF,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACtF,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;YACjG,MAAM,IAAI,GAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;YACpD,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACtB,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;QAChE,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"page.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/page.decorator.ts"],"names":[],"mappings":";AAAA,qCAAqC;;AA2HrC,sBAgBC;AAzID,2CAAwE;AAExE,4DAAiE;AAoHjE;;GAEG;AACH,SAAgB,KAAK,CAAC,KAAkC,EAAE,KAAc;IACpE,OAAO,IAAA,6BAAoB,EAAC,CAAC,KAAc,EAAE,GAAqB,EAA0B,EAAE;QAC1F,MAAM,GAAG,GAA0C,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAEnF,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACtF,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;YACjG,MAAM,IAAI,GAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAsB,CAAC;YACpD,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACtB,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;QAChE,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}
@@ -1,9 +1,12 @@
1
+ "use strict";
1
2
  // noinspection JSUnusedGlobalSymbols
2
- import { InjectRepository } from "@nestjs/typeorm";
3
- import { ImplementationException } from "@hichchi/nest-core";
4
- import { BaseRepository } from "../base";
5
- import { Injectable } from "@nestjs/common";
6
- import { MetadataKeys } from "../enums/metadata-keys.enum";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.HichchiRepository = HichchiRepository;
5
+ const typeorm_1 = require("@nestjs/typeorm");
6
+ const nest_core_1 = require("@hichchi/nest-core");
7
+ const base_1 = require("../base");
8
+ const common_1 = require("@nestjs/common");
9
+ const metadata_keys_enum_1 = require("../enums/metadata-keys.enum");
7
10
  /**
8
11
  * Decorator for creating a repository with automatic dependency injection
9
12
  *
@@ -57,14 +60,14 @@ import { MetadataKeys } from "../enums/metadata-keys.enum";
57
60
  * @see {@link Injectable} NestJS decorator that marks a class as injectable
58
61
  * @see {@link InjectRepository} TypeORM decorator that injects a repository
59
62
  */
60
- export function HichchiRepository(entity) {
63
+ function HichchiRepository(entity) {
61
64
  return function (target) {
62
- if (Object.getPrototypeOf(target) !== BaseRepository) {
63
- throw new ImplementationException("Invalid repository", `'${target.name}' must extend BaseRepository`);
65
+ if (Object.getPrototypeOf(target) !== base_1.BaseRepository) {
66
+ throw new nest_core_1.ImplementationException("Invalid repository", `'${target.name}' must extend BaseRepository`);
64
67
  }
65
- Injectable()(target);
66
- Reflect.defineMetadata(MetadataKeys.HICHCHI_ENTITY, entity, target);
67
- InjectRepository(entity)(target, undefined, 0);
68
+ (0, common_1.Injectable)()(target);
69
+ Reflect.defineMetadata(metadata_keys_enum_1.MetadataKeys.HICHCHI_ENTITY, entity, target);
70
+ (0, typeorm_1.InjectRepository)(entity)(target, undefined, 0);
68
71
  };
69
72
  }
70
73
  //# sourceMappingURL=repository.decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/repository.decorator.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,MAAM,UAAU,iBAAiB,CAC7B,MAAc;IAEd,OAAO,UAA8E,MAAS;QAC1F,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,cAAc,EAAE,CAAC;YACnD,MAAM,IAAI,uBAAuB,CAAC,oBAAoB,EAAE,IAAI,MAAM,CAAC,IAAI,8BAA8B,CAAC,CAAC;QAC3G,CAAC;QAED,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACpE,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"repository.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/repository.decorator.ts"],"names":[],"mappings":";AAAA,qCAAqC;;AA8DrC,8CAYC;AAxED,6CAAmD;AACnD,kDAA6D;AAC7D,kCAA0E;AAC1E,2CAA4C;AAE5C,oEAA2D;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,SAAgB,iBAAiB,CAC7B,MAAc;IAEd,OAAO,UAA8E,MAAS;QAC1F,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,qBAAc,EAAE,CAAC;YACnD,MAAM,IAAI,mCAAuB,CAAC,oBAAoB,EAAE,IAAI,MAAM,CAAC,IAAI,8BAA8B,CAAC,CAAC;QAC3G,CAAC;QAED,IAAA,mBAAU,GAAE,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,CAAC,cAAc,CAAC,iCAAY,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACpE,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;AACN,CAAC"}
@@ -1,6 +1,9 @@
1
+ "use strict";
1
2
  // noinspection JSUnusedGlobalSymbols
2
- import { createParamDecorator } from "@nestjs/common";
3
- import { parseSearchString } from "../utils";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Search = Search;
5
+ const common_1 = require("@nestjs/common");
6
+ const utils_1 = require("../utils");
4
7
  /**
5
8
  * Search parameter decorator
6
9
  *
@@ -79,11 +82,11 @@ import { parseSearchString } from "../utils";
79
82
  * @see {@link parseSearchString} The utility function used to parse search parameters
80
83
  * @see {@link Filters} Related decorator for extracting filter parameters
81
84
  */
82
- export function Search() {
83
- return createParamDecorator((_data, ctx) => {
85
+ function Search() {
86
+ return (0, common_1.createParamDecorator)((_data, ctx) => {
84
87
  const req = ctx.switchToHttp().getRequest();
85
88
  const { searchValue, searchFields } = req.query;
86
- return typeof searchValue === "string" ? parseSearchString(searchValue, searchFields) : undefined;
89
+ return typeof searchValue === "string" ? (0, utils_1.parseSearchString)(searchValue, searchFields) : undefined;
87
90
  })();
88
91
  }
89
92
  //# sourceMappingURL=search.decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/search.decorator.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,oBAAoB,EAAoB,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,MAAM,UAAU,MAAM;IAClB,OAAO,oBAAoB,CAAC,CAAC,KAAc,EAAE,GAAqB,EAAgC,EAAE;QAChG,MAAM,GAAG,GAA+D,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACxG,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAChD,OAAO,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"search.decorator.js","sourceRoot":"","sources":["../../../../libs/nest-crud/src/decorators/search.decorator.ts"],"names":[],"mappings":";AAAA,qCAAqC;;AAoFrC,wBAMC;AAxFD,2CAAwE;AACxE,oCAA6C;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,SAAgB,MAAM;IAClB,OAAO,IAAA,6BAAoB,EAAC,CAAC,KAAc,EAAE,GAAqB,EAAgC,EAAE;QAChG,MAAM,GAAG,GAA+D,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACxG,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAChD,OAAO,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,yBAAiB,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}