@buunguyen3589/collections-module 1.0.0

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 (213) hide show
  1. package/dist/app/index.d.ts +1 -0
  2. package/dist/app/index.js +17 -0
  3. package/dist/app/usecases/command/create-collection.usecase.d.ts +16 -0
  4. package/dist/app/usecases/command/create-collection.usecase.js +66 -0
  5. package/dist/app/usecases/command/delete-collection.usecase.d.ts +13 -0
  6. package/dist/app/usecases/command/delete-collection.usecase.js +57 -0
  7. package/dist/app/usecases/command/index.d.ts +5 -0
  8. package/dist/app/usecases/command/index.js +21 -0
  9. package/dist/app/usecases/command/post-collection/index.d.ts +1 -0
  10. package/dist/app/usecases/command/post-collection/index.js +17 -0
  11. package/dist/app/usecases/command/post-collection/upsert-post-collection.usecase.d.ts +14 -0
  12. package/dist/app/usecases/command/post-collection/upsert-post-collection.usecase.js +63 -0
  13. package/dist/app/usecases/command/product-collection/add-all-products-collection.usecase.d.ts +24 -0
  14. package/dist/app/usecases/command/product-collection/add-all-products-collection.usecase.js +93 -0
  15. package/dist/app/usecases/command/product-collection/create-product-collection.usecase.d.ts +24 -0
  16. package/dist/app/usecases/command/product-collection/create-product-collection.usecase.js +94 -0
  17. package/dist/app/usecases/command/product-collection/delete-product-collection.usecase.d.ts +14 -0
  18. package/dist/app/usecases/command/product-collection/delete-product-collection.usecase.js +56 -0
  19. package/dist/app/usecases/command/product-collection/index.d.ts +3 -0
  20. package/dist/app/usecases/command/product-collection/index.js +19 -0
  21. package/dist/app/usecases/command/update-collection.usecase.d.ts +15 -0
  22. package/dist/app/usecases/command/update-collection.usecase.js +73 -0
  23. package/dist/app/usecases/index.d.ts +2 -0
  24. package/dist/app/usecases/index.js +18 -0
  25. package/dist/app/usecases/query/get-detail-collection.usecase.d.ts +36 -0
  26. package/dist/app/usecases/query/get-detail-collection.usecase.js +216 -0
  27. package/dist/app/usecases/query/get-list-collection.usecase.d.ts +23 -0
  28. package/dist/app/usecases/query/get-list-collection.usecase.js +96 -0
  29. package/dist/app/usecases/query/get-products-by-collections-internal.usecase.d.ts +19 -0
  30. package/dist/app/usecases/query/get-products-by-collections-internal.usecase.js +65 -0
  31. package/dist/app/usecases/query/get-products-by-collections.usecase.d.ts +44 -0
  32. package/dist/app/usecases/query/get-products-by-collections.usecase.js +130 -0
  33. package/dist/app/usecases/query/index.d.ts +4 -0
  34. package/dist/app/usecases/query/index.js +20 -0
  35. package/dist/collection.module.d.ts +2 -0
  36. package/dist/collection.module.js +62 -0
  37. package/dist/domain/aggregates/enums/collection.enum.d.ts +5 -0
  38. package/dist/domain/aggregates/enums/collection.enum.js +9 -0
  39. package/dist/domain/aggregates/enums/index.d.ts +1 -0
  40. package/dist/domain/aggregates/enums/index.js +17 -0
  41. package/dist/domain/aggregates/index.d.ts +2 -0
  42. package/dist/domain/aggregates/index.js +18 -0
  43. package/dist/domain/aggregates/types/collection.type.d.ts +14 -0
  44. package/dist/domain/aggregates/types/collection.type.js +2 -0
  45. package/dist/domain/aggregates/types/index.d.ts +3 -0
  46. package/dist/domain/aggregates/types/index.js +19 -0
  47. package/dist/domain/aggregates/types/post-collection.type.d.ts +12 -0
  48. package/dist/domain/aggregates/types/post-collection.type.js +2 -0
  49. package/dist/domain/aggregates/types/product-collection.type.d.ts +11 -0
  50. package/dist/domain/aggregates/types/product-collection.type.js +2 -0
  51. package/dist/domain/builders/collection.builder.d.ts +8 -0
  52. package/dist/domain/builders/collection.builder.js +38 -0
  53. package/dist/domain/builders/index.d.ts +3 -0
  54. package/dist/domain/builders/index.js +19 -0
  55. package/dist/domain/builders/post-collection.builder.d.ts +8 -0
  56. package/dist/domain/builders/post-collection.builder.js +38 -0
  57. package/dist/domain/builders/product-collection.builder.d.ts +8 -0
  58. package/dist/domain/builders/product-collection.builder.js +38 -0
  59. package/dist/domain/consts/event-collection.name.const.d.ts +5 -0
  60. package/dist/domain/consts/event-collection.name.const.js +8 -0
  61. package/dist/domain/consts/event-post-collection.name.const.d.ts +6 -0
  62. package/dist/domain/consts/event-post-collection.name.const.js +9 -0
  63. package/dist/domain/consts/event-product-collection.name.const.d.ts +5 -0
  64. package/dist/domain/consts/event-product-collection.name.const.js +8 -0
  65. package/dist/domain/consts/index.d.ts +3 -0
  66. package/dist/domain/consts/index.js +19 -0
  67. package/dist/domain/dtos/collection.dto.d.ts +4 -0
  68. package/dist/domain/dtos/collection.dto.js +2 -0
  69. package/dist/domain/dtos/index.d.ts +3 -0
  70. package/dist/domain/dtos/index.js +19 -0
  71. package/dist/domain/dtos/post-collection.dto.d.ts +4 -0
  72. package/dist/domain/dtos/post-collection.dto.js +2 -0
  73. package/dist/domain/dtos/product-collection.dto.d.ts +4 -0
  74. package/dist/domain/dtos/product-collection.dto.js +2 -0
  75. package/dist/domain/entities/collection.entity.d.ts +40 -0
  76. package/dist/domain/entities/collection.entity.js +87 -0
  77. package/dist/domain/entities/index.d.ts +3 -0
  78. package/dist/domain/entities/index.js +19 -0
  79. package/dist/domain/entities/post-collection.entity.d.ts +33 -0
  80. package/dist/domain/entities/post-collection.entity.js +70 -0
  81. package/dist/domain/entities/product-collection.entity.d.ts +30 -0
  82. package/dist/domain/entities/product-collection.entity.js +55 -0
  83. package/dist/domain/index.d.ts +6 -0
  84. package/dist/domain/index.js +22 -0
  85. package/dist/domain/mappers/collection.mapper.d.ts +11 -0
  86. package/dist/domain/mappers/collection.mapper.js +56 -0
  87. package/dist/domain/mappers/index.d.ts +3 -0
  88. package/dist/domain/mappers/index.js +19 -0
  89. package/dist/domain/mappers/post-collection.mapper.d.ts +11 -0
  90. package/dist/domain/mappers/post-collection.mapper.js +50 -0
  91. package/dist/domain/mappers/product-collection.mapper.d.ts +11 -0
  92. package/dist/domain/mappers/product-collection.mapper.js +48 -0
  93. package/dist/domain/repositories/collection.repository.d.ts +21 -0
  94. package/dist/domain/repositories/collection.repository.js +93 -0
  95. package/dist/domain/repositories/index.d.ts +3 -0
  96. package/dist/domain/repositories/index.js +19 -0
  97. package/dist/domain/repositories/post-collection.repository.d.ts +21 -0
  98. package/dist/domain/repositories/post-collection.repository.js +107 -0
  99. package/dist/domain/repositories/product-collection.repository.d.ts +21 -0
  100. package/dist/domain/repositories/product-collection.repository.js +98 -0
  101. package/dist/index.d.ts +5 -0
  102. package/dist/index.js +23 -0
  103. package/dist/infra/daos/collection.dao.d.ts +7 -0
  104. package/dist/infra/daos/collection.dao.js +36 -0
  105. package/dist/infra/daos/index.d.ts +3 -0
  106. package/dist/infra/daos/index.js +19 -0
  107. package/dist/infra/daos/post-collection.dao.d.ts +10 -0
  108. package/dist/infra/daos/post-collection.dao.js +70 -0
  109. package/dist/infra/daos/product-collection.dao.d.ts +9 -0
  110. package/dist/infra/daos/product-collection.dao.js +69 -0
  111. package/dist/infra/event-handlers/collection.event-emitter.d.ts +6 -0
  112. package/dist/infra/event-handlers/collection.event-emitter.js +27 -0
  113. package/dist/infra/event-handlers/index.d.ts +3 -0
  114. package/dist/infra/event-handlers/index.js +19 -0
  115. package/dist/infra/event-handlers/post-collection.event-emitter.d.ts +6 -0
  116. package/dist/infra/event-handlers/post-collection.event-emitter.js +27 -0
  117. package/dist/infra/event-handlers/product-collection.event-emitter.d.ts +6 -0
  118. package/dist/infra/event-handlers/product-collection.event-emitter.js +27 -0
  119. package/dist/infra/filters/collection.filter.d.ts +25 -0
  120. package/dist/infra/filters/collection.filter.js +84 -0
  121. package/dist/infra/filters/index.d.ts +3 -0
  122. package/dist/infra/filters/index.js +19 -0
  123. package/dist/infra/filters/post-collection.filter.d.ts +16 -0
  124. package/dist/infra/filters/post-collection.filter.js +54 -0
  125. package/dist/infra/filters/product-collection.filter.d.ts +13 -0
  126. package/dist/infra/filters/product-collection.filter.js +44 -0
  127. package/dist/infra/index.d.ts +6 -0
  128. package/dist/infra/index.js +22 -0
  129. package/dist/infra/mappers/collection.mapper.d.ts +8 -0
  130. package/dist/infra/mappers/collection.mapper.js +31 -0
  131. package/dist/infra/mappers/index.d.ts +3 -0
  132. package/dist/infra/mappers/index.js +19 -0
  133. package/dist/infra/mappers/post-collection.mapper.d.ts +8 -0
  134. package/dist/infra/mappers/post-collection.mapper.js +25 -0
  135. package/dist/infra/mappers/product-collection.mapper.d.ts +8 -0
  136. package/dist/infra/mappers/product-collection.mapper.js +24 -0
  137. package/dist/infra/query-configs/collection.query-config.d.ts +3 -0
  138. package/dist/infra/query-configs/collection.query-config.js +46 -0
  139. package/dist/infra/query-configs/index.d.ts +3 -0
  140. package/dist/infra/query-configs/index.js +19 -0
  141. package/dist/infra/query-configs/post-collection.query-config.d.ts +3 -0
  142. package/dist/infra/query-configs/post-collection.query-config.js +31 -0
  143. package/dist/infra/query-configs/product-collection.query-config.d.ts +3 -0
  144. package/dist/infra/query-configs/product-collection.query-config.js +26 -0
  145. package/dist/infra/records/collection.record.d.ts +11 -0
  146. package/dist/infra/records/collection.record.js +2 -0
  147. package/dist/infra/records/index.d.ts +3 -0
  148. package/dist/infra/records/index.js +19 -0
  149. package/dist/infra/records/post-collection.record.d.ts +7 -0
  150. package/dist/infra/records/post-collection.record.js +2 -0
  151. package/dist/infra/records/product-collection.record.d.ts +7 -0
  152. package/dist/infra/records/product-collection.record.js +2 -0
  153. package/dist/presentation/controllers/index.d.ts +2 -0
  154. package/dist/presentation/controllers/index.js +18 -0
  155. package/dist/presentation/controllers/internals/index.d.ts +1 -0
  156. package/dist/presentation/controllers/internals/index.js +17 -0
  157. package/dist/presentation/controllers/internals/product-collection.internal.rest.d.ts +8 -0
  158. package/dist/presentation/controllers/internals/product-collection.internal.rest.js +45 -0
  159. package/dist/presentation/controllers/storefront/collection.storefront.rest.d.ts +26 -0
  160. package/dist/presentation/controllers/storefront/collection.storefront.rest.js +155 -0
  161. package/dist/presentation/controllers/storefront/index.d.ts +3 -0
  162. package/dist/presentation/controllers/storefront/index.js +19 -0
  163. package/dist/presentation/controllers/storefront/post-collection.storefront.d.ts +7 -0
  164. package/dist/presentation/controllers/storefront/post-collection.storefront.js +37 -0
  165. package/dist/presentation/controllers/storefront/product-collection.storefront.rest.d.ts +5 -0
  166. package/dist/presentation/controllers/storefront/product-collection.storefront.rest.js +50 -0
  167. package/dist/presentation/index.d.ts +1 -0
  168. package/dist/presentation/index.js +17 -0
  169. package/dist/shared/configs/index.d.ts +1 -0
  170. package/dist/shared/configs/index.js +17 -0
  171. package/dist/shared/configs/pagination.config.d.ts +4 -0
  172. package/dist/shared/configs/pagination.config.js +7 -0
  173. package/dist/shared/constants/collection-inject-tokens.const.d.ts +56 -0
  174. package/dist/shared/constants/collection-inject-tokens.const.js +61 -0
  175. package/dist/shared/constants/collection-table-names.const.d.ts +12 -0
  176. package/dist/shared/constants/collection-table-names.const.js +16 -0
  177. package/dist/shared/constants/component-inject-tokens.const.d.ts +7 -0
  178. package/dist/shared/constants/component-inject-tokens.const.js +11 -0
  179. package/dist/shared/constants/error-codes.const.d.ts +6 -0
  180. package/dist/shared/constants/error-codes.const.js +10 -0
  181. package/dist/shared/constants/index.d.ts +4 -0
  182. package/dist/shared/constants/index.js +21 -0
  183. package/dist/shared/core/filter.d.ts +80 -0
  184. package/dist/shared/core/filter.js +554 -0
  185. package/dist/shared/core/index.d.ts +1 -0
  186. package/dist/shared/core/index.js +17 -0
  187. package/dist/shared/index.d.ts +5 -0
  188. package/dist/shared/index.js +21 -0
  189. package/dist/shared/interfaces/ambassador-dao.interface.d.ts +5 -0
  190. package/dist/shared/interfaces/ambassador-dao.interface.js +2 -0
  191. package/dist/shared/interfaces/ambassador-usecase.interface.d.ts +16 -0
  192. package/dist/shared/interfaces/ambassador-usecase.interface.js +2 -0
  193. package/dist/shared/interfaces/campaign-service.interface.d.ts +3 -0
  194. package/dist/shared/interfaces/campaign-service.interface.js +4 -0
  195. package/dist/shared/interfaces/index.d.ts +6 -0
  196. package/dist/shared/interfaces/index.js +22 -0
  197. package/dist/shared/interfaces/post-product-dao.interface.d.ts +8 -0
  198. package/dist/shared/interfaces/post-product-dao.interface.js +2 -0
  199. package/dist/shared/interfaces/product-service.interface.d.ts +6 -0
  200. package/dist/shared/interfaces/product-service.interface.js +2 -0
  201. package/dist/shared/interfaces/ugc-management-service.interface.d.ts +11 -0
  202. package/dist/shared/interfaces/ugc-management-service.interface.js +2 -0
  203. package/dist/shared/types/common.type.d.ts +4 -0
  204. package/dist/shared/types/common.type.js +2 -0
  205. package/dist/shared/types/discount.enum.d.ts +4 -0
  206. package/dist/shared/types/discount.enum.js +8 -0
  207. package/dist/shared/types/index.d.ts +4 -0
  208. package/dist/shared/types/index.js +20 -0
  209. package/dist/shared/types/shopify.type.d.ts +28 -0
  210. package/dist/shared/types/shopify.type.js +2 -0
  211. package/dist/shared/types/ugc.type.d.ts +41 -0
  212. package/dist/shared/types/ugc.type.js +2 -0
  213. package/package.json +56 -0
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./collection.dto"), exports);
18
+ __exportStar(require("./product-collection.dto"), exports);
19
+ __exportStar(require("./post-collection.dto"), exports);
@@ -0,0 +1,4 @@
1
+ import { PostCollectionProps } from "../entities";
2
+ export type PostCollectionDto = PostCollectionProps & {
3
+ id: string;
4
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import { ProductCollectionProps } from '../entities';
2
+ export type ProductCollectionDto = ProductCollectionProps & {
3
+ id: string;
4
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,40 @@
1
+ import { AggregateRoot, AggregateRootConstructorPayload, IAggregateRoot } from '@cbidigital/aqua-ddd';
2
+ import { CollectionTypeEnum, CreateCollectionInput, UpdateCollectionInput } from '../aggregates';
3
+ export type CollectionProps = {
4
+ ambassadorId: string;
5
+ collectionName: string;
6
+ collectionType: CollectionTypeEnum;
7
+ description: string;
8
+ isFavorite: boolean;
9
+ createdAt: Date;
10
+ updatedAt: Date;
11
+ };
12
+ export type CollectionMethods = {
13
+ create(payload: CreateCollectionInput): Promise<void>;
14
+ update(payload: UpdateCollectionInput): Promise<void>;
15
+ delete(): Promise<void>;
16
+ };
17
+ export type ICollection = IAggregateRoot<CollectionProps, CollectionMethods>;
18
+ export declare class Collection extends AggregateRoot<CollectionProps, CollectionMethods> implements ICollection {
19
+ static AGGREGATE_NAME: string;
20
+ constructor(payload: AggregateRootConstructorPayload<CollectionProps>);
21
+ /** Props **/
22
+ get ambassadorId(): string;
23
+ get collectionName(): string;
24
+ get collectionType(): CollectionTypeEnum;
25
+ get description(): string;
26
+ get isFavorite(): boolean;
27
+ get createdAt(): Date;
28
+ get updatedAt(): Date;
29
+ /** Methods **/
30
+ private setAmbassadorId;
31
+ private setCollectionName;
32
+ private setCollectionType;
33
+ private setDescription;
34
+ private setIsFavorite;
35
+ private setCreatedAt;
36
+ private setUpdatedAt;
37
+ create(payload: CreateCollectionInput): Promise<void>;
38
+ update(payload: UpdateCollectionInput): Promise<void>;
39
+ delete(): Promise<void>;
40
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Collection = void 0;
4
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
5
+ const aqua_1 = require("@cbidigital/aqua");
6
+ const consts_1 = require("../consts");
7
+ class Collection extends aqua_ddd_1.AggregateRoot {
8
+ constructor(payload) {
9
+ super(payload);
10
+ }
11
+ /** Props **/
12
+ get ambassadorId() {
13
+ return this.props.ambassadorId;
14
+ }
15
+ get collectionName() {
16
+ return this.props.collectionName;
17
+ }
18
+ get collectionType() {
19
+ return this.props.collectionType;
20
+ }
21
+ get description() {
22
+ return this.props.description;
23
+ }
24
+ get isFavorite() {
25
+ return this.props.isFavorite;
26
+ }
27
+ get createdAt() {
28
+ return this.props.createdAt;
29
+ }
30
+ get updatedAt() {
31
+ return this.props.updatedAt;
32
+ }
33
+ /** Methods **/
34
+ setAmbassadorId(payload) {
35
+ if (payload !== undefined)
36
+ this.setProp('ambassadorId', payload);
37
+ }
38
+ setCollectionName(payload) {
39
+ if (payload !== undefined)
40
+ this.setProp('collectionName', payload);
41
+ }
42
+ setCollectionType(payload) {
43
+ if (payload !== undefined)
44
+ this.setProp('collectionType', payload);
45
+ }
46
+ setDescription(payload) {
47
+ if (payload !== undefined)
48
+ this.setProp('description', payload);
49
+ }
50
+ setIsFavorite(payload) {
51
+ if (payload !== undefined)
52
+ this.setProp('isFavorite', payload);
53
+ }
54
+ setCreatedAt(payload) {
55
+ if (payload !== undefined)
56
+ this.setProp('createdAt', payload);
57
+ }
58
+ setUpdatedAt(payload) {
59
+ if (payload !== undefined)
60
+ this.setProp('updatedAt', payload);
61
+ }
62
+ async create(payload) {
63
+ this.setId(aqua_1.EntityIdUtil.randomUUID());
64
+ this.setAmbassadorId(payload.ambassadorId);
65
+ this.setCollectionName(payload.collectionName);
66
+ this.setCollectionType(payload.collectionType);
67
+ this.setDescription(payload.description);
68
+ this.setIsFavorite(payload.isFavorite);
69
+ this.setCreatedAt(new Date());
70
+ this.setUpdatedAt(new Date());
71
+ this.addDomainEvent(consts_1.EVENT_COLLECTION_NAMES.CREATE);
72
+ }
73
+ async update(payload) {
74
+ this.setCollectionName(payload.collectionName);
75
+ this.setCollectionType(payload.collectionType);
76
+ this.setAmbassadorId(payload.ambassadorId);
77
+ this.setDescription(payload.description);
78
+ this.setIsFavorite(payload.isFavorite);
79
+ this.setUpdatedAt(new Date());
80
+ this.addDomainEvent(consts_1.EVENT_COLLECTION_NAMES.UPDATE);
81
+ }
82
+ async delete() {
83
+ this.addDomainEvent(consts_1.EVENT_COLLECTION_NAMES.DELETE);
84
+ }
85
+ }
86
+ exports.Collection = Collection;
87
+ Collection.AGGREGATE_NAME = 'COLLECTION';
@@ -0,0 +1,3 @@
1
+ export * from './collection.entity';
2
+ export * from './product-collection.entity';
3
+ export * from './post-collection.entity';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./collection.entity"), exports);
18
+ __exportStar(require("./product-collection.entity"), exports);
19
+ __exportStar(require("./post-collection.entity"), exports);
@@ -0,0 +1,33 @@
1
+ import { AggregateRoot, AggregateRootConstructorPayload, IAggregateRoot } from '@cbidigital/aqua-ddd';
2
+ import { CreatePostCollectionInput, UpdatePostCollectionInput } from '../aggregates';
3
+ export type PostCollectionProps = {
4
+ ambassadorId: string;
5
+ collectionId: string;
6
+ postId: string;
7
+ hidden: boolean;
8
+ };
9
+ export type PostCollectionMethods = {
10
+ create(payload: CreatePostCollectionInput): Promise<void>;
11
+ update(payload: UpdatePostCollectionInput): Promise<void>;
12
+ upsert(payload: UpdatePostCollectionInput): Promise<void>;
13
+ delete(): Promise<void>;
14
+ };
15
+ export type IPostCollection = IAggregateRoot<PostCollectionProps, PostCollectionMethods>;
16
+ export declare class PostCollection extends AggregateRoot<PostCollectionProps, PostCollectionMethods> implements IPostCollection {
17
+ static AGGREGATE_NAME: string;
18
+ constructor(payload: AggregateRootConstructorPayload<PostCollectionProps>);
19
+ /** Props **/
20
+ get ambassadorId(): string;
21
+ get collectionId(): string;
22
+ get postId(): string;
23
+ get hidden(): boolean;
24
+ /** Methods **/
25
+ private setAmbassadorId;
26
+ private setCollectionId;
27
+ private setPostId;
28
+ private setHidden;
29
+ create(payload: CreatePostCollectionInput): Promise<void>;
30
+ upsert(payload: UpdatePostCollectionInput): Promise<void>;
31
+ update(payload: UpdatePostCollectionInput): Promise<void>;
32
+ delete(): Promise<void>;
33
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PostCollection = void 0;
4
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
5
+ const aqua_1 = require("@cbidigital/aqua");
6
+ const consts_1 = require("../consts");
7
+ class PostCollection extends aqua_ddd_1.AggregateRoot {
8
+ constructor(payload) {
9
+ super(payload);
10
+ }
11
+ /** Props **/
12
+ get ambassadorId() {
13
+ return this.props.ambassadorId;
14
+ }
15
+ get collectionId() {
16
+ return this.props.collectionId;
17
+ }
18
+ get postId() {
19
+ return this.props.postId;
20
+ }
21
+ get hidden() {
22
+ return this.props.hidden;
23
+ }
24
+ /** Methods **/
25
+ setAmbassadorId(payload) {
26
+ if (payload !== undefined)
27
+ this.setProp('ambassadorId', payload);
28
+ }
29
+ setCollectionId(payload) {
30
+ if (payload !== undefined)
31
+ this.setProp('collectionId', payload);
32
+ }
33
+ setPostId(payload) {
34
+ if (payload !== undefined)
35
+ this.setProp('postId', payload);
36
+ }
37
+ setHidden(payload) {
38
+ if (payload !== undefined)
39
+ this.setProp('hidden', payload);
40
+ }
41
+ async create(payload) {
42
+ this.setId(aqua_1.EntityIdUtil.randomUUID());
43
+ this.setAmbassadorId(payload.ambassadorId);
44
+ this.setCollectionId(payload.collectionId);
45
+ this.setPostId(payload.postId);
46
+ this.setHidden(payload.hidden);
47
+ this.addDomainEvent(consts_1.EVENT_POST_COLLECTION_NAMES.CREATE);
48
+ }
49
+ async upsert(payload) {
50
+ if (!payload?.id)
51
+ this.setId(aqua_1.EntityIdUtil.randomUUID());
52
+ this.setCollectionId(payload.collectionId);
53
+ this.setAmbassadorId(payload.ambassadorId);
54
+ this.setPostId(payload.postId);
55
+ this.setHidden(payload.hidden);
56
+ this.addDomainEvent(consts_1.EVENT_POST_COLLECTION_NAMES.UPSERT);
57
+ }
58
+ async update(payload) {
59
+ this.setCollectionId(payload.collectionId);
60
+ this.setAmbassadorId(payload.ambassadorId);
61
+ this.setPostId(payload.postId);
62
+ this.setHidden(payload.hidden);
63
+ this.addDomainEvent(consts_1.EVENT_POST_COLLECTION_NAMES.UPDATE);
64
+ }
65
+ async delete() {
66
+ this.addDomainEvent(consts_1.EVENT_POST_COLLECTION_NAMES.DELETE);
67
+ }
68
+ }
69
+ exports.PostCollection = PostCollection;
70
+ PostCollection.AGGREGATE_NAME = 'POST_COLLECTION';
@@ -0,0 +1,30 @@
1
+ import { AggregateRoot, AggregateRootConstructorPayload, IAggregateRoot } from '@cbidigital/aqua-ddd';
2
+ import { CreateProductCollectionInput, UpdateProductCollectionInput } from '../aggregates';
3
+ export type ProductCollectionProps = {
4
+ productId: string;
5
+ collectionId: string;
6
+ ambassadorId: string;
7
+ collectionName?: string;
8
+ };
9
+ export type ProductCollectionMethods = {
10
+ create(payload: CreateProductCollectionInput): Promise<void>;
11
+ update(payload: UpdateProductCollectionInput): Promise<void>;
12
+ delete(): Promise<void>;
13
+ };
14
+ export type IProductCollection = IAggregateRoot<ProductCollectionProps, ProductCollectionMethods>;
15
+ export declare class ProductCollection extends AggregateRoot<ProductCollectionProps, ProductCollectionMethods> implements IProductCollection {
16
+ static AGGREGATE_NAME: string;
17
+ constructor(payload: AggregateRootConstructorPayload<ProductCollectionProps>);
18
+ /** Props **/
19
+ get productId(): string;
20
+ get collectionId(): string;
21
+ get ambassadorId(): string;
22
+ get collectionName(): string | undefined;
23
+ /** Methods **/
24
+ private setProductId;
25
+ private setCollectionId;
26
+ private setAmbassadorId;
27
+ create(payload: CreateProductCollectionInput): Promise<void>;
28
+ update(payload: UpdateProductCollectionInput): Promise<void>;
29
+ delete(): Promise<void>;
30
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProductCollection = void 0;
4
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
5
+ const aqua_1 = require("@cbidigital/aqua");
6
+ const consts_1 = require("../consts");
7
+ class ProductCollection extends aqua_ddd_1.AggregateRoot {
8
+ constructor(payload) {
9
+ super(payload);
10
+ }
11
+ /** Props **/
12
+ get productId() {
13
+ return this.props.productId;
14
+ }
15
+ get collectionId() {
16
+ return this.props.collectionId;
17
+ }
18
+ get ambassadorId() {
19
+ return this.props.ambassadorId;
20
+ }
21
+ get collectionName() {
22
+ return this.props.collectionName;
23
+ }
24
+ /** Methods **/
25
+ setProductId(payload) {
26
+ if (payload !== undefined)
27
+ this.setProp('productId', payload);
28
+ }
29
+ setCollectionId(payload) {
30
+ if (payload !== undefined)
31
+ this.setProp('collectionId', payload);
32
+ }
33
+ setAmbassadorId(payload) {
34
+ if (payload !== undefined)
35
+ this.setProp('ambassadorId', payload);
36
+ }
37
+ async create(payload) {
38
+ this.setId(aqua_1.EntityIdUtil.randomUUID());
39
+ this.setProductId(payload.productId);
40
+ this.setCollectionId(payload.collectionId);
41
+ this.setAmbassadorId(payload.ambassadorId);
42
+ this.addDomainEvent(consts_1.EVENT_PRODUCT_COLLECTION_NAMES.CREATE);
43
+ }
44
+ async update(payload) {
45
+ this.setProductId(payload.productId);
46
+ this.setCollectionId(payload.collectionId);
47
+ this.setAmbassadorId(payload.ambassadorId);
48
+ this.addDomainEvent(consts_1.EVENT_PRODUCT_COLLECTION_NAMES.UPDATE);
49
+ }
50
+ async delete() {
51
+ this.addDomainEvent(consts_1.EVENT_PRODUCT_COLLECTION_NAMES.DELETE);
52
+ }
53
+ }
54
+ exports.ProductCollection = ProductCollection;
55
+ ProductCollection.AGGREGATE_NAME = 'PRODUCT_COLLECTION';
@@ -0,0 +1,6 @@
1
+ export * from './entities';
2
+ export * from './builders';
3
+ export * from './mappers';
4
+ export * from './dtos';
5
+ export * from './repositories';
6
+ export * from './aggregates';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./entities"), exports);
18
+ __exportStar(require("./builders"), exports);
19
+ __exportStar(require("./mappers"), exports);
20
+ __exportStar(require("./dtos"), exports);
21
+ __exportStar(require("./repositories"), exports);
22
+ __exportStar(require("./aggregates"), exports);
@@ -0,0 +1,11 @@
1
+ import { BaseMapper, IMapper } from '@cbidigital/aqua-ddd';
2
+ import { CollectionDto } from '../dtos';
3
+ import { ICollection } from '../entities';
4
+ import { ICollectionBuilder } from '../builders';
5
+ export type ICollectionMapper = IMapper<CollectionDto, ICollection>;
6
+ export declare class CollectionMapper extends BaseMapper implements ICollectionMapper {
7
+ protected readonly tierBuilder: ICollectionBuilder;
8
+ constructor(tierBuilder: ICollectionBuilder);
9
+ fromEntityToDto(entity: ICollection): Promise<CollectionDto>;
10
+ fromDtoToEntity(dto: CollectionDto): Promise<ICollection>;
11
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.CollectionMapper = void 0;
16
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
17
+ const common_1 = require("@heronjs/common");
18
+ const shared_1 = require("../../shared");
19
+ let CollectionMapper = class CollectionMapper extends aqua_ddd_1.BaseMapper {
20
+ constructor(tierBuilder) {
21
+ super();
22
+ this.tierBuilder = tierBuilder;
23
+ }
24
+ async fromEntityToDto(entity) {
25
+ return {
26
+ id: entity.id,
27
+ ambassadorId: entity.ambassadorId,
28
+ collectionName: entity.collectionName,
29
+ collectionType: entity.collectionType,
30
+ description: entity.description,
31
+ isFavorite: entity.isFavorite,
32
+ createdAt: entity.createdAt,
33
+ updatedAt: entity.updatedAt,
34
+ };
35
+ }
36
+ async fromDtoToEntity(dto) {
37
+ return this.tierBuilder.build({
38
+ id: dto.id,
39
+ props: {
40
+ ambassadorId: dto.ambassadorId,
41
+ collectionName: dto.collectionName,
42
+ collectionType: dto.collectionType,
43
+ description: dto.description,
44
+ isFavorite: dto.isFavorite,
45
+ createdAt: dto.createdAt,
46
+ updatedAt: dto.updatedAt,
47
+ },
48
+ });
49
+ }
50
+ };
51
+ CollectionMapper = __decorate([
52
+ (0, common_1.Provider)({ token: shared_1.COLLECTION_INJECT_TOKENS.MAPPER.COLLECTION, scope: common_1.Lifecycle.Singleton }),
53
+ __param(0, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.BUILDER.COLLECTION)),
54
+ __metadata("design:paramtypes", [Object])
55
+ ], CollectionMapper);
56
+ exports.CollectionMapper = CollectionMapper;
@@ -0,0 +1,3 @@
1
+ export * from './collection.mapper';
2
+ export * from './product-collection.mapper';
3
+ export * from './post-collection.mapper';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./collection.mapper"), exports);
18
+ __exportStar(require("./product-collection.mapper"), exports);
19
+ __exportStar(require("./post-collection.mapper"), exports);
@@ -0,0 +1,11 @@
1
+ import { BaseMapper, IMapper } from '@cbidigital/aqua-ddd';
2
+ import { IPostCollection } from '../entities';
3
+ import { PostCollectionDto } from '../dtos';
4
+ import { IPostCollectionBuilder } from '../builders';
5
+ export type IPostCollectionMapper = IMapper<PostCollectionDto, IPostCollection>;
6
+ export declare class PostCollectionMapper extends BaseMapper implements IPostCollectionMapper {
7
+ protected readonly postCollectionBuilder: IPostCollectionBuilder;
8
+ constructor(postCollectionBuilder: IPostCollectionBuilder);
9
+ fromEntityToDto(entity: IPostCollection): Promise<PostCollectionDto>;
10
+ fromDtoToEntity(dto: PostCollectionDto): Promise<IPostCollection>;
11
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.PostCollectionMapper = void 0;
16
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
17
+ const common_1 = require("@heronjs/common");
18
+ const shared_1 = require("../../shared");
19
+ let PostCollectionMapper = class PostCollectionMapper extends aqua_ddd_1.BaseMapper {
20
+ constructor(postCollectionBuilder) {
21
+ super();
22
+ this.postCollectionBuilder = postCollectionBuilder;
23
+ }
24
+ async fromEntityToDto(entity) {
25
+ return {
26
+ id: entity.id,
27
+ collectionId: entity.collectionId,
28
+ ambassadorId: entity.ambassadorId,
29
+ postId: entity.postId,
30
+ hidden: entity.hidden,
31
+ };
32
+ }
33
+ async fromDtoToEntity(dto) {
34
+ return this.postCollectionBuilder.build({
35
+ id: dto.id,
36
+ props: {
37
+ collectionId: dto.collectionId,
38
+ ambassadorId: dto.ambassadorId,
39
+ postId: dto.postId,
40
+ hidden: dto.hidden,
41
+ },
42
+ });
43
+ }
44
+ };
45
+ PostCollectionMapper = __decorate([
46
+ (0, common_1.Provider)({ token: shared_1.COLLECTION_INJECT_TOKENS.MAPPER.POST_COLLECTION, scope: common_1.Lifecycle.Singleton }),
47
+ __param(0, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.BUILDER.POST_COLLECTION)),
48
+ __metadata("design:paramtypes", [Object])
49
+ ], PostCollectionMapper);
50
+ exports.PostCollectionMapper = PostCollectionMapper;
@@ -0,0 +1,11 @@
1
+ import { BaseMapper, IMapper } from '@cbidigital/aqua-ddd';
2
+ import { ProductCollectionDto } from '../dtos';
3
+ import { IProductCollection } from '../entities';
4
+ import { IProductCollectionBuilder } from '../builders';
5
+ export type IProductCollectionMapper = IMapper<ProductCollectionDto, IProductCollection>;
6
+ export declare class ProductCollectionMapper extends BaseMapper implements IProductCollectionMapper {
7
+ protected readonly tierBuilder: IProductCollectionBuilder;
8
+ constructor(tierBuilder: IProductCollectionBuilder);
9
+ fromEntityToDto(entity: IProductCollection): Promise<ProductCollectionDto>;
10
+ fromDtoToEntity(dto: ProductCollectionDto): Promise<IProductCollection>;
11
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ProductCollectionMapper = void 0;
16
+ const aqua_ddd_1 = require("@cbidigital/aqua-ddd");
17
+ const common_1 = require("@heronjs/common");
18
+ const shared_1 = require("../../shared");
19
+ let ProductCollectionMapper = class ProductCollectionMapper extends aqua_ddd_1.BaseMapper {
20
+ constructor(tierBuilder) {
21
+ super();
22
+ this.tierBuilder = tierBuilder;
23
+ }
24
+ async fromEntityToDto(entity) {
25
+ return {
26
+ id: entity.id,
27
+ productId: entity.productId,
28
+ collectionId: entity.collectionId,
29
+ ambassadorId: entity.ambassadorId,
30
+ };
31
+ }
32
+ async fromDtoToEntity(dto) {
33
+ return this.tierBuilder.build({
34
+ id: dto.id,
35
+ props: {
36
+ productId: dto.productId,
37
+ collectionId: dto.collectionId,
38
+ ambassadorId: dto.ambassadorId,
39
+ },
40
+ });
41
+ }
42
+ };
43
+ ProductCollectionMapper = __decorate([
44
+ (0, common_1.Provider)({ token: shared_1.COLLECTION_INJECT_TOKENS.MAPPER.PRODUCT_COLLECTION, scope: common_1.Lifecycle.Singleton }),
45
+ __param(0, (0, common_1.Inject)(shared_1.COLLECTION_INJECT_TOKENS.BUILDER.PRODUCT_COLLECTION)),
46
+ __metadata("design:paramtypes", [Object])
47
+ ], ProductCollectionMapper);
48
+ exports.ProductCollectionMapper = ProductCollectionMapper;
@@ -0,0 +1,21 @@
1
+ import { BaseRepository, IDatabase, IRepository, QueryInput, QueryInputFindOne, RepositoryOptions } from '@cbidigital/aqua-ddd';
2
+ import { Optional } from '@heronjs/common';
3
+ import { CollectionDao } from '../../infra';
4
+ import { ICollection } from '../entities';
5
+ import { ICollectionMapper } from '../mappers';
6
+ export interface ICollectionRepository extends IRepository<ICollection, RepositoryOptions> {
7
+ }
8
+ export declare class CollectionRepository extends BaseRepository<ICollection> implements ICollectionRepository {
9
+ protected readonly db: IDatabase;
10
+ protected readonly collectionDao: CollectionDao;
11
+ protected readonly collectionMapper: ICollectionMapper;
12
+ constructor(db: IDatabase, collectionDao: CollectionDao, collectionMapper: ICollectionMapper);
13
+ create(entity: ICollection, options?: RepositoryOptions): Promise<ICollection>;
14
+ createList(entities: ICollection[], options?: RepositoryOptions): Promise<ICollection[]>;
15
+ update(entity: ICollection, options?: RepositoryOptions): Promise<ICollection>;
16
+ updateList(entities: ICollection[], options?: RepositoryOptions): Promise<ICollection[]>;
17
+ delete(entity: ICollection, options?: RepositoryOptions): Promise<ICollection>;
18
+ deleteList(entities: ICollection[], options?: RepositoryOptions): Promise<ICollection[]>;
19
+ find(input: QueryInput, options?: RepositoryOptions): Promise<ICollection[]>;
20
+ findOne(input: QueryInputFindOne, options?: RepositoryOptions): Promise<Optional<ICollection>>;
21
+ }