@mee4dy/crud-nestjs 1.0.7 → 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;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CrudParamsAdapterService = void 0;
4
4
  const sequelize_1 = require("sequelize");
5
+ const merge_util_1 = require("../utils/merge.util");
5
6
  class CrudParamsAdapterService {
6
7
  constructor(params) {
7
8
  this.params = params;
@@ -24,10 +25,10 @@ class CrudParamsAdapterService {
24
25
  limit,
25
26
  offset,
26
27
  };
27
- return {
28
- ...baseOptions,
29
- ...repositoryParams,
30
- };
28
+ return (0, merge_util_1.merge)(baseOptions, repositoryParams);
29
+ }
30
+ getRepository() {
31
+ return this.params.repository ? this.params.repository() : null;
31
32
  }
32
33
  getRepositoryParams() {
33
34
  return this.params.repositoryParams || {};
@@ -57,8 +58,18 @@ class CrudParamsAdapterService {
57
58
  }
58
59
  getAttributes() {
59
60
  const fields = this.params.fields;
61
+ const groups = this.params.groups;
60
62
  const resultInclude = [];
61
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
+ }
62
73
  if ((fields === null || fields === void 0 ? void 0 : fields.include) && fields.include.length) {
63
74
  for (const [fieldQuery, fieldKey] of fields.include) {
64
75
  resultInclude.push([fieldQuery, fieldKey]);
@@ -74,6 +85,13 @@ class CrudParamsAdapterService {
74
85
  exclude: resultExclude,
75
86
  };
76
87
  }
88
+ getAllModelFields() {
89
+ const repository = this.getRepository();
90
+ if (repository && repository.getAttributes) {
91
+ return Object.keys(repository.getAttributes());
92
+ }
93
+ return [];
94
+ }
77
95
  getWhere() {
78
96
  const result = {};
79
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":"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"}
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.7",
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
@@ -147,6 +147,25 @@ const filters = {
147
147
  GET /posts?filters[user_id]=1&filters[title][op]=like&filters[title][value]=test&filters[created_at][op]=range&filters[created_at][from]=2024-01-01&filters[created_at][to]=2024-12-31
148
148
  ```
149
149
 
150
+ **Пример объединения условий:**
151
+
152
+ ```typescript
153
+ // CRUD фильтры + repositoryParams
154
+ const params: CrudParams = {
155
+ filters: { user_id: 1, status: 'active' },
156
+ repositoryParams: {
157
+ where: {
158
+ created_at: {
159
+ [Op.lte]: '2025-07-28 12:00:00',
160
+ },
161
+ },
162
+ },
163
+ };
164
+
165
+ // Результат объединения:
166
+ // WHERE user_id = 1 AND status = 'active' AND created_at <= '2025-07-28 12:00:00'
167
+ ```
168
+
150
169
  ### Сортировка (orders)
151
170
 
152
171
  ```typescript
@@ -190,9 +209,14 @@ GET /posts?limit=20&offset=40
190
209
  type CrudFields = {
191
210
  include?: [Literal, CrudField][]; // Дополнительные SQL выражения
192
211
  exclude?: CrudField[]; // Исключаемые поля
212
+ override?: [Literal, CrudField][]; // Переопределение полей (для агрегации)
193
213
  };
214
+ ```
194
215
 
195
- // В коде:
216
+ **Примеры использования:**
217
+
218
+ ```typescript
219
+ // Обычная выборка полей
196
220
  const fields = {
197
221
  include: [
198
222
  [Sequelize.literal('CONCAT(name, " (", email, ")")'), 'full_info'],
@@ -200,6 +224,59 @@ const fields = {
200
224
  ],
201
225
  exclude: ['password', 'deleted_at'],
202
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
203
280
  ```
204
281
 
205
282
  ### Связи (join)
@@ -307,9 +384,10 @@ const params: CrudParams = {
307
384
  },
308
385
  },
309
386
  };
387
+ // Результат: Объединяется с любыми существующими фильтрами и атрибутами
310
388
  ```
311
389
 
312
- **Важно:** Параметры из `repositoryParams` имеют приоритет над параметрами, сгенерированными из других полей `CrudParams`.
390
+ **Важно:** Параметры из `repositoryParams` объединяются с параметрами, сгенерированными из других полей `CrudParams`, используя глубокое слияние объектов. Это позволяет комбинировать CRUD фильтры с прямыми Sequelize условиями.
313
391
 
314
392
  ## Примеры контроллеров
315
393