@mee4dy/crud-nestjs 1.0.8 → 1.0.9

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.
@@ -13,7 +13,7 @@ export declare class CrudController<T extends Model> {
13
13
  item(params: CrudParams): Promise<{
14
14
  status: boolean;
15
15
  data: {
16
- item: any;
16
+ item: T;
17
17
  };
18
18
  }>;
19
19
  create(data: object): Promise<CrudResponse>;
@@ -3,13 +3,13 @@ import { CrudParams } from './types/crud-params.types';
3
3
  export declare class CrudService<T extends Model> {
4
4
  constructor(model: ModelStatic<T>, pk?: string);
5
5
  protected pk: string;
6
- protected repository: any;
6
+ protected repository: ModelStatic<T>;
7
7
  getPK(): string;
8
- getRepository(params?: CrudParams): any;
8
+ getRepository(params?: CrudParams): ModelStatic<T>;
9
9
  private paramsProcessor;
10
- getItems(params: CrudParams): any;
11
- getItem(params: CrudParams): any;
12
- create(data: object): any;
10
+ getItems(params: CrudParams): Promise<T[]>;
11
+ getItem(params: CrudParams): Promise<T>;
12
+ create(data: object): Promise<T>;
13
13
  update(params: CrudParams, data: object, returning?: boolean): Promise<any>;
14
- delete(params: CrudParams): any;
14
+ delete(params: CrudParams): Promise<number>;
15
15
  }
@@ -18,7 +18,9 @@ exports.CrudParamsDecorator = (0, common_1.createParamDecorator)((data, ctx) =>
18
18
  const config = Reflect.getMetadata('crud:config', ctx.getClass());
19
19
  const pk = config.pk;
20
20
  const defaultParams = ((_b = config === null || config === void 0 ? void 0 : config.params) === null || _b === void 0 ? void 0 : _b.default) || {};
21
- let params = {};
21
+ let params = {
22
+ repository: config.repository,
23
+ };
22
24
  if (pkValue !== undefined) {
23
25
  params = (0, merge_util_1.merge)(params, {
24
26
  filters: {
@@ -1 +1 @@
1
- {"version":3,"file":"crud-params.decorator.js","sourceRoot":"","sources":["../../src/decorators/crud-params.decorator.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAwE;AAExE,+FAAyF;AACzF,oDAA4C;AAC5C,4CAAoB;AACpB,4BAA0B;AAC1B,8DAA8D;AAC9D,4CAAkC;AAGrB,QAAA,mBAAmB,GAAG,IAAA,6BAAoB,EACrD,CAAC,IAAgD,EAAE,GAAqB,EAAE,EAAE;;IAC1E,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,MAAM,0CAAG,cAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IAErB,MAAM,aAAa,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,OAAO,KAAI,EAAE,CAAC;IACpD,IAAI,MAAM,GAAe,EAAE,CAAC;IAE5B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,IAAA,kBAAK,EAAC,MAAM,EAAE;YACrB,OAAO,EAAE;gBACP,CAAC,cAAE,CAAC,EAAE,OAAO;aACd;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,YAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,kBAAkB,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,aAAa,KAAI,EAAE,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAI,4DAA2B,CAC/C,IAAA,oCAAkB,EAAC,KAAK,EAAE,EAAE,CAAC,EAC7B,IAAA,oCAAkB,EAAC,kBAAkB,EAAE,EAAE,CAAC,CAC3C,CAAC;IACF,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAExC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,EAAE,CAAC;IACpC,IAAI,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;IAEzC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACtC,YAAY,GAAG,IAAA,kBAAK,EAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,IAAI,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACtC,YAAY,GAAG,IAAA,kBAAK,EAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,IAAA,kBAAK,EACV;QACE,GAAG,IAAA,oCAAkB,EAAC,aAAa,EAAE,EAAE,CAAC;QACxC,GAAG,IAAA,kBAAK,EAAC,IAAA,oCAAkB,EAAC,MAAM,EAAE,EAAE,CAAC,EAAE,IAAA,oCAAkB,EAAC,YAAY,EAAE,EAAE,CAAC,CAAC;KAC/E,EACD,IAAA,oCAAkB,EAAC,WAAW,EAAE,EAAE,CAAC,CACpC,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"crud-params.decorator.js","sourceRoot":"","sources":["../../src/decorators/crud-params.decorator.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAwE;AAExE,+FAAyF;AACzF,oDAA4C;AAC5C,4CAAoB;AACpB,4BAA0B;AAC1B,8DAA8D;AAC9D,4CAAkC;AAGrB,QAAA,mBAAmB,GAAG,IAAA,6BAAoB,EACrD,CAAC,IAAgD,EAAE,GAAqB,EAAE,EAAE;;IAC1E,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,MAAM,0CAAG,cAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IAErB,MAAM,aAAa,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,OAAO,KAAI,EAAE,CAAC;IACpD,IAAI,MAAM,GAAe;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;IAEF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,IAAA,kBAAK,EAAC,MAAM,EAAE;YACrB,OAAO,EAAE;gBACP,CAAC,cAAE,CAAC,EAAE,OAAO;aACd;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,YAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,kBAAkB,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,aAAa,KAAI,EAAE,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAI,4DAA2B,CAC/C,IAAA,oCAAkB,EAAC,KAAK,EAAE,EAAE,CAAC,EAC7B,IAAA,oCAAkB,EAAC,kBAAkB,EAAE,EAAE,CAAC,CAC3C,CAAC;IACF,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAExC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,EAAE,CAAC;IACpC,IAAI,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;IAEzC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACtC,YAAY,GAAG,IAAA,kBAAK,EAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,IAAI,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACtC,YAAY,GAAG,IAAA,kBAAK,EAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,IAAA,kBAAK,EACV;QACE,GAAG,IAAA,oCAAkB,EAAC,aAAa,EAAE,EAAE,CAAC;QACxC,GAAG,IAAA,kBAAK,EAAC,IAAA,oCAAkB,EAAC,MAAM,EAAE,EAAE,CAAC,EAAE,IAAA,oCAAkB,EAAC,YAAY,EAAE,EAAE,CAAC,CAAC;KAC/E,EACD,IAAA,oCAAkB,EAAC,WAAW,EAAE,EAAE,CAAC,CACpC,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -59,9 +59,7 @@ function Crud(config) {
59
59
  },
60
60
  },
61
61
  params: {
62
- default: {
63
- orders: [[constants_1.PK, 'desc']],
64
- },
62
+ default: {},
65
63
  },
66
64
  };
67
65
  const finalConfig = _.mergeWith({}, defaultConfig, config, (objValue, srcValue, key) => {
@@ -1 +1 @@
1
- {"version":3,"file":"crud.decorator.js","sourceRoot":"","sources":["../../src/decorators/crud.decorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,oBAsCC;AA1CD,4BAA0B;AAC1B,4CAAkC;AAClC,0CAA4B;AAE5B,SAAgB,IAAI,CAAC,MAAkB;IACrC,OAAO,UAAU,MAAW;QAC1B,MAAM,aAAa,GAAmC;YACpD,EAAE,EAAE,IAAI;YACR,SAAS,EAAE;gBACT,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;aACd;YACD,KAAK,EAAE;gBACL,aAAa,EAAE;oBACb,OAAO,EAAE,CAAC,cAAE,CAAC;oBACb,MAAM,EAAE,CAAC,cAAE,CAAC;oBACZ,MAAM,EAAE,CAAC,cAAE,CAAC;oBACZ,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,KAAK;iBACd;aACF;YACD,MAAM,EAAE;gBACN,OAAO,EAAE;oBACP,MAAM,EAAE,CAAC,CAAC,cAAE,EAAE,MAAM,CAAC,CAAC;iBACvB;aACF;SACF,CAAC;QAEF,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;YACrF,MAAM,mBAAmB,GAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAEtE,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"crud.decorator.js","sourceRoot":"","sources":["../../src/decorators/crud.decorator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,oBAoCC;AAxCD,4BAA0B;AAC1B,4CAAkC;AAClC,0CAA4B;AAE5B,SAAgB,IAAI,CAAC,MAAkB;IACrC,OAAO,UAAU,MAAW;QAC1B,MAAM,aAAa,GAAmC;YACpD,EAAE,EAAE,IAAI;YACR,SAAS,EAAE;gBACT,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;aACd;YACD,KAAK,EAAE;gBACL,aAAa,EAAE;oBACb,OAAO,EAAE,CAAC,cAAE,CAAC;oBACb,MAAM,EAAE,CAAC,cAAE,CAAC;oBACZ,MAAM,EAAE,CAAC,cAAE,CAAC;oBACZ,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,KAAK;iBACd;aACF;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;QAEF,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;YACrF,MAAM,mBAAmB,GAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAEtE,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC"}
@@ -4,9 +4,11 @@ export declare class CrudParamsAdapterService {
4
4
  private params;
5
5
  constructor(params: CrudParams);
6
6
  adapt(): FindOptions;
7
+ private getRepository;
7
8
  private getRepositoryParams;
8
9
  private getInclude;
9
10
  private getAttributes;
11
+ private getAllModelFields;
10
12
  private getWhere;
11
13
  private getGroup;
12
14
  private getOrder;
@@ -27,6 +27,9 @@ class CrudParamsAdapterService {
27
27
  };
28
28
  return (0, merge_util_1.merge)(baseOptions, repositoryParams);
29
29
  }
30
+ getRepository() {
31
+ return this.params.repository ? this.params.repository() : null;
32
+ }
30
33
  getRepositoryParams() {
31
34
  return this.params.repositoryParams || {};
32
35
  }
@@ -55,8 +58,18 @@ class CrudParamsAdapterService {
55
58
  }
56
59
  getAttributes() {
57
60
  const fields = this.params.fields;
61
+ const groups = this.params.groups;
58
62
  const resultInclude = [];
59
63
  const resultExclude = [];
64
+ if ((fields === null || fields === void 0 ? void 0 : fields.override) && fields.override.length) {
65
+ const overrideFields = fields.override.map(([literal, field]) => field);
66
+ resultExclude.push(...this.getAllModelFields().filter((field) => !overrideFields.includes(field)));
67
+ }
68
+ if (groups && groups.length && !(fields === null || fields === void 0 ? void 0 : fields.override)) {
69
+ const allFields = this.getAllModelFields();
70
+ const fieldsToExclude = allFields.filter((field) => !groups.includes(field));
71
+ resultExclude.push(...fieldsToExclude);
72
+ }
60
73
  if ((fields === null || fields === void 0 ? void 0 : fields.include) && fields.include.length) {
61
74
  for (const [fieldQuery, fieldKey] of fields.include) {
62
75
  resultInclude.push([fieldQuery, fieldKey]);
@@ -72,6 +85,13 @@ class CrudParamsAdapterService {
72
85
  exclude: resultExclude,
73
86
  };
74
87
  }
88
+ getAllModelFields() {
89
+ const repository = this.getRepository();
90
+ if (repository && repository.getAttributes) {
91
+ return Object.keys(repository.getAttributes());
92
+ }
93
+ return [];
94
+ }
75
95
  getWhere() {
76
96
  const result = {};
77
97
  const filters = this.params.filters;
@@ -1 +1 @@
1
- {"version":3,"file":"crud-params-adapter.service.js","sourceRoot":"","sources":["../../src/services/crud-params-adapter.service.ts"],"names":[],"mappings":";;;AAAA,yCAA0D;AAY1D,oDAA4C;AAE5C,MAAa,wBAAwB;IACnC,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAEnC,KAAK;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEpD,MAAM,WAAW,GAAG;YAClB,UAAU;YACV,OAAO;YACP,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,MAAM;SACP,CAAC;QAEF,OAAO,IAAA,kBAAK,EAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC9C,CAAC;IAEO,mBAAmB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAC5C,CAAC;IAEO,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;QAC5C,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE,CAAC;YACrB,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAQ;oBACtB,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE;iBAC7B,CAAC;gBAEF,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACxB,UAAU,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;gBAC9C,CAAC;gBAED,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAClB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACtD,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;oBACxD,CAAC;gBACH,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,MAAM,aAAa,GAA2B,EAAE,CAAC;QACjD,MAAM,aAAa,GAAgB,EAAE,CAAC;QAEtC,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,KAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7C,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpD,aAAa,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,KAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACtC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,aAAa;SACvB,CAAC;IACJ,CAAC;IAEO,QAAQ;QACd,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAuC,CAAC;QAEpE,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;YAC3C,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAc,CAAC;gBAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAoB,CAAC;gBAChD,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;gBAE/D,MAAM,UAAU,GAAG,QAAQ,CAAC;gBAC5B,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBAE9G,QAAQ,QAAQ,EAAE,CAAC;oBACjB,KAAK,MAAM;wBACT,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;4BACpD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,cAAE,CAAC,IAAI,CAAC,EAAE,IAAI,UAAU,GAAG,EAAE,CAAC;wBACxD,CAAC;wBACD,MAAM;oBAER,KAAK,QAAQ,CAAC;oBACd,KAAK,OAAO;wBACV,MAAM,KAAK,GAAQ,EAAE,CAAC;wBACtB,MAAM,cAAc,GAClB,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;wBAC9F,MAAM,YAAY,GAChB,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;wBAE1F,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;4BACjC,KAAK,CAAC,cAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;wBACjC,CAAC;wBAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;4BAC/B,KAAK,CAAC,cAAE,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;wBAC/B,CAAC;wBAED,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;4BAClC,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;wBAC7B,CAAC;wBACD,MAAM;oBAER,QAAQ;oBACR,KAAK,IAAI;wBACP,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;4BACpD,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;wBAClC,CAAC;wBACD,MAAM;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,QAAQ;QACd,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAElC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,QAAQ;QACd,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAElC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAA+B,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,QAAQ;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAEhC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,SAAS;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAElC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AApLD,4DAoLC"}
1
+ {"version":3,"file":"crud-params-adapter.service.js","sourceRoot":"","sources":["../../src/services/crud-params-adapter.service.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ export type CrudParamsFilter = {
24
24
  export type CrudFields = {
25
25
  include?: [Literal, CrudField][];
26
26
  exclude?: CrudField[];
27
+ override?: [Literal, CrudField][];
27
28
  };
28
29
  export type CrudJoin = {
29
30
  repository: () => any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mee4dy/crud-nestjs",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "scripts": {
package/readme.md CHANGED
@@ -156,17 +156,15 @@ const params: CrudParams = {
156
156
  repositoryParams: {
157
157
  where: {
158
158
  created_at: {
159
- [Op.lte]: '2025-07-28 12:00:00'
160
- }
161
- }
162
- }
159
+ [Op.lte]: '2025-07-28 12:00:00',
160
+ },
161
+ },
162
+ },
163
163
  };
164
164
 
165
165
  // Результат объединения:
166
166
  // WHERE user_id = 1 AND status = 'active' AND created_at <= '2025-07-28 12:00:00'
167
- ````
168
-
169
- ````
167
+ ```
170
168
 
171
169
  ### Сортировка (orders)
172
170
 
@@ -211,9 +209,14 @@ GET /posts?limit=20&offset=40
211
209
  type CrudFields = {
212
210
  include?: [Literal, CrudField][]; // Дополнительные SQL выражения
213
211
  exclude?: CrudField[]; // Исключаемые поля
212
+ override?: [Literal, CrudField][]; // Переопределение полей (для агрегации)
214
213
  };
214
+ ```
215
215
 
216
- // В коде:
216
+ **Примеры использования:**
217
+
218
+ ```typescript
219
+ // Обычная выборка полей
217
220
  const fields = {
218
221
  include: [
219
222
  [Sequelize.literal('CONCAT(name, " (", email, ")")'), 'full_info'],
@@ -221,6 +224,59 @@ const fields = {
221
224
  ],
222
225
  exclude: ['password', 'deleted_at'],
223
226
  };
227
+
228
+ // Переопределение полей для агрегации
229
+ const fields = {
230
+ override: [
231
+ [Sequelize.col('name'), 'name'],
232
+ [Sequelize.col('type'), 'type'],
233
+ ],
234
+ include: [
235
+ [Sequelize.literal('COUNT(*)'), 'total_count'],
236
+ [Sequelize.literal('MAX(created_at)'), 'last_created'],
237
+ ],
238
+ };
239
+
240
+ // Автоматическое исключение при группировке
241
+ const params: CrudParams = {
242
+ groups: ['name', 'type'],
243
+ // Автоматически исключатся все поля кроме name и type
244
+ };
245
+ ```
246
+
247
+ **Особенности работы с группировкой:**
248
+
249
+ 1. **Автоматическое исключение** - при наличии `groups` автоматически исключаются все поля модели, которые не участвуют в группировке
250
+ 2. **Переопределение полей** - поле `override` позволяет явно указать нужные поля, игнорируя автоматическое исключение
251
+ 3. **Приоритет override** - если указано `override`, автоматическое исключение не применяется
252
+
253
+ **Примеры SQL запросов:**
254
+
255
+ ```typescript
256
+ // С группировкой без override
257
+ const params: CrudParams = {
258
+ groups: ['name', 'type'],
259
+ fields: {
260
+ include: [[Sequelize.literal('COUNT(*)'), 'total']],
261
+ },
262
+ };
263
+ // SQL: SELECT name, type, COUNT(*) as total FROM table GROUP BY name, type
264
+
265
+ // С группировкой и override
266
+ const params: CrudParams = {
267
+ groups: ['name', 'type'],
268
+ fields: {
269
+ override: [
270
+ [Sequelize.col('name'), 'name'],
271
+ [Sequelize.col('type'), 'type'],
272
+ ],
273
+ include: [
274
+ [Sequelize.literal('COUNT(*)'), 'total'],
275
+ [Sequelize.literal('MAX(date)'), 'last_date'],
276
+ ],
277
+ },
278
+ };
279
+ // SQL: SELECT name, type, COUNT(*) as total, MAX(date) as last_date FROM table GROUP BY name, type
224
280
  ```
225
281
 
226
282
  ### Связи (join)