@steroidsjs/nest 3.0.1 → 3.0.3

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 (109) hide show
  1. package/infrastructure/adapters/QueryAdapterTypeORM.js +26 -2
  2. package/infrastructure/adapters/QueryAdapterTypeORM.js.map +1 -1
  3. package/infrastructure/applications/base/config.js +1 -1
  4. package/infrastructure/applications/base/config.js.map +1 -1
  5. package/infrastructure/applications/console/ConsoleApplication.js +2 -2
  6. package/infrastructure/applications/console/ConsoleApplication.js.map +1 -1
  7. package/infrastructure/applications/console/config.js +3 -0
  8. package/infrastructure/applications/console/config.js.map +1 -1
  9. package/infrastructure/applications/rest/RestApplication.js +7 -0
  10. package/infrastructure/applications/rest/RestApplication.js.map +1 -1
  11. package/infrastructure/applications/rest/exceptions/RequestExecutionException.d.ts +6 -0
  12. package/infrastructure/applications/rest/exceptions/RequestExecutionException.js +6 -0
  13. package/infrastructure/applications/rest/exceptions/RequestExecutionException.js.map +1 -1
  14. package/infrastructure/commands/MigrateCommand.js +1 -0
  15. package/infrastructure/commands/MigrateCommand.js.map +1 -1
  16. package/infrastructure/commands/dbml/dbml2code.js +8 -0
  17. package/infrastructure/commands/dbml/dbml2code.js.map +1 -1
  18. package/infrastructure/commands/entity-generator/EntityCodeGenerateCommand.d.ts +4 -0
  19. package/infrastructure/commands/entity-generator/EntityCodeGenerateCommand.js +4 -0
  20. package/infrastructure/commands/entity-generator/EntityCodeGenerateCommand.js.map +1 -1
  21. package/infrastructure/commands/entity-generator/EntityCodeGenerator.js +1 -0
  22. package/infrastructure/commands/entity-generator/EntityCodeGenerator.js.map +1 -1
  23. package/infrastructure/commands/generate/CustomPostgresQueryRunner.d.ts +77 -0
  24. package/infrastructure/commands/generate/CustomPostgresQueryRunner.js +149 -0
  25. package/infrastructure/commands/generate/CustomPostgresQueryRunner.js.map +1 -1
  26. package/infrastructure/commands/generate/CustomRdbmsSchemaBuilder.js +7 -1
  27. package/infrastructure/commands/generate/CustomRdbmsSchemaBuilder.js.map +1 -1
  28. package/infrastructure/commands/generate/index.js +14 -0
  29. package/infrastructure/commands/generate/index.js.map +1 -1
  30. package/infrastructure/commands/importClassesFromDirectories.d.ts +3 -0
  31. package/infrastructure/commands/importClassesFromDirectories.js +3 -0
  32. package/infrastructure/commands/importClassesFromDirectories.js.map +1 -1
  33. package/infrastructure/decorators/Module.js +6 -0
  34. package/infrastructure/decorators/Module.js.map +1 -1
  35. package/infrastructure/decorators/TableFromModel.js +3 -0
  36. package/infrastructure/decorators/TableFromModel.js.map +1 -1
  37. package/infrastructure/decorators/fields/BaseField.js +5 -0
  38. package/infrastructure/decorators/fields/BaseField.js.map +1 -1
  39. package/infrastructure/decorators/fields/CreateTimeField.js +1 -0
  40. package/infrastructure/decorators/fields/CreateTimeField.js.map +1 -1
  41. package/infrastructure/decorators/fields/DateTimeField.js +5 -0
  42. package/infrastructure/decorators/fields/DateTimeField.js.map +1 -1
  43. package/infrastructure/decorators/fields/ExtendField.js +2 -0
  44. package/infrastructure/decorators/fields/ExtendField.js.map +1 -1
  45. package/infrastructure/decorators/fields/RelationField.js +3 -0
  46. package/infrastructure/decorators/fields/RelationField.js.map +1 -1
  47. package/infrastructure/decorators/fields/RelationIdField.js +2 -0
  48. package/infrastructure/decorators/fields/RelationIdField.js.map +1 -1
  49. package/infrastructure/decorators/fields/UidField.js +1 -0
  50. package/infrastructure/decorators/fields/UidField.js.map +1 -1
  51. package/infrastructure/decorators/fields/UpdateTimeField.js +1 -0
  52. package/infrastructure/decorators/fields/UpdateTimeField.js.map +1 -1
  53. package/infrastructure/filters/ValidationExceptionFilter.js +1 -0
  54. package/infrastructure/filters/ValidationExceptionFilter.js.map +1 -1
  55. package/infrastructure/helpers/ModuleHelper.d.ts +1 -0
  56. package/infrastructure/helpers/ModuleHelper.js +1 -0
  57. package/infrastructure/helpers/ModuleHelper.js.map +1 -1
  58. package/infrastructure/helpers/typeORM/ConditionHelperTypeORM.js +21 -18
  59. package/infrastructure/helpers/typeORM/ConditionHelperTypeORM.js.map +1 -1
  60. package/infrastructure/helpers/typeORM/SearchHelperTypeORM.js +6 -0
  61. package/infrastructure/helpers/typeORM/SearchHelperTypeORM.js.map +1 -1
  62. package/infrastructure/pipes/CreateDtoPipe.js +1 -0
  63. package/infrastructure/pipes/CreateDtoPipe.js.map +1 -1
  64. package/infrastructure/repositories/CrudRepository.d.ts +93 -5
  65. package/infrastructure/repositories/CrudRepository.js +91 -7
  66. package/infrastructure/repositories/CrudRepository.js.map +1 -1
  67. package/infrastructure/tests/ModelTest.test.js +23 -0
  68. package/infrastructure/tests/ModelTest.test.js.map +1 -1
  69. package/infrastructure/tests/app/services/ArticleService.d.ts +4 -1
  70. package/infrastructure/tests/app/services/ArticleService.js +3 -1
  71. package/infrastructure/tests/app/services/ArticleService.js.map +1 -1
  72. package/infrastructure/tests/app/services/CommentService.d.ts +4 -1
  73. package/infrastructure/tests/app/services/CommentService.js +3 -1
  74. package/infrastructure/tests/app/services/CommentService.js.map +1 -1
  75. package/infrastructure/tests/app/services/FileService.d.ts +4 -1
  76. package/infrastructure/tests/app/services/FileService.js +3 -1
  77. package/infrastructure/tests/app/services/FileService.js.map +1 -1
  78. package/infrastructure/tests/app/services/ImageService.d.ts +4 -1
  79. package/infrastructure/tests/app/services/ImageService.js +3 -1
  80. package/infrastructure/tests/app/services/ImageService.js.map +1 -1
  81. package/infrastructure/tests/app/services/TagService.d.ts +4 -1
  82. package/infrastructure/tests/app/services/TagService.js +3 -1
  83. package/infrastructure/tests/app/services/TagService.js.map +1 -1
  84. package/infrastructure/tests/app/services/UserService.d.ts +4 -1
  85. package/infrastructure/tests/app/services/UserService.js +3 -1
  86. package/infrastructure/tests/app/services/UserService.js.map +1 -1
  87. package/infrastructure/tests/bootstrap.js +1 -1
  88. package/infrastructure/tests/bootstrap.js.map +1 -1
  89. package/package.json +1 -1
  90. package/tsconfig.tsbuildinfo +1 -1
  91. package/usecases/base/SearchQuery.d.ts +12 -0
  92. package/usecases/base/SearchQuery.js +18 -0
  93. package/usecases/base/SearchQuery.js.map +1 -1
  94. package/usecases/helpers/DataMapper.js +6 -0
  95. package/usecases/helpers/DataMapper.js.map +1 -1
  96. package/usecases/helpers/ValidationHelper.d.ts +27 -0
  97. package/usecases/helpers/ValidationHelper.js +33 -0
  98. package/usecases/helpers/ValidationHelper.js.map +1 -1
  99. package/usecases/interfaces/ICrudRepository.d.ts +4 -3
  100. package/usecases/interfaces/IManualSchema.d.ts +4 -0
  101. package/usecases/interfaces/ISaveManager.d.ts +2 -2
  102. package/usecases/services/CrudService.d.ts +40 -2
  103. package/usecases/services/CrudService.js +93 -4
  104. package/usecases/services/CrudService.js.map +1 -1
  105. package/usecases/services/ReadService.d.ts +31 -0
  106. package/usecases/services/ReadService.js +32 -0
  107. package/usecases/services/ReadService.js.map +1 -1
  108. package/usecases/validators/Validator.js +1 -0
  109. package/usecases/validators/Validator.js.map +1 -1
