@mee4dy/crud-nestjs 1.0.4 → 1.0.6
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.
- package/dist/crud.controller.d.ts +1 -1
- package/dist/crud.service.d.ts +6 -6
- package/dist/crud.service.js +10 -6
- package/dist/crud.service.js.map +1 -1
- package/dist/types/crud-params.types.d.ts +1 -0
- package/dist/types/crud-response.types.d.ts +1 -0
- package/package.json +1 -1
- package/readme.md +53 -25
package/dist/crud.service.d.ts
CHANGED
|
@@ -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:
|
|
6
|
+
protected repository: any;
|
|
7
7
|
getPK(): string;
|
|
8
|
-
getRepository():
|
|
8
|
+
getRepository(params?: CrudParams): any;
|
|
9
9
|
private paramsProcessor;
|
|
10
|
-
getItems(params: CrudParams):
|
|
11
|
-
getItem(params: CrudParams):
|
|
12
|
-
create(data: object):
|
|
10
|
+
getItems(params: CrudParams): any;
|
|
11
|
+
getItem(params: CrudParams): any;
|
|
12
|
+
create(data: object): any;
|
|
13
13
|
update(params: CrudParams, data: object, returning?: boolean): Promise<any>;
|
|
14
|
-
delete(params: CrudParams):
|
|
14
|
+
delete(params: CrudParams): any;
|
|
15
15
|
}
|
package/dist/crud.service.js
CHANGED
|
@@ -11,8 +11,8 @@ class CrudService {
|
|
|
11
11
|
getPK() {
|
|
12
12
|
return this.pk;
|
|
13
13
|
}
|
|
14
|
-
getRepository() {
|
|
15
|
-
return this.repository;
|
|
14
|
+
getRepository(params) {
|
|
15
|
+
return (params === null || params === void 0 ? void 0 : params.repository) ? params.repository() : this.repository;
|
|
16
16
|
}
|
|
17
17
|
paramsProcessor(params) {
|
|
18
18
|
const processedParams = (0, replace_pk_util_1.replacePkRecursive)(params, this.pk);
|
|
@@ -20,11 +20,13 @@ class CrudService {
|
|
|
20
20
|
}
|
|
21
21
|
getItems(params) {
|
|
22
22
|
const processedParams = this.paramsProcessor(params);
|
|
23
|
-
|
|
23
|
+
const repository = this.getRepository(params);
|
|
24
|
+
return repository.findAll(processedParams);
|
|
24
25
|
}
|
|
25
26
|
getItem(params) {
|
|
26
27
|
const processedParams = this.paramsProcessor(params);
|
|
27
|
-
|
|
28
|
+
const repository = this.getRepository(params);
|
|
29
|
+
return repository.findOne(processedParams);
|
|
28
30
|
}
|
|
29
31
|
create(data) {
|
|
30
32
|
return this.repository.create(data, {
|
|
@@ -33,7 +35,8 @@ class CrudService {
|
|
|
33
35
|
}
|
|
34
36
|
async update(params, data, returning = true) {
|
|
35
37
|
const processedParams = this.paramsProcessor(params);
|
|
36
|
-
|
|
38
|
+
const repository = this.getRepository(params);
|
|
39
|
+
return repository
|
|
37
40
|
.update(data, {
|
|
38
41
|
where: processedParams.where,
|
|
39
42
|
})
|
|
@@ -46,7 +49,8 @@ class CrudService {
|
|
|
46
49
|
}
|
|
47
50
|
delete(params) {
|
|
48
51
|
const processedParams = this.paramsProcessor(params);
|
|
49
|
-
|
|
52
|
+
const repository = this.getRepository(params);
|
|
53
|
+
return repository.destroy({
|
|
50
54
|
where: processedParams.where,
|
|
51
55
|
});
|
|
52
56
|
}
|
package/dist/crud.service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../src/crud.service.ts"],"names":[],"mappings":";;;AAEA,wFAAkF;AAClF,6DAA6D;AAE7D,MAAa,WAAW;IACtB,YAAY,KAAqB,EAAE,KAAa,IAAI;QAClD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAKM,KAAK;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAEM,aAAa;
|
|
1
|
+
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../src/crud.service.ts"],"names":[],"mappings":";;;AAEA,wFAAkF;AAClF,6DAA6D;AAE7D,MAAa,WAAW;IACtB,YAAY,KAAqB,EAAE,KAAa,IAAI;QAClD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAKM,KAAK;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAEM,aAAa,CAAC,MAAmB;QACtC,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,EAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IACpE,CAAC;IAEO,eAAe,CAAC,MAAkB;QACxC,MAAM,eAAe,GAAG,IAAA,oCAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,sDAAwB,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/D,CAAC;IAEM,QAAQ,CAAC,MAAkB;QAChC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAEM,OAAO,CAAC,MAAkB;QAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAW,EAAE;YACzC,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,MAAkB,EAAE,IAAY,EAAE,YAAqB,IAAI;QAC7E,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,UAAU;aACd,MAAM,CAAC,IAAI,EAAE;YACZ,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC;aACD,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;YACpB,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,MAAkB;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC,OAAO,CAAC;YACxB,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CAAC;IACL,CAAC;CACF;AA9DD,kCA8DC"}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -112,6 +112,7 @@ interface CrudParams {
|
|
|
112
112
|
limit?: number; // Лимит записей
|
|
113
113
|
offset?: number; // Смещение для пагинации
|
|
114
114
|
repositoryParams?: Partial<FindOptions>; // Прямые параметры Sequelize
|
|
115
|
+
repository?: () => any; // Динамическая смена репозитория со scopes
|
|
115
116
|
}
|
|
116
117
|
```
|
|
117
118
|
|
|
@@ -388,14 +389,11 @@ export class CommentsController {}
|
|
|
388
389
|
{
|
|
389
390
|
repository: () => Users,
|
|
390
391
|
attributes: {
|
|
391
|
-
exclude: [
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}
|
|
397
|
-
]
|
|
398
|
-
}
|
|
392
|
+
exclude: ['password', 'deleted_at'],
|
|
393
|
+
},
|
|
394
|
+
},
|
|
395
|
+
],
|
|
396
|
+
},
|
|
399
397
|
},
|
|
400
398
|
scopes: {
|
|
401
399
|
item: (req) => ({
|
|
@@ -404,30 +402,60 @@ export class CommentsController {}
|
|
|
404
402
|
{
|
|
405
403
|
repository: () => Comments,
|
|
406
404
|
attributes: {
|
|
407
|
-
include: [
|
|
408
|
-
[
|
|
409
|
-
Sequelize.literal('CONCAT("[", id, "] ", text)'),
|
|
410
|
-
'formatted_text'
|
|
411
|
-
]
|
|
412
|
-
]
|
|
405
|
+
include: [[Sequelize.literal('CONCAT("[", id, "] ", text)'), 'formatted_text']],
|
|
413
406
|
},
|
|
414
407
|
join: [
|
|
415
408
|
{
|
|
416
409
|
repository: () => Users,
|
|
417
410
|
attributes: {
|
|
418
|
-
exclude: [
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
411
|
+
exclude: ['password'],
|
|
412
|
+
},
|
|
413
|
+
},
|
|
414
|
+
],
|
|
415
|
+
},
|
|
416
|
+
],
|
|
417
|
+
},
|
|
418
|
+
}),
|
|
419
|
+
},
|
|
420
|
+
})
|
|
421
|
+
@Controller('posts')
|
|
422
|
+
export class PostsController {}
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### Контроллер с Sequelize scopes
|
|
426
|
+
|
|
427
|
+
```typescript
|
|
428
|
+
@Crud({
|
|
429
|
+
repository: () => Posts.scope('active'),
|
|
430
|
+
})
|
|
431
|
+
@Controller('posts')
|
|
432
|
+
export class PostsController {}
|
|
433
|
+
|
|
434
|
+
// Несколько scopes
|
|
435
|
+
@Crud({
|
|
436
|
+
repository: () => Posts.scope(['active', 'withUser', 'withComments']),
|
|
437
|
+
})
|
|
438
|
+
@Controller('posts')
|
|
439
|
+
export class PostsController {}
|
|
440
|
+
|
|
441
|
+
// Динамические scopes через params
|
|
442
|
+
@Crud({
|
|
443
|
+
repository: () => Posts.scope('active'),
|
|
444
|
+
scopes: {
|
|
445
|
+
items: (req) => ({
|
|
446
|
+
params: {
|
|
447
|
+
repository: () => Posts.scope(['published', 'withComments']),
|
|
448
|
+
},
|
|
449
|
+
}),
|
|
450
|
+
item: (req) => ({
|
|
451
|
+
params: {
|
|
452
|
+
repository: () => Posts.scope(['withUser', 'withComments', 'withLikes']),
|
|
453
|
+
},
|
|
454
|
+
}),
|
|
455
|
+
},
|
|
429
456
|
})
|
|
430
457
|
@Controller('posts')
|
|
458
|
+
export class PostsController {}
|
|
431
459
|
```
|
|
432
460
|
|
|
433
461
|
## Формат ответа
|