@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,554 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Filter = exports.FilterTypes = exports.Operator = void 0;
4
+ var Operator;
5
+ (function (Operator) {
6
+ Operator["EQUAL"] = "eq";
7
+ Operator["NOT_EQUAL"] = "neq";
8
+ Operator["NULL"] = "null";
9
+ Operator["NOT_NULL"] = "nnull";
10
+ Operator["LESS_THAN"] = "lt";
11
+ Operator["LESS_THAN_OR_EQUAL"] = "lte";
12
+ Operator["GREATER_THAN"] = "gt";
13
+ Operator["GREATER_THAN_OR_EQUAL"] = "gte";
14
+ Operator["START_WITH"] = "sw";
15
+ Operator["END_WITH"] = "ew";
16
+ Operator["CONTAIN"] = "ct";
17
+ Operator["IS"] = "is";
18
+ Operator["IS_NOT"] = "isnot";
19
+ Operator["IN"] = "in";
20
+ Operator["NIN"] = "nin";
21
+ Operator["AND:EQUAL"] = "a:eq";
22
+ Operator["AND:NOT_EQUAL"] = "a:neq";
23
+ Operator["AND:NULL"] = "a:null";
24
+ Operator["AND:NOT_NULL"] = "a:nnull";
25
+ Operator["AND:LESS_THAN"] = "a:lt";
26
+ Operator["AND:LESS_THAN_OR_EQUAL"] = "a:lte";
27
+ Operator["AND:GREATER_THAN"] = "a:gt";
28
+ Operator["AND:GREATER_THAN_OR_EQUAL"] = "a:gte";
29
+ Operator["AND:START_WITH"] = "a:sw";
30
+ Operator["AND:END_WITH"] = "a:ew";
31
+ Operator["AND:CONTAIN"] = "a:ct";
32
+ Operator["AND:IS"] = "a:is";
33
+ Operator["AND:IS_NOT"] = "a:isnot";
34
+ Operator["OR:EQUAL"] = "o:eq";
35
+ Operator["OR:NOT_EQUAL"] = "o:neq";
36
+ Operator["OR:NULL"] = "o:null";
37
+ Operator["OR:NOT_NULL"] = "o:nnull";
38
+ Operator["OR:LESS_THAN"] = "o:lt";
39
+ Operator["OR:LESS_THAN_OR_EQUAL"] = "o:lte";
40
+ Operator["OR:GREATER_THAN"] = "o:gt";
41
+ Operator["OR:GREATER_THAN_OR_EQUAL"] = "o:gte";
42
+ Operator["OR:START_WITH"] = "o:sw";
43
+ Operator["OR:END_WITH"] = "o:ew";
44
+ Operator["OR:CONTAIN"] = "o:ct";
45
+ Operator["OR:IS"] = "o:is";
46
+ Operator["OR:IS_NOT"] = "o:isnot";
47
+ })(Operator = exports.Operator || (exports.Operator = {}));
48
+ var FilterTypes;
49
+ (function (FilterTypes) {
50
+ FilterTypes[FilterTypes["LOGICAL"] = 0] = "LOGICAL";
51
+ FilterTypes[FilterTypes["NUMERIC"] = 1] = "NUMERIC";
52
+ FilterTypes[FilterTypes["STRING"] = 2] = "STRING";
53
+ FilterTypes[FilterTypes["BOOLEAN"] = 3] = "BOOLEAN";
54
+ FilterTypes[FilterTypes["ARRAY"] = 4] = "ARRAY";
55
+ })(FilterTypes = exports.FilterTypes || (exports.FilterTypes = {}));
56
+ class Filter {
57
+ constructor({ type, operator, value, compareField, requiredFields, handler, }) {
58
+ // Revert transfromation form aqua-ddd
59
+ operator = operator.replace('$', '');
60
+ this.type = type;
61
+ this.operator = operator;
62
+ this.value = value;
63
+ this.compareField = compareField;
64
+ this.requiredFields = requiredFields ?? (this.compareField ? [this.compareField] : undefined);
65
+ this.handler = handler;
66
+ }
67
+ apply(query, compareField, getFieldAlias) {
68
+ if (!compareField)
69
+ compareField = this.compareField;
70
+ if (this.handler) {
71
+ this.handler(query, this.operator, this.value, compareField);
72
+ return;
73
+ }
74
+ if (this.type === FilterTypes.LOGICAL) {
75
+ logicalOperatorHandler(query, this.operator, this.value, getFieldAlias);
76
+ }
77
+ else if (compareField !== undefined) {
78
+ if (getFieldAlias)
79
+ compareField = getFieldAlias(compareField);
80
+ let value = this.value;
81
+ // Transform value to array for multiple operators
82
+ if ([
83
+ Operator.IS,
84
+ Operator['AND:IS'],
85
+ Operator['OR:IS'],
86
+ Operator.IS_NOT,
87
+ Operator['AND:IS_NOT'],
88
+ Operator['OR:IS_NOT'],
89
+ Operator.IN,
90
+ Operator.NIN,
91
+ ].includes(this.operator)) {
92
+ if (typeof this.value === 'string')
93
+ value = this.value.trim().split(',');
94
+ if (!Array.isArray(value))
95
+ throw new Error('Value of multiple operator must is array');
96
+ }
97
+ // Process handler of filter
98
+ switch (this.type) {
99
+ case FilterTypes.NUMERIC:
100
+ numericOperatorHandler(query, this.operator, value, compareField);
101
+ break;
102
+ case FilterTypes.STRING:
103
+ stringOperatorHandler(query, this.operator, value, compareField);
104
+ break;
105
+ case FilterTypes.BOOLEAN:
106
+ booleanOperatorHandler(query, this.operator, value, compareField);
107
+ break;
108
+ case FilterTypes.ARRAY:
109
+ arrayOperatorHandler(query, this.operator, value, compareField);
110
+ break;
111
+ }
112
+ }
113
+ }
114
+ }
115
+ exports.Filter = Filter;
116
+ const logicalOperatorHandler = (query, operator, value, getFieldAlias) => {
117
+ switch (operator) {
118
+ case 'and': {
119
+ if (!Array.isArray(value))
120
+ throw new Error('Value of operator "and" must is filter');
121
+ value.forEach((childFilter) => {
122
+ if (childFilter instanceof Filter)
123
+ query.where((builder) => {
124
+ childFilter.apply(builder, undefined, getFieldAlias);
125
+ });
126
+ else
127
+ throw new Error('Value of operator "and" must is array of filter');
128
+ });
129
+ break;
130
+ }
131
+ case 'or': {
132
+ if (!Array.isArray(value))
133
+ throw new Error('Value of operator "or" must is filter');
134
+ value.forEach((childFilter) => {
135
+ if (childFilter instanceof Filter)
136
+ query.orWhere((builder) => {
137
+ childFilter.apply(builder, undefined, getFieldAlias);
138
+ });
139
+ else
140
+ throw new Error('Value of operator "or" must is array of filter');
141
+ });
142
+ break;
143
+ }
144
+ default:
145
+ throw new Error(`Operator "${operator}" isn't locgical operator`);
146
+ }
147
+ };
148
+ const numericOperatorHandler = (query, operator, value, compareField) => {
149
+ switch (operator) {
150
+ case Operator.EQUAL:
151
+ case Operator['AND:EQUAL']: {
152
+ query.where(compareField, '=', value);
153
+ break;
154
+ }
155
+ case Operator.NOT_EQUAL:
156
+ case Operator['AND:NOT_EQUAL']: {
157
+ query.where(compareField, '<>', value);
158
+ break;
159
+ }
160
+ case Operator.LESS_THAN:
161
+ case Operator['AND:LESS_THAN']: {
162
+ query.where(compareField, '<', value);
163
+ break;
164
+ }
165
+ case Operator.LESS_THAN_OR_EQUAL:
166
+ case Operator['AND:LESS_THAN_OR_EQUAL']: {
167
+ query.where(compareField, '<=', value);
168
+ break;
169
+ }
170
+ case Operator.GREATER_THAN:
171
+ case Operator['AND:GREATER_THAN']: {
172
+ query.where(compareField, '>', value);
173
+ break;
174
+ }
175
+ case Operator.GREATER_THAN_OR_EQUAL:
176
+ case Operator['AND:GREATER_THAN_OR_EQUAL']: {
177
+ query.where(compareField, '>=', value);
178
+ break;
179
+ }
180
+ case Operator.NULL:
181
+ case Operator['AND:NULL']: {
182
+ query.whereNull(compareField);
183
+ break;
184
+ }
185
+ case Operator.NOT_NULL:
186
+ case Operator['AND:NOT_NULL']: {
187
+ query.whereNotNull(compareField);
188
+ break;
189
+ }
190
+ case Operator['OR:EQUAL']: {
191
+ query.orWhere(compareField, '=', value);
192
+ break;
193
+ }
194
+ case Operator['OR:NOT_EQUAL']: {
195
+ query.orWhere(compareField, '<>', value);
196
+ break;
197
+ }
198
+ case Operator['OR:LESS_THAN']: {
199
+ query.orWhere(compareField, '<', value);
200
+ break;
201
+ }
202
+ case Operator['OR:LESS_THAN_OR_EQUAL']: {
203
+ query.orWhere(compareField, '<=', value);
204
+ break;
205
+ }
206
+ case Operator['OR:GREATER_THAN']: {
207
+ query.orWhere(compareField, '>', value);
208
+ break;
209
+ }
210
+ case Operator['OR:GREATER_THAN_OR_EQUAL']: {
211
+ query.orWhere(compareField, '>=', value);
212
+ break;
213
+ }
214
+ case Operator['OR:NULL']: {
215
+ query.orWhereNull(compareField);
216
+ break;
217
+ }
218
+ case Operator['OR:NOT_NULL']: {
219
+ query.orWhereNotNull(compareField);
220
+ break;
221
+ }
222
+ case Operator.IN:
223
+ case Operator.IS:
224
+ case Operator['AND:IS']: {
225
+ query.whereIn(compareField, value);
226
+ break;
227
+ }
228
+ case Operator['OR:IS']: {
229
+ query.orWhereIn(compareField, value);
230
+ break;
231
+ }
232
+ case Operator.NIN:
233
+ case Operator.IS_NOT:
234
+ case Operator['AND:IS_NOT']: {
235
+ query.whereNotIn(compareField, value);
236
+ break;
237
+ }
238
+ case Operator['OR:IS_NOT']: {
239
+ query.orWhereNotIn(compareField, value);
240
+ break;
241
+ }
242
+ default:
243
+ throw new Error(`Operator "${operator}" isn't numeric operator`);
244
+ }
245
+ };
246
+ const stringOperatorHandler = (query, operator, value, compareField) => {
247
+ if (typeof value === 'string')
248
+ value = value.trim();
249
+ switch (operator) {
250
+ case Operator.EQUAL:
251
+ case Operator['AND:EQUAL']: {
252
+ query.where(compareField, '=', value);
253
+ break;
254
+ }
255
+ case Operator.NOT_EQUAL:
256
+ case Operator['AND:NOT_EQUAL']: {
257
+ query.where(compareField, '<>', value);
258
+ break;
259
+ }
260
+ case Operator.CONTAIN:
261
+ case Operator['AND:CONTAIN']: {
262
+ query.whereILike(compareField, `%${value?.trim()}%`);
263
+ break;
264
+ }
265
+ case Operator.START_WITH:
266
+ case Operator['AND:START_WITH']: {
267
+ query.whereILike(compareField, `${value}%`);
268
+ break;
269
+ }
270
+ case Operator.END_WITH:
271
+ case Operator['AND:END_WITH']: {
272
+ query.whereILike(compareField, `%${value}`);
273
+ break;
274
+ }
275
+ case Operator.NULL:
276
+ case Operator['AND:NULL']: {
277
+ query.whereNull(compareField);
278
+ break;
279
+ }
280
+ case Operator.NOT_NULL:
281
+ case Operator['AND:NOT_NULL']: {
282
+ query.whereNotNull(compareField);
283
+ break;
284
+ }
285
+ case Operator['OR:EQUAL']: {
286
+ query.orWhere(compareField, '=', value);
287
+ break;
288
+ }
289
+ case Operator['OR:NOT_EQUAL']: {
290
+ query.orWhere(compareField, '<>', value);
291
+ break;
292
+ }
293
+ case Operator['OR:CONTAIN']: {
294
+ query.orWhereILike(compareField, `%${value?.trim()}%`);
295
+ break;
296
+ }
297
+ case Operator['OR:START_WITH']: {
298
+ query.orWhereILike(compareField, `${value}%`);
299
+ break;
300
+ }
301
+ case Operator['OR:END_WITH']: {
302
+ query.orWhereILike(compareField, `%${value}`);
303
+ break;
304
+ }
305
+ case Operator['OR:NULL']: {
306
+ query.orWhereNull(compareField);
307
+ break;
308
+ }
309
+ case Operator['OR:NOT_NULL']: {
310
+ query.orWhereNotNull(compareField);
311
+ break;
312
+ }
313
+ case Operator.IN:
314
+ case Operator.IS:
315
+ case Operator['AND:IS']: {
316
+ query.whereIn(compareField, value);
317
+ break;
318
+ }
319
+ case Operator['OR:IS']: {
320
+ query.orWhereIn(compareField, value);
321
+ break;
322
+ }
323
+ case Operator.NIN:
324
+ case Operator.IS_NOT:
325
+ case Operator['AND:IS_NOT']: {
326
+ query.whereNotIn(compareField, value);
327
+ break;
328
+ }
329
+ case Operator['OR:IS_NOT']: {
330
+ query.orWhereNotIn(compareField, value);
331
+ break;
332
+ }
333
+ case Operator.LESS_THAN:
334
+ case Operator['AND:LESS_THAN']: {
335
+ query.where(compareField, '<', value);
336
+ break;
337
+ }
338
+ case Operator.LESS_THAN_OR_EQUAL:
339
+ case Operator['AND:LESS_THAN_OR_EQUAL']: {
340
+ query.where(compareField, '<=', value);
341
+ break;
342
+ }
343
+ case Operator.GREATER_THAN:
344
+ case Operator['AND:GREATER_THAN']: {
345
+ query.where(compareField, '>', value);
346
+ break;
347
+ }
348
+ case Operator.GREATER_THAN_OR_EQUAL:
349
+ case Operator['AND:GREATER_THAN_OR_EQUAL']: {
350
+ query.where(compareField, '>=', value);
351
+ break;
352
+ }
353
+ case Operator['OR:LESS_THAN']: {
354
+ query.orWhere(compareField, '<', value);
355
+ break;
356
+ }
357
+ case Operator['OR:LESS_THAN_OR_EQUAL']: {
358
+ query.orWhere(compareField, '<=', value);
359
+ break;
360
+ }
361
+ case Operator['OR:GREATER_THAN']: {
362
+ query.orWhere(compareField, '>', value);
363
+ break;
364
+ }
365
+ case Operator['OR:GREATER_THAN_OR_EQUAL']: {
366
+ query.orWhere(compareField, '>', value);
367
+ break;
368
+ }
369
+ default:
370
+ throw new Error(`Operator "${operator}" isn't string operator`);
371
+ }
372
+ };
373
+ const booleanOperatorHandler = (query, operator, value, compareField) => {
374
+ switch (operator) {
375
+ case Operator.EQUAL:
376
+ case Operator['AND:EQUAL']: {
377
+ query.where(compareField, '=', value);
378
+ break;
379
+ }
380
+ case Operator.NOT_EQUAL:
381
+ case Operator['AND:NOT_EQUAL']: {
382
+ query.where(compareField, '<>', value);
383
+ break;
384
+ }
385
+ case Operator.NULL:
386
+ case Operator['AND:NULL']: {
387
+ query.whereNull(compareField);
388
+ break;
389
+ }
390
+ case Operator.NOT_NULL:
391
+ case Operator['AND:NOT_NULL']: {
392
+ query.whereNotNull(compareField);
393
+ break;
394
+ }
395
+ case Operator['OR:EQUAL']: {
396
+ query.orWhere(compareField, '=', value);
397
+ break;
398
+ }
399
+ case Operator['OR:NOT_EQUAL']: {
400
+ query.orWhere(compareField, '<>', value);
401
+ break;
402
+ }
403
+ case Operator['OR:NULL']: {
404
+ query.orWhereNull(compareField);
405
+ break;
406
+ }
407
+ case Operator['OR:NOT_NULL']: {
408
+ query.orWhereNotNull(compareField);
409
+ break;
410
+ }
411
+ case Operator.IN:
412
+ case Operator.IS:
413
+ case Operator['AND:IS']: {
414
+ query.whereIn(compareField, value);
415
+ break;
416
+ }
417
+ case Operator['OR:IS']: {
418
+ query.orWhereIn(compareField, value);
419
+ break;
420
+ }
421
+ case Operator.NIN:
422
+ case Operator.IS_NOT:
423
+ case Operator['AND:IS_NOT']: {
424
+ query.whereNotIn(compareField, value);
425
+ break;
426
+ }
427
+ case Operator['OR:IS_NOT']: {
428
+ query.orWhereNotIn(compareField, value);
429
+ break;
430
+ }
431
+ default:
432
+ throw new Error(`Operator "${operator}" isn't boolean operator`);
433
+ }
434
+ };
435
+ const arrayOperatorHandler = (query, operator, value, compareField) => {
436
+ if (typeof value === 'string')
437
+ value = value.trim();
438
+ switch (operator) {
439
+ case Operator.EQUAL:
440
+ case Operator['AND:EQUAL']: {
441
+ query.whereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field = ?)`, [
442
+ compareField,
443
+ value,
444
+ ]);
445
+ break;
446
+ }
447
+ case Operator.NOT_EQUAL:
448
+ case Operator['AND:NOT_EQUAL']: {
449
+ query.whereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field <> ?)`, [
450
+ compareField,
451
+ value,
452
+ ]);
453
+ break;
454
+ }
455
+ case Operator.CONTAIN:
456
+ case Operator['AND:CONTAIN']: {
457
+ query.whereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field ilike ?)`, [
458
+ compareField,
459
+ `%${value}%`,
460
+ ]);
461
+ break;
462
+ }
463
+ case Operator.START_WITH:
464
+ case Operator['AND:START_WITH']: {
465
+ query.whereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field ilike ?)`, [
466
+ compareField,
467
+ `${value}%`,
468
+ ]);
469
+ break;
470
+ }
471
+ case Operator.END_WITH:
472
+ case Operator['AND:END_WITH']: {
473
+ query.whereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field ilike ?)`, [
474
+ compareField,
475
+ `%${value}`,
476
+ ]);
477
+ break;
478
+ }
479
+ case Operator.NULL:
480
+ case Operator['AND:NULL']: {
481
+ query.whereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field is null ?)`, [compareField, value]);
482
+ break;
483
+ }
484
+ case Operator.NOT_NULL:
485
+ case Operator['AND:NOT_NULL']: {
486
+ query.whereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field notnull ?)`, [compareField, value]);
487
+ break;
488
+ }
489
+ case Operator['OR:EQUAL']: {
490
+ query.orWhereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field = ?)`, [
491
+ compareField,
492
+ value,
493
+ ]);
494
+ break;
495
+ }
496
+ case Operator['OR:NOT_EQUAL']: {
497
+ query.orWhereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field <> ?)`, [
498
+ compareField,
499
+ value,
500
+ ]);
501
+ break;
502
+ }
503
+ case Operator['OR:CONTAIN']: {
504
+ query.orWhereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field ilike ?)`, [compareField, `%${value}%`]);
505
+ break;
506
+ }
507
+ case Operator['OR:START_WITH']: {
508
+ query.orWhereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field ilike ?)`, [compareField, `${value}%`]);
509
+ break;
510
+ }
511
+ case Operator['OR:END_WITH']: {
512
+ query.orWhereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field ilike ?)`, [compareField, `%${value}`]);
513
+ break;
514
+ }
515
+ case Operator['OR:NULL']: {
516
+ query.orWhereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field is null ?)`, [compareField, value]);
517
+ break;
518
+ }
519
+ case Operator['OR:NOT_NULL']: {
520
+ query.orWhereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field notnull ?)`, [compareField, value]);
521
+ break;
522
+ }
523
+ case Operator.IN:
524
+ case Operator.IS:
525
+ case Operator['AND:IS']: {
526
+ query.whereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field in (${value
527
+ .map(() => '?')
528
+ .join(',')}))`, [compareField, ...value]);
529
+ break;
530
+ }
531
+ case Operator['OR:IS']: {
532
+ query.orWhereRaw(`exists (select 1 from unnest(??) as compare_field where compare_field in (${value
533
+ .map(() => '?')
534
+ .join(',')}))`, [compareField, ...value]);
535
+ break;
536
+ }
537
+ case Operator.NIN:
538
+ case Operator.IS_NOT:
539
+ case Operator['AND:IS_NOT']: {
540
+ query.whereRaw(`not exists (select 1 from unnest(??) as compare_field where compare_field in (${value
541
+ .map(() => '?')
542
+ .join(',')}))`, [compareField, ...value]);
543
+ break;
544
+ }
545
+ case Operator['OR:IS_NOT']: {
546
+ query.orWhereRaw(`not exists (select 1 from unnest(??) as compare_field where compare_field in (${value
547
+ .map(() => '?')
548
+ .join(',')}))`, [compareField, ...value]);
549
+ break;
550
+ }
551
+ default:
552
+ throw new Error(`Operator "${operator}" isn't array operator`);
553
+ }
554
+ };
@@ -0,0 +1 @@
1
+ export * from './filter';
@@ -0,0 +1,17 @@
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("./filter"), exports);
@@ -0,0 +1,5 @@
1
+ export * from './constants';
2
+ export * from './configs';
3
+ export * from './core';
4
+ export * from './interfaces';
5
+ export * from './types';
@@ -0,0 +1,21 @@
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("./constants"), exports);
18
+ __exportStar(require("./configs"), exports);
19
+ __exportStar(require("./core"), exports);
20
+ __exportStar(require("./interfaces"), exports);
21
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,5 @@
1
+ import { QueryInputFindOne, RepositoryOptions, Optional } from '@cbidigital/aqua-ddd';
2
+ import { AmbassadorDto } from './ambassador-usecase.interface';
3
+ export interface IAmbassadorDao {
4
+ findOne(payload?: QueryInputFindOne<AmbassadorDto>, options?: RepositoryOptions): Promise<Optional<AmbassadorDto>>;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ import { IUseCase, UseCaseContext } from '@cbidigital/aqua-ddd';
2
+ export interface AmbassadorDto {
3
+ id: string;
4
+ ambassadorDiscountValue?: number;
5
+ ambassadorDiscountValueType?: string;
6
+ ambassadorMetric?: Array<{
7
+ socialUsername?: string;
8
+ [key: string]: any;
9
+ }>;
10
+ [key: string]: any;
11
+ }
12
+ export type GetAmbassadorByIdUseCaseInput = {
13
+ id: string;
14
+ };
15
+ export type GetAmbassadorByIdUseCaseOutput = Partial<AmbassadorDto>;
16
+ export type IGetAmbassadorByIdUseCase = IUseCase<GetAmbassadorByIdUseCaseInput, GetAmbassadorByIdUseCaseOutput, UseCaseContext>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export interface ICampaignService {
2
+ [key: string]: any;
3
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Interface for Campaign Service
3
+ // This should be implemented by the consuming application
4
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ export * from './ambassador-dao.interface';
2
+ export * from './ambassador-usecase.interface';
3
+ export * from './post-product-dao.interface';
4
+ export * from './product-service.interface';
5
+ export * from './ugc-management-service.interface';
6
+ export * from './campaign-service.interface';
@@ -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("./ambassador-dao.interface"), exports);
18
+ __exportStar(require("./ambassador-usecase.interface"), exports);
19
+ __exportStar(require("./post-product-dao.interface"), exports);
20
+ __exportStar(require("./product-service.interface"), exports);
21
+ __exportStar(require("./ugc-management-service.interface"), exports);
22
+ __exportStar(require("./campaign-service.interface"), exports);
@@ -0,0 +1,8 @@
1
+ import { IBaseDao } from '@cbidigital/aqua-ddd';
2
+ export interface PostProductDto {
3
+ id: string;
4
+ postId: string;
5
+ productId: string;
6
+ ambassadorId: string;
7
+ }
8
+ export type IPostProductDao = IBaseDao<PostProductDto, any>;