@dismissible/nestjs-core 2.0.2-canary.2913ba8.0 → 2.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.
- package/README.md +28 -6
- package/package.json +14 -14
- package/src/api/api.constants.d.ts +4 -0
- package/src/api/api.constants.js +8 -0
- package/src/api/api.constants.js.map +1 -0
- package/src/api/index.d.ts +1 -0
- package/src/api/index.js +1 -0
- package/src/api/index.js.map +1 -1
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.controller.d.ts +16 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.controller.js +80 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.controller.js.map +1 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.controller.spec.d.ts +1 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.controller.spec.js +52 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.controller.spec.js.map +1 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.request.dto.d.ts +10 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.request.dto.js +47 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.request.dto.js.map +1 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.response.dto.d.ts +7 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.response.dto.js +20 -0
- package/src/api/use-cases/batch-get-or-create/batch-get-or-create.response.dto.js.map +1 -0
- package/src/api/use-cases/batch-get-or-create/index.d.ts +3 -0
- package/src/api/use-cases/batch-get-or-create/index.js +7 -0
- package/src/api/use-cases/batch-get-or-create/index.js.map +1 -0
- package/src/api/use-cases/dismiss/dismiss.controller.js +3 -2
- package/src/api/use-cases/dismiss/dismiss.controller.js.map +1 -1
- package/src/api/use-cases/get-or-create/get-or-create.controller.js +3 -2
- package/src/api/use-cases/get-or-create/get-or-create.controller.js.map +1 -1
- package/src/api/use-cases/index.d.ts +1 -0
- package/src/api/use-cases/index.js +1 -0
- package/src/api/use-cases/index.js.map +1 -1
- package/src/api/use-cases/restore/restore.controller.js +3 -2
- package/src/api/use-cases/restore/restore.controller.js.map +1 -1
- package/src/core/dismissible-core.service.d.ts +23 -3
- package/src/core/dismissible-core.service.interface.d.ts +21 -1
- package/src/core/dismissible-core.service.interface.js.map +1 -1
- package/src/core/dismissible-core.service.js +106 -4
- package/src/core/dismissible-core.service.js.map +1 -1
- package/src/core/dismissible-core.service.spec.js +165 -2
- package/src/core/dismissible-core.service.spec.js.map +1 -1
- package/src/core/dismissible.service.d.ts +10 -3
- package/src/core/dismissible.service.interface.d.ts +8 -1
- package/src/core/dismissible.service.interface.js.map +1 -1
- package/src/core/dismissible.service.js +78 -1
- package/src/core/dismissible.service.js.map +1 -1
- package/src/core/dismissible.service.spec.js +1 -2
- package/src/core/dismissible.service.spec.js.map +1 -1
- package/src/core/hook-runner.interface.d.ts +28 -1
- package/src/core/hook-runner.service.d.ts +53 -1
- package/src/core/hook-runner.service.js +168 -0
- package/src/core/hook-runner.service.js.map +1 -1
- package/src/core/hook-runner.service.spec.js +353 -0
- package/src/core/hook-runner.service.spec.js.map +1 -1
- package/src/core/service-responses.interface.d.ts +11 -0
- package/src/dismissible.module.d.ts +2 -2
- package/src/dismissible.module.integration.spec.js +212 -4
- package/src/dismissible.module.integration.spec.js.map +1 -1
- package/src/dismissible.module.js +7 -1
- package/src/dismissible.module.js.map +1 -1
package/README.md
CHANGED
|
@@ -78,6 +78,7 @@ The module automatically registers REST endpoints for all operations:
|
|
|
78
78
|
- `GET /v1/users/:userId/items/:itemId` - Get or create an item
|
|
79
79
|
- `DELETE /v1/users/:userId/items/:itemId` - Dismiss an item
|
|
80
80
|
- `POST /v1/users/:userId/items/:itemId` - Restore a dismissed item
|
|
81
|
+
- `POST /v1/users/:userId/items` - Batch get or create multiple items (max 50)
|
|
81
82
|
|
|
82
83
|
Example request:
|
|
83
84
|
|
|
@@ -90,6 +91,11 @@ curl -X DELETE http://localhost:3000/v1/users/user-123/items/welcome-banner
|
|
|
90
91
|
|
|
91
92
|
# Restore a dismissed item
|
|
92
93
|
curl -X POST http://localhost:3000/v1/users/user-123/items/welcome-banner
|
|
94
|
+
|
|
95
|
+
# Batch get or create multiple items
|
|
96
|
+
curl -X POST http://localhost:3000/v1/users/user-123/items \
|
|
97
|
+
-H "Content-Type: application/json" \
|
|
98
|
+
-d '{"items": ["welcome-banner", "onboarding-tip-1", "feature-announcement"]}'
|
|
93
99
|
```
|
|
94
100
|
|
|
95
101
|
### React Client Integration
|
|
@@ -367,12 +373,19 @@ Overrides the default REST API controllers. Use this when you want complete cont
|
|
|
367
373
|
**Default:** Built-in controllers for get-or-create, dismiss, and restore
|
|
368
374
|
|
|
369
375
|
```typescript
|
|
370
|
-
import { Controller, Get, Param, Module } from '@nestjs/common';
|
|
371
|
-
import {
|
|
376
|
+
import { Controller, Get, Param, Module, Inject } from '@nestjs/common';
|
|
377
|
+
import {
|
|
378
|
+
DismissibleModule,
|
|
379
|
+
IDismissibleService,
|
|
380
|
+
DISMISSIBLE_SERVICE,
|
|
381
|
+
} from '@dismissible/nestjs-core';
|
|
372
382
|
|
|
373
383
|
@Controller('custom')
|
|
374
384
|
class CustomController {
|
|
375
|
-
constructor(
|
|
385
|
+
constructor(
|
|
386
|
+
@Inject(DISMISSIBLE_SERVICE)
|
|
387
|
+
private dismissibleService: IDismissibleService,
|
|
388
|
+
) {}
|
|
376
389
|
|
|
377
390
|
@Get(':userId/:itemId')
|
|
378
391
|
async getItem(@Param('userId') userId: string, @Param('itemId') itemId: string) {
|
|
@@ -410,12 +423,15 @@ export class AppModule {}
|
|
|
410
423
|
Instead of using the built-in REST API, you can inject `DismissibleService` into your own controllers or services:
|
|
411
424
|
|
|
412
425
|
```typescript
|
|
413
|
-
import { Controller, Get, Param, Delete, Post } from '@nestjs/common';
|
|
414
|
-
import {
|
|
426
|
+
import { Controller, Get, Param, Delete, Post, Inject } from '@nestjs/common';
|
|
427
|
+
import { IDismissibleService, DISMISSIBLE_SERVICE } from '@dismissible/nestjs-core';
|
|
415
428
|
|
|
416
429
|
@Controller('features')
|
|
417
430
|
export class FeaturesController {
|
|
418
|
-
constructor(
|
|
431
|
+
constructor(
|
|
432
|
+
@Inject(DISMISSIBLE_SERVICE)
|
|
433
|
+
private readonly dismissibleService: IDismissibleService,
|
|
434
|
+
) {}
|
|
419
435
|
|
|
420
436
|
@Get(':userId/items/:itemId')
|
|
421
437
|
async getOrCreateItem(@Param('userId') userId: string, @Param('itemId') itemId: string) {
|
|
@@ -437,6 +453,12 @@ export class FeaturesController {
|
|
|
437
453
|
const result = await this.dismissibleService.restore(itemId, userId);
|
|
438
454
|
return { item: result.item };
|
|
439
455
|
}
|
|
456
|
+
|
|
457
|
+
@Post(':userId/items')
|
|
458
|
+
async batchGetOrCreate(@Param('userId') userId: string, @Body() body: { items: string[] }) {
|
|
459
|
+
const result = await this.dismissibleService.batchGetOrCreate(body.items, userId);
|
|
460
|
+
return { items: result.items };
|
|
461
|
+
}
|
|
440
462
|
}
|
|
441
463
|
```
|
|
442
464
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dismissible/nestjs-core",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "Core Dismissible state management library for NestJS applications",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -17,20 +17,20 @@
|
|
|
17
17
|
"LICENSE.md"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@nestjs/event-emitter": "3.0.1",
|
|
21
|
-
"@dismissible/nestjs-hooks": "2.0.
|
|
22
|
-
"@dismissible/nestjs-item": "2.0.
|
|
23
|
-
"@dismissible/nestjs-request": "2.0.
|
|
24
|
-
"@dismissible/nestjs-storage": "2.0.
|
|
25
|
-
"@dismissible/nestjs-logger": "2.0.
|
|
26
|
-
"@dismissible/nestjs-validation": "2.0.
|
|
20
|
+
"@nestjs/event-emitter": "^3.0.1",
|
|
21
|
+
"@dismissible/nestjs-hooks": "^2.0.3",
|
|
22
|
+
"@dismissible/nestjs-item": "^2.0.3",
|
|
23
|
+
"@dismissible/nestjs-request": "^2.0.3",
|
|
24
|
+
"@dismissible/nestjs-storage": "^2.0.3",
|
|
25
|
+
"@dismissible/nestjs-logger": "^2.0.3",
|
|
26
|
+
"@dismissible/nestjs-validation": "^2.0.3"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
|
-
"@nestjs/common": "10.0.0 || ^11.0.0",
|
|
30
|
-
"@nestjs/core": "10.0.0 || ^11.0.0",
|
|
31
|
-
"@nestjs/swagger": "10.0.0 || ^11.0.0",
|
|
32
|
-
"class-validator": "0.14.3",
|
|
33
|
-
"class-transformer": "0.5.1"
|
|
29
|
+
"@nestjs/common": "^10.0.0 || ^11.0.0",
|
|
30
|
+
"@nestjs/core": "^10.0.0 || ^11.0.0",
|
|
31
|
+
"@nestjs/swagger": "^10.0.0 || ^11.0.0",
|
|
32
|
+
"class-validator": "^0.14.3",
|
|
33
|
+
"class-transformer": "^0.5.1"
|
|
34
34
|
},
|
|
35
35
|
"peerDependenciesMeta": {
|
|
36
36
|
"@nestjs/common": {
|
|
@@ -66,4 +66,4 @@
|
|
|
66
66
|
"access": "public"
|
|
67
67
|
},
|
|
68
68
|
"type": "commonjs"
|
|
69
|
-
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DISMISSIBLE_DEFAULT_ROUTE = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* API route constants for the dismissible API.
|
|
6
|
+
*/
|
|
7
|
+
exports.DISMISSIBLE_DEFAULT_ROUTE = '/v1/users/:userId/items/:itemId';
|
|
8
|
+
//# sourceMappingURL=api.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.constants.js","sourceRoot":"","sources":["../../../../../libs/core/src/api/api.constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,yBAAyB,GAAG,iCAAiC,CAAC"}
|
package/src/api/index.d.ts
CHANGED
package/src/api/index.js
CHANGED
|
@@ -6,4 +6,5 @@ tslib_1.__exportStar(require("./validation"), exports);
|
|
|
6
6
|
tslib_1.__exportStar(require("./dismissible-item.mapper"), exports);
|
|
7
7
|
tslib_1.__exportStar(require("./dismissible-item.mapper.interface"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./dismissible-item-response.dto"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./api.constants"), exports);
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/src/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/core/src/api/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAE5B,uDAA6B;AAE7B,oEAA0C;AAC1C,8EAAoD;AACpD,0EAAgD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/core/src/api/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAE5B,uDAA6B;AAE7B,oEAA0C;AAC1C,8EAAoD;AACpD,0EAAgD;AAChD,0DAAgC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IDismissibleService } from '../../../core/dismissible.service.interface';
|
|
2
|
+
import { IDismissibleItemMapper } from '../../dismissible-item.mapper.interface';
|
|
3
|
+
import { IRequestContext } from '@dismissible/nestjs-request';
|
|
4
|
+
import { BatchGetOrCreateRequestDto } from './batch-get-or-create.request.dto';
|
|
5
|
+
import { BatchGetOrCreateResponseDto } from './batch-get-or-create.response.dto';
|
|
6
|
+
import { IResponseService } from '../../../response/response.service.interface';
|
|
7
|
+
/**
|
|
8
|
+
* Controller for batch get-or-create dismissible item operations.
|
|
9
|
+
*/
|
|
10
|
+
export declare class BatchGetOrCreateController {
|
|
11
|
+
private readonly dismissibleService;
|
|
12
|
+
private readonly mapper;
|
|
13
|
+
private readonly responseService;
|
|
14
|
+
constructor(dismissibleService: IDismissibleService, mapper: IDismissibleItemMapper, responseService: IResponseService);
|
|
15
|
+
batchGetOrCreate(userId: string, body: BatchGetOrCreateRequestDto, context: IRequestContext): Promise<BatchGetOrCreateResponseDto>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BatchGetOrCreateController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
7
|
+
const dismissible_service_interface_1 = require("../../../core/dismissible.service.interface");
|
|
8
|
+
const dismissible_item_mapper_interface_1 = require("../../dismissible-item.mapper.interface");
|
|
9
|
+
const nestjs_request_1 = require("@dismissible/nestjs-request");
|
|
10
|
+
const batch_get_or_create_request_dto_1 = require("./batch-get-or-create.request.dto");
|
|
11
|
+
const batch_get_or_create_response_dto_1 = require("./batch-get-or-create.response.dto");
|
|
12
|
+
const response_service_interface_1 = require("../../../response/response.service.interface");
|
|
13
|
+
const http_exception_filter_1 = require("../../../response/http-exception-filter");
|
|
14
|
+
const api_tags_constants_1 = require("../api-tags.constants");
|
|
15
|
+
const validation_1 = require("../../validation");
|
|
16
|
+
/**
|
|
17
|
+
* Route for batch operations (without itemId param).
|
|
18
|
+
*/
|
|
19
|
+
const BATCH_ROUTE = '/v1/users/:userId/items';
|
|
20
|
+
/**
|
|
21
|
+
* Controller for batch get-or-create dismissible item operations.
|
|
22
|
+
*/
|
|
23
|
+
let BatchGetOrCreateController = class BatchGetOrCreateController {
|
|
24
|
+
constructor(dismissibleService, mapper, responseService) {
|
|
25
|
+
this.dismissibleService = dismissibleService;
|
|
26
|
+
this.mapper = mapper;
|
|
27
|
+
this.responseService = responseService;
|
|
28
|
+
}
|
|
29
|
+
async batchGetOrCreate(userId, body, context) {
|
|
30
|
+
const result = await this.dismissibleService.batchGetOrCreate(body.items, userId, context);
|
|
31
|
+
const responseItems = result.items.map((item) => this.mapper.toResponseDto(item));
|
|
32
|
+
return this.responseService.success(responseItems);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.BatchGetOrCreateController = BatchGetOrCreateController;
|
|
36
|
+
tslib_1.__decorate([
|
|
37
|
+
(0, common_1.Post)(),
|
|
38
|
+
(0, swagger_1.ApiOperation)({
|
|
39
|
+
summary: 'Batch get or create dismissible items',
|
|
40
|
+
description: 'Retrieves existing dismissible items or creates new ones for the given item IDs. Returns all items in the order requested.',
|
|
41
|
+
}),
|
|
42
|
+
(0, swagger_1.ApiParam)({
|
|
43
|
+
name: 'userId',
|
|
44
|
+
description: 'User identifier (max length: 64 characters)',
|
|
45
|
+
example: 'user-123',
|
|
46
|
+
}),
|
|
47
|
+
(0, swagger_1.ApiBody)({
|
|
48
|
+
type: batch_get_or_create_request_dto_1.BatchGetOrCreateRequestDto,
|
|
49
|
+
description: 'Array of item IDs to get or create',
|
|
50
|
+
}),
|
|
51
|
+
(0, swagger_1.ApiResponse)({
|
|
52
|
+
status: 200,
|
|
53
|
+
description: 'The dismissible items (retrieved or created)',
|
|
54
|
+
type: batch_get_or_create_response_dto_1.BatchGetOrCreateResponseDto,
|
|
55
|
+
}),
|
|
56
|
+
(0, swagger_1.ApiResponse)({
|
|
57
|
+
status: 400,
|
|
58
|
+
description: 'Invalid request (validation error)',
|
|
59
|
+
}),
|
|
60
|
+
(0, swagger_1.ApiResponse)({
|
|
61
|
+
status: 403,
|
|
62
|
+
description: 'Operation blocked by lifecycle hook',
|
|
63
|
+
}),
|
|
64
|
+
(0, common_1.UseFilters)(http_exception_filter_1.HttpExceptionFilter),
|
|
65
|
+
tslib_1.__param(0, (0, validation_1.UserId)()),
|
|
66
|
+
tslib_1.__param(1, (0, common_1.Body)()),
|
|
67
|
+
tslib_1.__param(2, (0, nestjs_request_1.RequestContext)()),
|
|
68
|
+
tslib_1.__metadata("design:type", Function),
|
|
69
|
+
tslib_1.__metadata("design:paramtypes", [String, batch_get_or_create_request_dto_1.BatchGetOrCreateRequestDto, Object]),
|
|
70
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
71
|
+
], BatchGetOrCreateController.prototype, "batchGetOrCreate", null);
|
|
72
|
+
exports.BatchGetOrCreateController = BatchGetOrCreateController = tslib_1.__decorate([
|
|
73
|
+
(0, swagger_1.ApiTags)(api_tags_constants_1.API_TAG_DISMISSIBLE),
|
|
74
|
+
(0, common_1.Controller)(BATCH_ROUTE),
|
|
75
|
+
tslib_1.__param(0, (0, common_1.Inject)(dismissible_service_interface_1.DISMISSIBLE_SERVICE)),
|
|
76
|
+
tslib_1.__param(1, (0, common_1.Inject)(dismissible_item_mapper_interface_1.DISMISSIBLE_ITEM_MAPPER)),
|
|
77
|
+
tslib_1.__param(2, (0, common_1.Inject)(response_service_interface_1.DISMISSIBLE_RESPONSE_SERVICE)),
|
|
78
|
+
tslib_1.__metadata("design:paramtypes", [Object, Object, Object])
|
|
79
|
+
], BatchGetOrCreateController);
|
|
80
|
+
//# sourceMappingURL=batch-get-or-create.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-get-or-create.controller.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/batch-get-or-create/batch-get-or-create.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAA4E;AAC5E,6CAAwF;AACxF,+FAGqD;AACrD,+FAGiD;AACjD,gEAA8E;AAC9E,uFAA+E;AAC/E,yFAAiF;AACjF,6FAGsD;AACtD,mFAA8E;AAC9E,8DAA4D;AAC5D,iDAA0C;AAE1C;;GAEG;AACH,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAE9C;;GAEG;AAGI,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrC,YAEmB,kBAAuC,EAEvC,MAA8B,EAE9B,eAAiC;QAJjC,uBAAkB,GAAlB,kBAAkB,CAAqB;QAEvC,WAAM,GAAN,MAAM,CAAwB;QAE9B,oBAAe,GAAf,eAAe,CAAkB;IACjD,CAAC;IA+BE,AAAN,KAAK,CAAC,gBAAgB,CACV,MAAc,EAChB,IAAgC,EACtB,OAAwB;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3F,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAElF,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AAlDY,gEAA0B;AAuC/B;IA7BL,IAAA,aAAI,GAAE;IACN,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,uCAAuC;QAChD,WAAW,EACT,4HAA4H;KAC/H,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,iBAAO,EAAC;QACP,IAAI,EAAE,4DAA0B;QAChC,WAAW,EAAE,oCAAoC;KAClD,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,8DAA2B;KAClC,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,oCAAoC;KAClD,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qCAAqC;KACnD,CAAC;IACD,IAAA,mBAAU,EAAC,2CAAmB,CAAC;IAE7B,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,aAAI,GAAE,CAAA;IACN,mBAAA,IAAA,+BAAc,GAAE,CAAA;;qDADH,4DAA0B;;kEAQzC;qCAjDU,0BAA0B;IAFtC,IAAA,iBAAO,EAAC,wCAAmB,CAAC;IAC5B,IAAA,mBAAU,EAAC,WAAW,CAAC;IAGnB,mBAAA,IAAA,eAAM,EAAC,mDAAmB,CAAC,CAAA;IAE3B,mBAAA,IAAA,eAAM,EAAC,2DAAuB,CAAC,CAAA;IAE/B,mBAAA,IAAA,eAAM,EAAC,yDAA4B,CAAC,CAAA;;GAN5B,0BAA0B,CAkDtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ts_jest_mocker_1 = require("ts-jest-mocker");
|
|
4
|
+
const batch_get_or_create_controller_1 = require("./batch-get-or-create.controller");
|
|
5
|
+
const dismissible_service_1 = require("../../../core/dismissible.service");
|
|
6
|
+
const dismissible_item_mapper_1 = require("../../dismissible-item.mapper");
|
|
7
|
+
const factories_1 = require("../../../testing/factories");
|
|
8
|
+
const response_1 = require("../../../response");
|
|
9
|
+
describe('BatchGetOrCreateController', () => {
|
|
10
|
+
let controller;
|
|
11
|
+
let mockService;
|
|
12
|
+
let mockResponseService;
|
|
13
|
+
let mapper;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
mockService = (0, ts_jest_mocker_1.mock)(dismissible_service_1.DismissibleService);
|
|
16
|
+
mockResponseService = (0, ts_jest_mocker_1.mock)(response_1.ResponseService, { failIfMockNotProvided: false });
|
|
17
|
+
mockResponseService.success.mockImplementation((data) => ({ data }));
|
|
18
|
+
mapper = new dismissible_item_mapper_1.DismissibleItemMapper();
|
|
19
|
+
controller = new batch_get_or_create_controller_1.BatchGetOrCreateController(mockService, mapper, mockResponseService);
|
|
20
|
+
});
|
|
21
|
+
describe('batchGetOrCreate', () => {
|
|
22
|
+
it('should return items wrapped in data', async () => {
|
|
23
|
+
const item1 = (0, factories_1.createTestItem)({ id: 'item-1' });
|
|
24
|
+
const item2 = (0, factories_1.createTestItem)({ id: 'item-2' });
|
|
25
|
+
const context = (0, factories_1.createTestContext)();
|
|
26
|
+
mockService.batchGetOrCreate.mockResolvedValue({
|
|
27
|
+
items: [item1, item2],
|
|
28
|
+
retrievedItems: [item1],
|
|
29
|
+
createdItems: [item2],
|
|
30
|
+
});
|
|
31
|
+
const result = await controller.batchGetOrCreate('test-user-id', { items: ['item-1', 'item-2'] }, context);
|
|
32
|
+
expect(result.data).toHaveLength(2);
|
|
33
|
+
expect(result.data[0].itemId).toBe('item-1');
|
|
34
|
+
expect(result.data[1].itemId).toBe('item-2');
|
|
35
|
+
expect(mockResponseService.success).toHaveBeenCalled();
|
|
36
|
+
expect(mockService.batchGetOrCreate).toHaveBeenCalledWith(['item-1', 'item-2'], 'test-user-id', context);
|
|
37
|
+
});
|
|
38
|
+
it('should handle single item request', async () => {
|
|
39
|
+
const item = (0, factories_1.createTestItem)({ id: 'single-item' });
|
|
40
|
+
const context = (0, factories_1.createTestContext)();
|
|
41
|
+
mockService.batchGetOrCreate.mockResolvedValue({
|
|
42
|
+
items: [item],
|
|
43
|
+
retrievedItems: [],
|
|
44
|
+
createdItems: [item],
|
|
45
|
+
});
|
|
46
|
+
const result = await controller.batchGetOrCreate('test-user-id', { items: ['single-item'] }, context);
|
|
47
|
+
expect(result.data).toHaveLength(1);
|
|
48
|
+
expect(result.data[0].itemId).toBe('single-item');
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=batch-get-or-create.controller.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-get-or-create.controller.spec.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/batch-get-or-create/batch-get-or-create.controller.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BatchGetOrCreateRequestDto = exports.BATCH_MAX_SIZE = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
6
|
+
const class_validator_1 = require("class-validator");
|
|
7
|
+
const dismissible_input_dto_1 = require("../../../validation/dismissible-input.dto");
|
|
8
|
+
/**
|
|
9
|
+
* Maximum number of items allowed in a batch request.
|
|
10
|
+
*/
|
|
11
|
+
exports.BATCH_MAX_SIZE = 50;
|
|
12
|
+
/**
|
|
13
|
+
* Request DTO for batch get-or-create operation.
|
|
14
|
+
*/
|
|
15
|
+
class BatchGetOrCreateRequestDto {
|
|
16
|
+
}
|
|
17
|
+
exports.BatchGetOrCreateRequestDto = BatchGetOrCreateRequestDto;
|
|
18
|
+
tslib_1.__decorate([
|
|
19
|
+
(0, swagger_1.ApiProperty)({
|
|
20
|
+
description: `Array of item IDs to get or create (max ${exports.BATCH_MAX_SIZE} items)`,
|
|
21
|
+
example: ['welcome-banner-v1', 'onboarding-tip-1', 'feature-announcement'],
|
|
22
|
+
type: [String],
|
|
23
|
+
minItems: 1,
|
|
24
|
+
maxItems: exports.BATCH_MAX_SIZE,
|
|
25
|
+
}),
|
|
26
|
+
(0, class_validator_1.IsArray)(),
|
|
27
|
+
(0, class_validator_1.ArrayMinSize)(1, { message: 'items array must contain at least 1 item' }),
|
|
28
|
+
(0, class_validator_1.ArrayMaxSize)(exports.BATCH_MAX_SIZE, {
|
|
29
|
+
message: `items array must contain at most ${exports.BATCH_MAX_SIZE} items`,
|
|
30
|
+
}),
|
|
31
|
+
(0, class_validator_1.IsString)({ each: true }),
|
|
32
|
+
(0, class_validator_1.IsNotEmpty)({ each: true, message: 'each item ID must not be empty' }),
|
|
33
|
+
(0, class_validator_1.MinLength)(dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_MIN_LENGTH, {
|
|
34
|
+
each: true,
|
|
35
|
+
message: `each item ID must be at least ${dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_MIN_LENGTH} character`,
|
|
36
|
+
}),
|
|
37
|
+
(0, class_validator_1.MaxLength)(dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_MAX_LENGTH, {
|
|
38
|
+
each: true,
|
|
39
|
+
message: `each item ID must be at most ${dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_MAX_LENGTH} characters`,
|
|
40
|
+
}),
|
|
41
|
+
(0, class_validator_1.Matches)(dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_PATTERN, {
|
|
42
|
+
each: true,
|
|
43
|
+
message: `each item ID ${dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_PATTERN_MESSAGE}`,
|
|
44
|
+
}),
|
|
45
|
+
tslib_1.__metadata("design:type", Array)
|
|
46
|
+
], BatchGetOrCreateRequestDto.prototype, "items", void 0);
|
|
47
|
+
//# sourceMappingURL=batch-get-or-create.request.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-get-or-create.request.dto.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/batch-get-or-create/batch-get-or-create.request.dto.ts"],"names":[],"mappings":";;;;AAAA,6CAA8C;AAC9C,qDASyB;AACzB,qFAAiF;AAEjF;;GAEG;AACU,QAAA,cAAc,GAAG,EAAE,CAAC;AAEjC;;GAEG;AACH,MAAa,0BAA0B;CA4BtC;AA5BD,gEA4BC;AADC;IA1BC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,2CAA2C,sBAAc,SAAS;QAC/E,OAAO,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,CAAC;QAC1E,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,sBAAc;KACzB,CAAC;IACD,IAAA,yBAAO,GAAE;IACT,IAAA,8BAAY,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC;IACxE,IAAA,8BAAY,EAAC,sBAAc,EAAE;QAC5B,OAAO,EAAE,oCAAoC,sBAAc,QAAQ;KACpE,CAAC;IACD,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,IAAA,4BAAU,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACrE,IAAA,2BAAS,EAAC,4CAAoB,CAAC,aAAa,EAAE;QAC7C,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,iCAAiC,4CAAoB,CAAC,aAAa,YAAY;KACzF,CAAC;IACD,IAAA,2BAAS,EAAC,4CAAoB,CAAC,aAAa,EAAE;QAC7C,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,gCAAgC,4CAAoB,CAAC,aAAa,aAAa;KACzF,CAAC;IACD,IAAA,yBAAO,EAAC,4CAAoB,CAAC,UAAU,EAAE;QACxC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,gBAAgB,4CAAoB,CAAC,kBAAkB,EAAE;KACnE,CAAC;;yDACe"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BatchGetOrCreateResponseDto = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
6
|
+
const dismissible_item_response_dto_1 = require("../../dismissible-item-response.dto");
|
|
7
|
+
/**
|
|
8
|
+
* Response DTO for the batch getOrCreate operation.
|
|
9
|
+
*/
|
|
10
|
+
class BatchGetOrCreateResponseDto {
|
|
11
|
+
}
|
|
12
|
+
exports.BatchGetOrCreateResponseDto = BatchGetOrCreateResponseDto;
|
|
13
|
+
tslib_1.__decorate([
|
|
14
|
+
(0, swagger_1.ApiProperty)({
|
|
15
|
+
description: 'Array of dismissible items (retrieved or created)',
|
|
16
|
+
type: [dismissible_item_response_dto_1.DismissibleItemResponseDto],
|
|
17
|
+
}),
|
|
18
|
+
tslib_1.__metadata("design:type", Array)
|
|
19
|
+
], BatchGetOrCreateResponseDto.prototype, "data", void 0);
|
|
20
|
+
//# sourceMappingURL=batch-get-or-create.response.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-get-or-create.response.dto.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/batch-get-or-create/batch-get-or-create.response.dto.ts"],"names":[],"mappings":";;;;AAAA,6CAA8C;AAC9C,uFAAiF;AAEjF;;GAEG;AACH,MAAa,2BAA2B;CAMvC;AAND,kEAMC;AADC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,CAAC,0DAA0B,CAAC;KACnC,CAAC;;yDACkC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./batch-get-or-create.request.dto"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./batch-get-or-create.response.dto"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./batch-get-or-create.controller"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/batch-get-or-create/index.ts"],"names":[],"mappings":";;;AAAA,4EAAkD;AAClD,6EAAmD;AACnD,2EAAiD"}
|
|
@@ -11,6 +11,7 @@ const dismiss_response_dto_1 = require("./dismiss.response.dto");
|
|
|
11
11
|
const response_service_interface_1 = require("../../../response/response.service.interface");
|
|
12
12
|
const http_exception_filter_1 = require("../../../response/http-exception-filter");
|
|
13
13
|
const api_tags_constants_1 = require("../api-tags.constants");
|
|
14
|
+
const api_constants_1 = require("../../api.constants");
|
|
14
15
|
const validation_1 = require("../../validation");
|
|
15
16
|
/**
|
|
16
17
|
* Controller for dismiss dismissible item operations.
|
|
@@ -28,7 +29,7 @@ let DismissController = class DismissController {
|
|
|
28
29
|
};
|
|
29
30
|
exports.DismissController = DismissController;
|
|
30
31
|
tslib_1.__decorate([
|
|
31
|
-
(0, common_1.Delete)(
|
|
32
|
+
(0, common_1.Delete)(),
|
|
32
33
|
(0, swagger_1.ApiOperation)({
|
|
33
34
|
summary: 'Dismiss an item',
|
|
34
35
|
description: 'Marks a dismissible item as dismissed.',
|
|
@@ -66,7 +67,7 @@ tslib_1.__decorate([
|
|
|
66
67
|
], DismissController.prototype, "dismiss", null);
|
|
67
68
|
exports.DismissController = DismissController = tslib_1.__decorate([
|
|
68
69
|
(0, swagger_1.ApiTags)(api_tags_constants_1.API_TAG_DISMISSIBLE),
|
|
69
|
-
(0, common_1.Controller)(
|
|
70
|
+
(0, common_1.Controller)(api_constants_1.DISMISSIBLE_DEFAULT_ROUTE),
|
|
70
71
|
tslib_1.__param(0, (0, common_1.Inject)(dismissible_service_interface_1.DISMISSIBLE_SERVICE)),
|
|
71
72
|
tslib_1.__param(1, (0, common_1.Inject)(dismissible_item_mapper_interface_1.DISMISSIBLE_ITEM_MAPPER)),
|
|
72
73
|
tslib_1.__param(2, (0, common_1.Inject)(response_service_interface_1.DISMISSIBLE_RESPONSE_SERVICE)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dismiss.controller.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/dismiss/dismiss.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAAwE;AACxE,6CAA+E;AAC/E,+FAGqD;AACrD,+FAGiD;AACjD,gEAA8E;AAC9E,iEAA4D;AAC5D,6FAGsD;AACtD,mFAA8E;AAC9E,8DAA4D;AAC5D,iDAAkD;AAElD;;GAEG;AAGI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAEmB,kBAAuC,EAEvC,MAA8B,EAE9B,eAAiC;QAJjC,uBAAkB,GAAlB,kBAAkB,CAAqB;QAEvC,WAAM,GAAN,MAAM,CAAwB;QAE9B,oBAAe,GAAf,eAAe,CAAkB;IACjD,CAAC;IA+BE,AAAN,KAAK,CAAC,OAAO,CACD,MAAc,EACd,MAAc,EACN,OAAwB;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9E,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AAhDY,8CAAiB;AAuCtB;IA7BL,IAAA,eAAM,
|
|
1
|
+
{"version":3,"file":"dismiss.controller.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/dismiss/dismiss.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAAwE;AACxE,6CAA+E;AAC/E,+FAGqD;AACrD,+FAGiD;AACjD,gEAA8E;AAC9E,iEAA4D;AAC5D,6FAGsD;AACtD,mFAA8E;AAC9E,8DAA4D;AAC5D,uDAAgE;AAChE,iDAAkD;AAElD;;GAEG;AAGI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAEmB,kBAAuC,EAEvC,MAA8B,EAE9B,eAAiC;QAJjC,uBAAkB,GAAlB,kBAAkB,CAAqB;QAEvC,WAAM,GAAN,MAAM,CAAwB;QAE9B,oBAAe,GAAf,eAAe,CAAkB;IACjD,CAAC;IA+BE,AAAN,KAAK,CAAC,OAAO,CACD,MAAc,EACd,MAAc,EACN,OAAwB;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9E,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AAhDY,8CAAiB;AAuCtB;IA7BL,IAAA,eAAM,GAAE;IACR,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,wCAAwC;KACtD,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wEAAwE;QACrF,OAAO,EAAE,mBAAmB;KAC7B,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,oBAAoB;QACjC,IAAI,EAAE,yCAAkB;KACzB,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qCAAqC;KACnD,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qCAAqC;KACnD,CAAC;IACD,IAAA,mBAAU,EAAC,2CAAmB,CAAC;IAE7B,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,+BAAc,GAAE,CAAA;;;;gDAKlB;4BA/CU,iBAAiB;IAF7B,IAAA,iBAAO,EAAC,wCAAmB,CAAC;IAC5B,IAAA,mBAAU,EAAC,yCAAyB,CAAC;IAGjC,mBAAA,IAAA,eAAM,EAAC,mDAAmB,CAAC,CAAA;IAE3B,mBAAA,IAAA,eAAM,EAAC,2DAAuB,CAAC,CAAA;IAE/B,mBAAA,IAAA,eAAM,EAAC,yDAA4B,CAAC,CAAA;;GAN5B,iBAAiB,CAgD7B"}
|
|
@@ -11,6 +11,7 @@ const get_or_create_response_dto_1 = require("./get-or-create.response.dto");
|
|
|
11
11
|
const response_service_interface_1 = require("../../../response/response.service.interface");
|
|
12
12
|
const http_exception_filter_1 = require("../../../response/http-exception-filter");
|
|
13
13
|
const api_tags_constants_1 = require("../api-tags.constants");
|
|
14
|
+
const api_constants_1 = require("../../api.constants");
|
|
14
15
|
const validation_1 = require("../../validation");
|
|
15
16
|
/**
|
|
16
17
|
* Controller for get-or-create dismissible item operations.
|
|
@@ -28,7 +29,7 @@ let GetOrCreateController = class GetOrCreateController {
|
|
|
28
29
|
};
|
|
29
30
|
exports.GetOrCreateController = GetOrCreateController;
|
|
30
31
|
tslib_1.__decorate([
|
|
31
|
-
(0, common_1.Get)(
|
|
32
|
+
(0, common_1.Get)(),
|
|
32
33
|
(0, swagger_1.ApiOperation)({
|
|
33
34
|
summary: 'Get or create a dismissible item',
|
|
34
35
|
description: 'Retrieves an existing dismissible item by ID, or creates a new one if it does not exist.',
|
|
@@ -62,7 +63,7 @@ tslib_1.__decorate([
|
|
|
62
63
|
], GetOrCreateController.prototype, "getOrCreate", null);
|
|
63
64
|
exports.GetOrCreateController = GetOrCreateController = tslib_1.__decorate([
|
|
64
65
|
(0, swagger_1.ApiTags)(api_tags_constants_1.API_TAG_DISMISSIBLE),
|
|
65
|
-
(0, common_1.Controller)(
|
|
66
|
+
(0, common_1.Controller)(api_constants_1.DISMISSIBLE_DEFAULT_ROUTE),
|
|
66
67
|
tslib_1.__param(0, (0, common_1.Inject)(dismissible_service_interface_1.DISMISSIBLE_SERVICE)),
|
|
67
68
|
tslib_1.__param(1, (0, common_1.Inject)(dismissible_item_mapper_interface_1.DISMISSIBLE_ITEM_MAPPER)),
|
|
68
69
|
tslib_1.__param(2, (0, common_1.Inject)(response_service_interface_1.DISMISSIBLE_RESPONSE_SERVICE)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-or-create.controller.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/get-or-create/get-or-create.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAAqE;AACrE,6CAA+E;AAC/E,+FAGqD;AACrD,+FAGiD;AACjD,gEAA8E;AAC9E,6EAAsE;AACtE,6FAGsD;AACtD,mFAA8E;AAC9E,8DAA4D;AAC5D,iDAAkD;AAElD;;GAEG;AAGI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,YAEmB,kBAAuC,EAEvC,MAA8B,EAE9B,eAAiC;QAJjC,uBAAkB,GAAlB,kBAAkB,CAAqB;QAEvC,WAAM,GAAN,MAAM,CAAwB;QAE9B,oBAAe,GAAf,eAAe,CAAkB;IACjD,CAAC;IA4BE,AAAN,KAAK,CAAC,WAAW,CACL,MAAc,EACd,MAAc,EACN,OAAwB;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAElF,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AA7CY,sDAAqB;AAoC1B;IA1BL,IAAA,YAAG,
|
|
1
|
+
{"version":3,"file":"get-or-create.controller.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/get-or-create/get-or-create.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAAqE;AACrE,6CAA+E;AAC/E,+FAGqD;AACrD,+FAGiD;AACjD,gEAA8E;AAC9E,6EAAsE;AACtE,6FAGsD;AACtD,mFAA8E;AAC9E,8DAA4D;AAC5D,uDAAgE;AAChE,iDAAkD;AAElD;;GAEG;AAGI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,YAEmB,kBAAuC,EAEvC,MAA8B,EAE9B,eAAiC;QAJjC,uBAAkB,GAAlB,kBAAkB,CAAqB;QAEvC,WAAM,GAAN,MAAM,CAAwB;QAE9B,oBAAe,GAAf,eAAe,CAAkB;IACjD,CAAC;IA4BE,AAAN,KAAK,CAAC,WAAW,CACL,MAAc,EACd,MAAc,EACN,OAAwB;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAElF,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AA7CY,sDAAqB;AAoC1B;IA1BL,IAAA,YAAG,GAAE;IACL,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,kCAAkC;QAC3C,WAAW,EACT,0FAA0F;KAC7F,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wEAAwE;QACrF,OAAO,EAAE,mBAAmB;KAC7B,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,mDAAsB;KAC7B,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qCAAqC;KACnD,CAAC;IACD,IAAA,mBAAU,EAAC,2CAAmB,CAAC;IAE7B,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,+BAAc,GAAE,CAAA;;;;wDAKlB;gCA5CU,qBAAqB;IAFjC,IAAA,iBAAO,EAAC,wCAAmB,CAAC;IAC5B,IAAA,mBAAU,EAAC,yCAAyB,CAAC;IAGjC,mBAAA,IAAA,eAAM,EAAC,mDAAmB,CAAC,CAAA;IAE3B,mBAAA,IAAA,eAAM,EAAC,2DAAuB,CAAC,CAAA;IAE/B,mBAAA,IAAA,eAAM,EAAC,yDAA4B,CAAC,CAAA;;GAN5B,qBAAqB,CA6CjC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./get-or-create"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./batch-get-or-create"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./dismiss"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./restore"), exports);
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/core/src/api/use-cases/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,oDAA0B;AAC1B,oDAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/core/src/api/use-cases/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,gEAAsC;AACtC,oDAA0B;AAC1B,oDAA0B"}
|
|
@@ -11,6 +11,7 @@ const restore_response_dto_1 = require("./restore.response.dto");
|
|
|
11
11
|
const response_service_interface_1 = require("../../../response/response.service.interface");
|
|
12
12
|
const http_exception_filter_1 = require("../../../response/http-exception-filter");
|
|
13
13
|
const api_tags_constants_1 = require("../api-tags.constants");
|
|
14
|
+
const api_constants_1 = require("../../api.constants");
|
|
14
15
|
const validation_1 = require("../../validation");
|
|
15
16
|
/**
|
|
16
17
|
* Controller for restore dismissible item operations.
|
|
@@ -28,7 +29,7 @@ let RestoreController = class RestoreController {
|
|
|
28
29
|
};
|
|
29
30
|
exports.RestoreController = RestoreController;
|
|
30
31
|
tslib_1.__decorate([
|
|
31
|
-
(0, common_1.Post)(
|
|
32
|
+
(0, common_1.Post)(),
|
|
32
33
|
(0, swagger_1.ApiOperation)({
|
|
33
34
|
summary: 'Restore a dismissed item',
|
|
34
35
|
description: 'Restores a previously dismissed item.',
|
|
@@ -66,7 +67,7 @@ tslib_1.__decorate([
|
|
|
66
67
|
], RestoreController.prototype, "restore", null);
|
|
67
68
|
exports.RestoreController = RestoreController = tslib_1.__decorate([
|
|
68
69
|
(0, swagger_1.ApiTags)(api_tags_constants_1.API_TAG_DISMISSIBLE),
|
|
69
|
-
(0, common_1.Controller)(
|
|
70
|
+
(0, common_1.Controller)(api_constants_1.DISMISSIBLE_DEFAULT_ROUTE),
|
|
70
71
|
tslib_1.__param(0, (0, common_1.Inject)(dismissible_service_interface_1.DISMISSIBLE_SERVICE)),
|
|
71
72
|
tslib_1.__param(1, (0, common_1.Inject)(dismissible_item_mapper_interface_1.DISMISSIBLE_ITEM_MAPPER)),
|
|
72
73
|
tslib_1.__param(2, (0, common_1.Inject)(response_service_interface_1.DISMISSIBLE_RESPONSE_SERVICE)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.controller.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/restore/restore.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAAsE;AACtE,6CAA+E;AAC/E,+FAGqD;AACrD,+FAGiD;AACjD,gEAA8E;AAC9E,iEAA4D;AAC5D,6FAGsD;AACtD,mFAA8E;AAC9E,8DAA4D;AAC5D,iDAAkD;AAElD;;GAEG;AAGI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAEmB,kBAAuC,EAEvC,MAA8B,EAE9B,eAAiC;QAJjC,uBAAkB,GAAlB,kBAAkB,CAAqB;QAEvC,WAAM,GAAN,MAAM,CAAwB;QAE9B,oBAAe,GAAf,eAAe,CAAkB;IACjD,CAAC;IA+BE,AAAN,KAAK,CAAC,OAAO,CACD,MAAc,EACd,MAAc,EACN,OAAwB;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9E,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AAhDY,8CAAiB;AAuCtB;IA7BL,IAAA,aAAI,
|
|
1
|
+
{"version":3,"file":"restore.controller.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/api/use-cases/restore/restore.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAAsE;AACtE,6CAA+E;AAC/E,+FAGqD;AACrD,+FAGiD;AACjD,gEAA8E;AAC9E,iEAA4D;AAC5D,6FAGsD;AACtD,mFAA8E;AAC9E,8DAA4D;AAC5D,uDAAgE;AAChE,iDAAkD;AAElD;;GAEG;AAGI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YAEmB,kBAAuC,EAEvC,MAA8B,EAE9B,eAAiC;QAJjC,uBAAkB,GAAlB,kBAAkB,CAAqB;QAEvC,WAAM,GAAN,MAAM,CAAwB;QAE9B,oBAAe,GAAf,eAAe,CAAkB;IACjD,CAAC;IA+BE,AAAN,KAAK,CAAC,OAAO,CACD,MAAc,EACd,MAAc,EACN,OAAwB;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9E,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AAhDY,8CAAiB;AAuCtB;IA7BL,IAAA,aAAI,GAAE;IACN,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,0BAA0B;QACnC,WAAW,EAAE,uCAAuC;KACrD,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wEAAwE;QACrF,OAAO,EAAE,mBAAmB;KAC7B,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,yCAAkB;KACzB,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,iCAAiC;KAC/C,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qCAAqC;KACnD,CAAC;IACD,IAAA,mBAAU,EAAC,2CAAmB,CAAC;IAE7B,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,+BAAc,GAAE,CAAA;;;;gDAKlB;4BA/CU,iBAAiB;IAF7B,IAAA,iBAAO,EAAC,wCAAmB,CAAC;IAC5B,IAAA,mBAAU,EAAC,yCAAyB,CAAC;IAGjC,mBAAA,IAAA,eAAM,EAAC,mDAAmB,CAAC,CAAA;IAE3B,mBAAA,IAAA,eAAM,EAAC,2DAAuB,CAAC,CAAA;IAE/B,mBAAA,IAAA,eAAM,EAAC,yDAA4B,CAAC,CAAA;;GAN5B,iBAAiB,CAgD7B"}
|