@@ -30,6 +30,14 @@ export default class SearchQuery<TModel> {
30
30
  protected _onGetMany: ISearchQueryConfig<TModel>['onGetMany'];
31
31
  constructor(config?: ISearchQueryConfig<TModel>);
32
32
  static createFromSchema<TModel>(SchemaClass: any, config?: ISearchQueryConfig<TModel>): SearchQuery<TModel>;
33
+ /**
34
+ * Short aliases primary usage is to avoid DB's alias length restriction. It's disabled by default.
35
+ *
36
+ * @param {string} relationPath
37
+ * @example model.firstRelation.secondRelation
38
+ *
39
+ * @param {boolean} isShort
40
+ */
33
41
  static getRelationAlias(relationPath: string, isShort?: boolean): string;
34
42
  select(value: string | string[]): this;
35
43
  addSelect(value: string | string[]): this;
@@ -38,6 +46,10 @@ export default class SearchQuery<TModel> {
38
46
  getExcludeSelect(): string[];
39
47
  alias(value: string): this;
40
48
  getAlias(): string;
49
+ /**
50
+ * Short name for getRelationAlias
51
+ * @param {string} relationPath
52
+ */
41
53
  a(relationPath: any): string;
42
54
  getRelationAlias(relationPath: any): string;
43
55
  getShortAliasesAreUsed(): boolean;
@@ -23,13 +23,24 @@ class SearchQuery {
23
23
  } })), {});
24
24
  return searchQuery;
25
25
  }
26
+ /**
27
+ * Short aliases primary usage is to avoid DB's alias length restriction. It's disabled by default.
28
+ *
29
+ * @param {string} relationPath
30
+ * @example model.firstRelation.secondRelation
31
+ *
32
+ * @param {boolean} isShort
33
+ */
26
34
  static getRelationAlias(relationPath, isShort = false) {
27
35
  const relationsArray = relationPath.split('.');
28
36
  if (!isShort) {
29
37
  return relationsArray.join('_');
30
38
  }
31
39
  else {
40
+ // first letter + the uppercase letters + relation index in path + relation length
41
+ // model.firstRelation.secondRelation -> m0_fr113_sr214
32
42
  return relationsArray.map((relation, index) => {
43
+ // root alias shouldn't change
33
44
  if (index === 0) {
34
45
  return relation;
35
46
  }
@@ -71,6 +82,10 @@ class SearchQuery {
71
82
  getAlias() {
72
83
  return this._alias;
73
84
  }
85
+ /**
86
+ * Short name for getRelationAlias
87
+ * @param {string} relationPath
88
+ */
74
89
  a(relationPath) {
75
90
  return this.getRelationAlias(relationPath);
76
91
  }
@@ -92,6 +107,7 @@ class SearchQuery {
92
107
  }
93
108
  }
94
109
  const relations = useJoin ? this._relationsJoin : this._relationsNoJoin;
110
+ // Normalize format (one relation, many relations, relations + select)
95
111
  let relationObj = {};
96
112
  if (typeof relation === 'string') {
97
113
  relationObj = { [relation]: '*' };
@@ -109,6 +125,8 @@ class SearchQuery {
109
125
  } })), {});
110
126
  }
111
127
  Object.keys(relationObj).forEach(path => {
128
+ // Store intermediate relations
129
+ // Normalize relations: a.b.c -> a, a.b, a.b.c
112
130
  let currentPath;
113
131
  path.split('.').forEach(name => {
114
132
  currentPath = [currentPath, name].filter(Boolean).join('.');
@@ -1 +1 @@
1
- {"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../../src/usecases/base/SearchQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../../src/usecases/base/SearchQuery.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ const Transform_1 = require("../../infrastructure/decorators/Transform");
9
9
  const TableFromModel_1 = require("../../infrastructure/decorators/TableFromModel");
10
10
  class DataMapper {
11
11
  static create(MetaClass, values, transformType = Transform_1.TRANSFORM_TYPE_DEFAULT, skipBuilder = false) {
12
+ // Check empty
12
13
  if (values === null) {
13
14
  return null;
14
15
  }
@@ -20,6 +21,11 @@ class DataMapper {
20
21
  return builder(values);
21
22
  }
22
23
  const result = new MetaClass();
24
+ /**
25
+ * Is schema implements [[IManualSchema]]?
26
+ * @see IManualSchema
27
+ */
28
+ // TODO May be @BeforeCreate() decorator?
23
29
  if (result['updateFromModel'] && typeof result['updateFromModel'] === 'function' && values) {
24
30
  result['updateFromModel'](values);
25
31
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"DataMapper.js","sourceRoot":"","sources":["../../../src/usecases/helpers/DataMapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataMapper.js","sourceRoot":"","sources":["../../../src/usecases/helpers/DataMapper.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,37 @@
1
1
  import { ValidationError, ValidatorOptions } from 'class-validator';
2
2
  import { IValidator, IValidatorParams } from '../interfaces/IValidator';
3
3
  import { IErrorsCompositeObject } from '../interfaces/IErrorsCompositeObject';
4
+ /**
5
+ * @deprecated Use ValidationHelper.validate()
6
+ * @throws {ValidationException}
7
+ */
4
8
  export declare function validateOrReject(dto: any, validatorOptions?: ValidatorOptions): Promise<void>;
9
+ /**
10
+ * Класс для запуска валидации DTO и моделей.
11
+ * Чтобы сделать кастомную валидацию по классам, необходимо:
12
+ * 1. Создать класс валидатора с интерфейсом IValidator
13
+ * 2. Добавить его в providers модуля
14
+ * 3. В сервис, который будет валидировать DTO, объявить в конструкторе
15
+ * `public validators: IValidator[]`
16
+ * 4. В модуле пробросить экземпляр валидатора в сервис в массив validators.
17
+ */
5
18
  export declare class ValidationHelper {
19
+ /**
20
+ * validate object and throw error
21
+ * @throws {ValidationException}
22
+ */
6
23
  static validate(dto: any, params?: IValidatorParams, allValidators?: IValidator[]): Promise<void>;
24
+ /**
25
+ * Validate by class-validator library (without custom class validators)
26
+ * @param dto
27
+ */
7
28
  static getClassValidatorErrors(dto: any): Promise<IErrorsCompositeObject | null>;
29
+ /**
30
+ * Validate by custom class validators
31
+ * @param dto
32
+ * @param params
33
+ * @param validatorsInstances
34
+ */
8
35
  static getSteroidsErrors(dto: any, params?: IValidatorParams, validatorsInstances?: IValidator[]): Promise<IErrorsCompositeObject | null>;
9
36
  protected static getSteroidsFieldValidatorsErrors(dto: any, key: string, params: IValidatorParams, validatorsInstances: IValidator[]): Promise<string[]>;
10
37
  static parseClassValidatorErrors(errors: ValidationError[]): IErrorsCompositeObject;
@@ -11,6 +11,10 @@ const defaultValidatorOptions = {
11
11
  whitelist: false,
12
12
  forbidUnknownValues: false,
13
13
  };
14
+ /**
15
+ * @deprecated Use ValidationHelper.validate()
16
+ * @throws {ValidationException}
17
+ */
14
18
  async function validateOrReject(dto, validatorOptions) {
15
19
  const classValidatorErrors = await (0, class_validator_1.validate)(dto, Object.assign(Object.assign({}, defaultValidatorOptions), validatorOptions));
16
20
  if (classValidatorErrors.length) {
@@ -19,7 +23,20 @@ async function validateOrReject(dto, validatorOptions) {
19
23
  }
20
24
  }
21
25
  exports.validateOrReject = validateOrReject;
26
+ /**
27
+ * Класс для запуска валидации DTO и моделей.
28
+ * Чтобы сделать кастомную валидацию по классам, необходимо:
29
+ * 1. Создать класс валидатора с интерфейсом IValidator
30
+ * 2. Добавить его в providers модуля
31
+ * 3. В сервис, который будет валидировать DTO, объявить в конструкторе
32
+ * `public validators: IValidator[]`
33
+ * 4. В модуле пробросить экземпляр валидатора в сервис в массив validators.
34
+ */
22
35
  class ValidationHelper {
36
+ /**
37
+ * validate object and throw error
38
+ * @throws {ValidationException}
39
+ */
23
40
  static async validate(dto, params = null, allValidators = null) {
24
41
  var _a;
25
42
  const classValidatorErrors = await this.getClassValidatorErrors(dto);
@@ -33,6 +50,10 @@ class ValidationHelper {
33
50
  throw new exceptions_1.ValidationException(errors);
34
51
  }
35
52
  }
53
+ /**
54
+ * Validate by class-validator library (without custom class validators)
55
+ * @param dto
56
+ */
36
57
  static async getClassValidatorErrors(dto) {
37
58
  const errors = await (0, class_validator_1.validate)(dto, defaultValidatorOptions);
38
59
  if (errors.length) {
@@ -40,6 +61,12 @@ class ValidationHelper {
40
61
  }
41
62
  return null;
42
63
  }
64
+ /**
65
+ * Validate by custom class validators
66
+ * @param dto
67
+ * @param params
68
+ * @param validatorsInstances
69
+ */
43
70
  static async getSteroidsErrors(dto, params = null, validatorsInstances = null) {
44
71
  var _a, _b;
45
72
  if (!dto) {
@@ -62,6 +89,7 @@ class ValidationHelper {
62
89
  }
63
90
  }
64
91
  else if (value && (0, lodash_1.isObject)(value)) {
92
+ // Nested validation for object
65
93
  keyErrors = await this.getSteroidsErrors(value, nextParams, validatorsInstances);
66
94
  }
67
95
  if (keyErrors) {
@@ -73,6 +101,7 @@ class ValidationHelper {
73
101
  errors[key] = fieldValidatorsErrors;
74
102
  }
75
103
  }
104
+ // Has errors?
76
105
  if (Object.keys(errors).length > 0) {
77
106
  return errors;
78
107
  }
@@ -80,9 +109,11 @@ class ValidationHelper {
80
109
  }
81
110
  static async getSteroidsFieldValidatorsErrors(dto, key, params, validatorsInstances) {
82
111
  let fieldValidatorErrors = [];
112
+ // Get field validators
83
113
  const fieldValidators = (0, Validator_1.getFieldValidators)(dto.constructor, key);
84
114
  for (const fieldValidator of fieldValidators) {
85
115
  try {
116
+ // Find validator instance
86
117
  const validator = (validatorsInstances || []).find(item => {
87
118
  try {
88
119
  return item instanceof fieldValidator;
@@ -99,9 +130,11 @@ class ValidationHelper {
99
130
  throw new Error(`Not found validator instance for "${dto.constructor.name}.${key}"`
100
131
  + ' Please add it to CrudService.validators array.');
101
132
  }
133
+ // Run validator
102
134
  await validator.validate(dto, Object.assign(Object.assign({}, params), { name: key }));
103
135
  }
104
136
  catch (e) {
137
+ // Check validator is throw specific exception
105
138
  if (e instanceof FieldValidatorException_1.FieldValidatorException) {
106
139
  fieldValidatorErrors.push(e.message);
107
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationHelper.js","sourceRoot":"","sources":["../../../src/usecases/helpers/ValidationHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValidationHelper.js","sourceRoot":"","sources":["../../../src/usecases/helpers/ValidationHelper.ts"],"names":[],"mappings":";;;AAAA,mCAAsE;AACtE,qDAA4E;AAC5E,8CAAkD;AAElD,mFAA8E;AAC9E,gFAA4F;AAC5F,uDAA2D;AAG3D,MAAM,uBAAuB,GAAqB;IAC9C,SAAS,EAAE,KAAK;IAChB,mBAAmB,EAAE,KAAK;CAC7B,CAAC;AAEF;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CAAC,GAAQ,EAAE,gBAAmC;IAChF,MAAM,oBAAoB,GAAG,MAAM,IAAA,0BAAQ,EACvC,GAAG,kCACC,uBAAuB,GAAK,gBAAgB,EACnD,CAAC;IACF,IAAI,oBAAoB,CAAC,MAAM,EAAE;QAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,CAAC;QAChF,MAAM,IAAI,gCAAmB,CAAC,MAAM,CAAC,CAAC;KACzC;AACL,CAAC;AATD,4CASC;AAED;;;;;;;;GAQG;AACH,MAAa,gBAAgB;IACzB;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAQ,EAAE,SAA2B,IAAI,EAAE,gBAA8B,IAAI;;QAC/F,MAAM,oBAAoB,GAAI,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAG,IAAA,kBAAU,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,CAAC,QAAgC,EAAE,QAAgC,EAAE,EAAE;YACnE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aACpC;QACL,CAAC,CACJ,CAAC;QAEF,IAAI,MAAM,IAAI,CAAA,MAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,0CAAE,MAAM,IAAG,CAAC,EAAE;YAC3C,MAAM,IAAI,gCAAmB,CAAC,MAAM,CAAC,CAAC;SACzC;IACL,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAQ;QAChD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;SACjD;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACjC,GAAQ,EACR,SAA2B,IAAI,EAC/B,sBAAoC,IAAI;;QAExC,IAAI,CAAC,GAAG,EAAE;YACN,OAAO;SACV;QAED,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,MAAM,IAAI,GAAG,IAAA,uBAAW,EAAC,GAAG,CAAC,WAAW,CAAC;YACrC,CAAC,CAAC,IAAA,yBAAa,EAAC,GAAG,CAAC,WAAW,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACpB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,UAAU,mCACT,MAAM,KACT,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,0CAAG,GAAG,CAAC,KAAI,IAAI,EAC3C,SAAS,EAAE,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,0CAAG,GAAG,CAAC,KAAI,IAAI,GAC9C,CAAC;YAEF,IAAI,SAAS,GAAsC,IAAI,CAAC;YAExD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,KAAK,MAAM,cAAc,IAAI,KAAK,EAAE;oBAChC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;oBAE7G,IAAI,eAAe,EAAE;wBACjB,SAAS,mCACF,CAAC,SAAS,IAAI,EAAE,CAAC,KACpB,CAAC,cAAc,CAAC,EAAE,eAAe,GACpC,CAAC;qBACL;iBACJ;aACJ;iBAAM,IAAI,KAAK,IAAI,IAAA,iBAAS,EAAC,KAAK,CAAC,EAAE;gBAClC,+BAA+B;gBAC/B,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAA;aACnF;YAED,IAAI,SAAS,EAAE;gBACX,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;gBACxB,SAAS;aACZ;YAED,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;YACjH,IAAI,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,MAAM,IAAG,CAAC,EAAE;gBACnC,MAAM,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC;aACvC;SACJ;QAGD,cAAc;QACd,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,OAAO,MAAM,CAAC;SACjB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAC/C,GAAQ,EACR,GAAW,EACX,MAAwB,EACxB,mBAAiC;QAErC,IAAI,oBAAoB,GAAa,EAAE,CAAC;QACxC,uBAAuB;QACvB,MAAM,eAAe,GAAG,IAAA,8BAAkB,EAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACjE,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;YAC1C,IAAI;gBACA,0BAA0B;gBAC1B,MAAM,SAAS,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACtD,IAAI;wBACA,OAAO,IAAI,YAAY,cAAc,CAAC;qBACzC;oBAAC,OAAO,CAAC,EAAE;wBACR,OAAO,KAAK,CAAC;qBAChB;gBACL,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE;oBACpD,MAAM,cAAc,CAAC,GAAG,kCACjB,MAAM,KACT,IAAI,EAAE,GAAG,IACX,CAAC;oBACH,SAAS;iBACZ;gBAED,IAAI,CAAC,SAAS,EAAE;oBACZ,MAAM,IAAI,KAAK,CACX,qCAAqC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,GAAG,GAAG;0BACjE,iDAAiD,CACtD,CAAC;iBACL;gBAED,gBAAgB;gBAChB,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,kCACrB,MAAM,KACT,IAAI,EAAE,GAAG,IACX,CAAC;aACN;YAAC,OAAO,CAAC,EAAE;gBACR,8CAA8C;gBAC9C,IAAI,CAAC,YAAY,iDAAuB,EAAE;oBACtC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACxC;qBAAM;oBACH,MAAM,CAAC,CAAC;iBACX;aACJ;SACJ;QAED,OAAO,oBAAoB,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,MAAyB;;QAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACxB,OAAO,MAAM,CAAC;SACjB;QAED,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YACxB,IAAI,KAAK,CAAC,WAAW,EAAE;gBACnB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;aACxE;YACD,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,EAAE;gBAC5B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC3E;SACJ;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA9KD,4CA8KC"}
@@ -2,14 +2,15 @@ import { SearchResultDto } from '../dtos/SearchResultDto';
2
2
  import { SearchInputDto } from '../dtos/SearchInputDto';
3
3
  import SearchQuery, { ISearchQueryConfig } from '../base/SearchQuery';
4
4
  import { ICondition } from '../../infrastructure/helpers/typeORM/ConditionHelperTypeORM';
5
+ export type TransactionHandler<TModel> = (callback: () => Promise<TModel>) => Promise<TModel>;
5
6
  export interface ICrudRepository<TModel> {
6
7
  search: <TItem>(dto: SearchInputDto, searchQuery: SearchQuery<TModel>) => Promise<SearchResultDto<TModel | TItem>>;
7
8
  findOne: (conditionOrQuery: ICondition | SearchQuery<TModel>, eagerLoading?: boolean) => Promise<TModel | null>;
8
9
  findMany: (conditionOrQuery: ICondition | SearchQuery<TModel>, eagerLoading?: boolean) => Promise<TModel[]>;
9
- create: (model: TModel, transactionHandler?: (callback: any) => Promise<void>) => Promise<TModel>;
10
+ create: (model: TModel, transactionHandler?: TransactionHandler<TModel>) => Promise<TModel>;
10
11
  createQuery: (config?: ISearchQueryConfig<TModel>) => SearchQuery<TModel>;
11
12
  remove: (id: number, transactionHandler?: (callback: any) => Promise<void>) => Promise<void>;
12
- save: (model: TModel, transactionHandler?: (callback: any) => Promise<void>) => Promise<TModel>;
13
+ save: (model: TModel, transactionHandler?: TransactionHandler<TModel>) => Promise<TModel>;
13
14
  softRemove: (id: number, transactionHandler?: (callback: () => Promise<void>) => Promise<void>) => Promise<void>;
14
- update: (id: number, model: TModel, transactionHandler?: (callback: any) => Promise<void>) => Promise<TModel>;
15
+ update: (id: number, model: TModel, transactionHandler?: TransactionHandler<TModel>) => Promise<TModel>;
15
16
  }
@@ -1,3 +1,7 @@
1
1
  export default interface IManualSchema<TModel> {
2
+ /**
3
+ * Manually set schema fields based on the passed model
4
+ * @param model
5
+ */
2
6
  updateFromModel(model: TModel): any;
3
7
  }
@@ -1,3 +1,3 @@
1
- export interface ISaveManager {
2
- save: (model: any) => Promise<any>;
1
+ export interface ISaveManager<TModel> {
2
+ save: (model: any) => Promise<TModel>;
3
3
  }
@@ -3,18 +3,56 @@ import { ISearchInputDto } from '../dtos/SearchInputDto';
3
3
  import { ContextDto } from '../dtos/ContextDto';
4
4
  import { ReadService } from './ReadService';
5
5
  import { IType } from '../interfaces/IType';
6
- export declare class CrudService<TModel, TSearchDto = ISearchInputDto, TSaveDto = TModel> extends ReadService<TModel, TSearchDto> {
6
+ /**
7
+ * Generic CRUD service
8
+ */
9
+ export declare class CrudService<TModel, TSearchDto = ISearchInputDto,
10
+ /** @deprecated */
11
+ TSaveDto = TModel> extends ReadService<TModel, TSearchDto> {
7
12
  create(dto: DeepPartial<TModel>, context?: ContextDto | null): Promise<TModel>;
8
13
  create<TSchema>(dto: DeepPartial<TModel>, context?: ContextDto | null, schemaClass?: IType<TSchema>): Promise<TSchema>;
9
14
  update<TSchema>(id: number | string, dto: DeepPartial<TModel>, context?: ContextDto | null): Promise<TModel>;
10
15
  update<TSchema>(id: number | string, dto: DeepPartial<TModel>, context?: ContextDto | null, schemaClass?: IType<TSchema>): Promise<TSchema>;
11
16
  save<TSchema>(id: number | string, dto: DeepPartial<TModel>, context?: ContextDto | null): Promise<TModel>;
12
17
  save<TSchema>(id: number | string, dto: DeepPartial<TModel>, context?: ContextDto | null, schemaClass?: IType<TSchema>): Promise<TSchema>;
13
- saveInternal(prevModel: TModel | null, nextModel: TModel, diffModel: TModel, context?: ContextDto): Promise<void>;
18
+ /**
19
+ * Internal save method for overwrite in project
20
+ * @param prevModel
21
+ * @param nextModel
22
+ * @param diffModel
23
+ * @param context
24
+ */
25
+ saveInternal(prevModel: TModel | null, nextModel: TModel, diffModel: TModel, context?: ContextDto): Promise<TModel>;
14
26
  checkHasRelatedModels(id: string | number, service: CrudService<any>): Promise<void>;
27
+ /**
28
+ * Remove model
29
+ * @param rawId
30
+ * @param context
31
+ */
15
32
  remove(rawId: number | string, context?: ContextDto): Promise<void>;
33
+ /**
34
+ * Internal remove method for overwrite in project
35
+ * @param id
36
+ * @param context
37
+ */
16
38
  removeInternal(id: number, context?: ContextDto): Promise<void>;
39
+ /**
40
+ * Soft remove model
41
+ * @param rawId
42
+ * @param context
43
+ */
17
44
  softRemove(rawId: number | string, context?: ContextDto): Promise<void>;
45
+ /**
46
+ * Internal soft remove method for overwrite in project
47
+ * @param id
48
+ * @param context
49
+ */
18
50
  softRemoveInternal(id: number, context?: ContextDto): Promise<void>;
51
+ /**
52
+ * Mapping dto to model class
53
+ * @param dto
54
+ * @protected
55
+ * @throws Error if modelClass is not set
56
+ */
19
57
  protected dtoToModel(dto: DeepPartial<TModel>): TModel;
20
58
  }
@@ -8,18 +8,44 @@ const BaseField_1 = require("../../infrastructure/decorators/fields/BaseField");
8
8
  const RelationTypeEnum_1 = require("../../domain/enums/RelationTypeEnum");
9
9
  const exceptions_1 = require("../exceptions");
10
10
  const ReadService_1 = require("./ReadService");
11
+ /**
12
+ * Generic CRUD service
13
+ */
11
14
  class CrudService extends ReadService_1.ReadService {
15
+ /**
16
+ * Create new model
17
+ * @param dto
18
+ * @param context
19
+ * @param schemaClass
20
+ */
12
21
  async create(dto, context = null, schemaClass = null) {
13
22
  return this.save(null, dto, context, schemaClass);
14
23
  }
24
+ /**
25
+ * Update model
26
+ * @param rawId
27
+ * @param dto
28
+ * @param context
29
+ * @param schemaClass
30
+ */
15
31
  async update(rawId, dto, context = null, schemaClass = null) {
16
32
  return this.save(rawId, dto, context, schemaClass);
17
33
  }
34
+ /**
35
+ * Update model
36
+ * @param rawId
37
+ * @param dto
38
+ * @param context
39
+ * @param schemaClass
40
+ * @throws Error if dto is instance of model class
41
+ * @throws Error if rawId passed and prevModel not found
42
+ */
18
43
  async save(rawId, dto, context = null, schemaClass = null) {
19
44
  if (this.isModel(dto)) {
20
45
  throw new Error('The model itself shouldn\'t be used as a DTO');
21
46
  }
22
47
  const id = rawId ? (0, lodash_1.toInteger)(rawId) : null;
48
+ // Fetch previous model state
23
49
  let prevModel = null;
24
50
  if (id) {
25
51
  prevModel = await this.createQuery()
@@ -30,33 +56,58 @@ class CrudService extends ReadService_1.ReadService {
30
56
  throw new Error('Not found model by id: ' + id);
31
57
  }
32
58
  }
59
+ // Create next model state
33
60
  const ModelClass = this.modelClass;
34
61
  const nextModel = new ModelClass();
62
+ // Сперва добавляем данные для новой модели из старой
35
63
  if (prevModel) {
36
64
  DataMapper_1.DataMapper.applyValues(nextModel, prevModel);
37
65
  }
66
+ // Модель с измененными полями
38
67
  const diffModel = this.dtoToModel(dto);
68
+ // Принудительно добавляем primary key, т.к. его зачастую нет в dto
39
69
  if (id) {
40
70
  diffModel[this.primaryKey] = id;
41
71
  }
72
+ // Затем накатываем изменения
42
73
  DataMapper_1.DataMapper.applyValues(nextModel, diffModel);
74
+ // Validate dto
43
75
  await this.validate(dto, {
44
76
  prevModel,
45
77
  nextModel,
46
78
  context,
47
79
  });
80
+ // Validate by ModelClass
48
81
  await this.validate(nextModel, {
49
82
  prevModel,
50
83
  nextModel,
51
84
  context,
52
85
  });
53
- await this.saveInternal(prevModel, nextModel, diffModel, context);
86
+ // Save
87
+ const savedModel = await this.saveInternal(prevModel, nextModel, diffModel, context);
88
+ // Convert to schema, if need
54
89
  return schemaClass
55
- ? this.findById(nextModel[this.primaryKey], context, schemaClass)
56
- : nextModel;
90
+ ? this.findById(savedModel[this.primaryKey], context, schemaClass)
91
+ : savedModel;
57
92
  }
93
+ /**
94
+ * Internal save method for overwrite in project
95
+ * @param prevModel
96
+ * @param nextModel
97
+ * @param diffModel
98
+ * @param context
99
+ */
58
100
  async saveInternal(prevModel, nextModel, diffModel, context) {
59
- await this.repository.save(diffModel);
101
+ // you code outside transaction before save
102
+ // return this.repository.save(diffModel, async (save) => {
103
+ // you code inside transaction before save
104
+ // const savedModel = save();
105
+ // you code inside transaction after save
106
+ // return savedModel;
107
+ // });
108
+ // you code outside transaction after save
109
+ // or save() call without transaction
110
+ return this.repository.save(diffModel);
60
111
  }
61
112
  async checkHasRelatedModels(id, service) {
62
113
  const relations = (0, BaseField_1.getRelationsByFilter)(this.modelClass, (relation) => {
@@ -76,25 +127,63 @@ class CrudService extends ReadService_1.ReadService {
76
127
  }
77
128
  });
78
129
  }
130
+ /**
131
+ * Remove model
132
+ * @param rawId
133
+ * @param context
134
+ */
79
135
  async remove(rawId, context = null) {
80
136
  const id = (0, lodash_1.toInteger)(rawId);
81
137
  await this.checkHasRelatedModels(id, this);
82
138
  await this.removeInternal(id, context);
83
139
  }
140
+ /**
141
+ * Internal remove method for overwrite in project
142
+ * @param id
143
+ * @param context
144
+ */
84
145
  async removeInternal(id, context) {
146
+ // you code outside transaction before remove
85
147
  await this.repository.remove(id, async (remove) => {
148
+ // you code inside transaction before remove
86
149
  await remove();
150
+ // you code inside transaction after remove
87
151
  });
152
+ // you code outside transaction after remove
153
+ // or remove() call without transaction
154
+ // await this.repository.remove(id);
88
155
  }
156
+ /**
157
+ * Soft remove model
158
+ * @param rawId
159
+ * @param context
160
+ */
89
161
  async softRemove(rawId, context = null) {
90
162
  const id = (0, lodash_1.toInteger)(rawId);
91
163
  await this.softRemoveInternal(id, context);
92
164
  }
165
+ /**
166
+ * Internal soft remove method for overwrite in project
167
+ * @param id
168
+ * @param context
169
+ */
93
170
  async softRemoveInternal(id, context) {
171
+ // you code outside transaction before soft remove
94
172
  await this.repository.softRemove(id, async (softRemove) => {
173
+ // you code inside transaction before soft remove
95
174
  await softRemove();
175
+ // you code inside transaction after soft remove
96
176
  });
177
+ // you code outside transaction after soft remove
178
+ // or softRemove() call without transaction
179
+ // await this.repository.softRemove(id);
97
180
  }
181
+ /**
182
+ * Mapping dto to model class
183
+ * @param dto
184
+ * @protected
185
+ * @throws Error if modelClass is not set
186
+ */
98
187
  dtoToModel(dto) {
99
188
  if (!this.modelClass) {
100
189
  throw new Error('Property modelClass is not set in service: ' + this.constructor.name);
@@ -1 +1 @@
1
- {"version":3,"file":"CrudService.js","sourceRoot":"","sources":["../../../src/usecases/services/CrudService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CrudService.js","sourceRoot":"","sources":["../../../src/usecases/services/CrudService.ts"],"names":[],"mappings":"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"}