@monorise/core 0.0.1-dev.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 (202) hide show
  1. package/dist/configs/service.config.d.ts +5 -0
  2. package/dist/configs/service.config.d.ts.map +1 -0
  3. package/dist/configs/service.config.js +5 -0
  4. package/dist/configs/service.config.js.map +1 -0
  5. package/dist/constants/table.d.ts +4 -0
  6. package/dist/constants/table.d.ts.map +1 -0
  7. package/dist/constants/table.js +4 -0
  8. package/dist/constants/table.js.map +1 -0
  9. package/dist/controllers/entity/create-entity.controller.d.ts +8 -0
  10. package/dist/controllers/entity/create-entity.controller.d.ts.map +1 -0
  11. package/dist/controllers/entity/create-entity.controller.js +44 -0
  12. package/dist/controllers/entity/create-entity.controller.js.map +1 -0
  13. package/dist/controllers/entity/delete-entity.controller.d.ts +8 -0
  14. package/dist/controllers/entity/delete-entity.controller.d.ts.map +1 -0
  15. package/dist/controllers/entity/delete-entity.controller.js +29 -0
  16. package/dist/controllers/entity/delete-entity.controller.js.map +1 -0
  17. package/dist/controllers/entity/get-entity.controller.d.ts +8 -0
  18. package/dist/controllers/entity/get-entity.controller.d.ts.map +1 -0
  19. package/dist/controllers/entity/get-entity.controller.js +24 -0
  20. package/dist/controllers/entity/get-entity.controller.js.map +1 -0
  21. package/dist/controllers/entity/list-entities.controller.d.ts +8 -0
  22. package/dist/controllers/entity/list-entities.controller.d.ts.map +1 -0
  23. package/dist/controllers/entity/list-entities.controller.js +56 -0
  24. package/dist/controllers/entity/list-entities.controller.js.map +1 -0
  25. package/dist/controllers/entity/update-entity.controller.d.ts +8 -0
  26. package/dist/controllers/entity/update-entity.controller.d.ts.map +1 -0
  27. package/dist/controllers/entity/update-entity.controller.js +45 -0
  28. package/dist/controllers/entity/update-entity.controller.js.map +1 -0
  29. package/dist/controllers/entity/upsert-entity.controller.d.ts +12 -0
  30. package/dist/controllers/entity/upsert-entity.controller.d.ts.map +1 -0
  31. package/dist/controllers/entity/upsert-entity.controller.js +74 -0
  32. package/dist/controllers/entity/upsert-entity.controller.js.map +1 -0
  33. package/dist/controllers/mutual/create-mutual.controller.d.ts +8 -0
  34. package/dist/controllers/mutual/create-mutual.controller.d.ts.map +1 -0
  35. package/dist/controllers/mutual/create-mutual.controller.js +49 -0
  36. package/dist/controllers/mutual/create-mutual.controller.js.map +1 -0
  37. package/dist/controllers/mutual/delete-mutual.controller.d.ts +8 -0
  38. package/dist/controllers/mutual/delete-mutual.controller.d.ts.map +1 -0
  39. package/dist/controllers/mutual/delete-mutual.controller.js +31 -0
  40. package/dist/controllers/mutual/delete-mutual.controller.js.map +1 -0
  41. package/dist/controllers/mutual/get-mutual.controller.d.ts +8 -0
  42. package/dist/controllers/mutual/get-mutual.controller.d.ts.map +1 -0
  43. package/dist/controllers/mutual/get-mutual.controller.js +24 -0
  44. package/dist/controllers/mutual/get-mutual.controller.js.map +1 -0
  45. package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts +8 -0
  46. package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts.map +1 -0
  47. package/dist/controllers/mutual/list-entities-by-entity.controller.js +56 -0
  48. package/dist/controllers/mutual/list-entities-by-entity.controller.js.map +1 -0
  49. package/dist/controllers/mutual/update-mutual.controller.d.ts +8 -0
  50. package/dist/controllers/mutual/update-mutual.controller.d.ts.map +1 -0
  51. package/dist/controllers/mutual/update-mutual.controller.js +40 -0
  52. package/dist/controllers/mutual/update-mutual.controller.js.map +1 -0
  53. package/dist/controllers/setupRoutes.d.ts +5 -0
  54. package/dist/controllers/setupRoutes.d.ts.map +1 -0
  55. package/dist/controllers/setupRoutes.js +30 -0
  56. package/dist/controllers/setupRoutes.js.map +1 -0
  57. package/dist/controllers/tag/list-tags.controller.d.ts +8 -0
  58. package/dist/controllers/tag/list-tags.controller.d.ts.map +1 -0
  59. package/dist/controllers/tag/list-tags.controller.js +48 -0
  60. package/dist/controllers/tag/list-tags.controller.js.map +1 -0
  61. package/dist/data/DbUtils.d.ts +7 -0
  62. package/dist/data/DbUtils.d.ts.map +1 -0
  63. package/dist/data/DbUtils.js +23 -0
  64. package/dist/data/DbUtils.js.map +1 -0
  65. package/dist/data/Entity.d.ts +73 -0
  66. package/dist/data/Entity.d.ts.map +1 -0
  67. package/dist/data/Entity.js +361 -0
  68. package/dist/data/Entity.js.map +1 -0
  69. package/dist/data/EventUtils.d.ts +15 -0
  70. package/dist/data/EventUtils.d.ts.map +1 -0
  71. package/dist/data/EventUtils.js +35 -0
  72. package/dist/data/EventUtils.js.map +1 -0
  73. package/dist/data/FileObject.d.ts +62 -0
  74. package/dist/data/FileObject.d.ts.map +1 -0
  75. package/dist/data/FileObject.js +13 -0
  76. package/dist/data/FileObject.js.map +1 -0
  77. package/dist/data/Mutual.d.ts +94 -0
  78. package/dist/data/Mutual.d.ts.map +1 -0
  79. package/dist/data/Mutual.js +492 -0
  80. package/dist/data/Mutual.js.map +1 -0
  81. package/dist/data/ProjectionExpression.d.ts +6 -0
  82. package/dist/data/ProjectionExpression.d.ts.map +1 -0
  83. package/dist/data/ProjectionExpression.js +5 -0
  84. package/dist/data/ProjectionExpression.js.map +1 -0
  85. package/dist/data/Tag.d.ts +77 -0
  86. package/dist/data/Tag.d.ts.map +1 -0
  87. package/dist/data/Tag.js +330 -0
  88. package/dist/data/Tag.js.map +1 -0
  89. package/dist/data/abstract/Item.base.d.ts +11 -0
  90. package/dist/data/abstract/Item.base.d.ts.map +1 -0
  91. package/dist/data/abstract/Item.base.js +9 -0
  92. package/dist/data/abstract/Item.base.js.map +1 -0
  93. package/dist/data/abstract/Repository.base.d.ts +11 -0
  94. package/dist/data/abstract/Repository.base.d.ts.map +1 -0
  95. package/dist/data/abstract/Repository.base.js +54 -0
  96. package/dist/data/abstract/Repository.base.js.map +1 -0
  97. package/dist/errors/api-error.d.ts +23 -0
  98. package/dist/errors/api-error.d.ts.map +1 -0
  99. package/dist/errors/api-error.js +26 -0
  100. package/dist/errors/api-error.js.map +1 -0
  101. package/dist/errors/extendable-error.d.ts +18 -0
  102. package/dist/errors/extendable-error.d.ts.map +1 -0
  103. package/dist/errors/extendable-error.js +22 -0
  104. package/dist/errors/extendable-error.js.map +1 -0
  105. package/dist/errors/standard-error.d.ts +11 -0
  106. package/dist/errors/standard-error.d.ts.map +1 -0
  107. package/dist/errors/standard-error.js +21 -0
  108. package/dist/errors/standard-error.js.map +1 -0
  109. package/dist/helpers/dependencies.d.ts +8 -0
  110. package/dist/helpers/dependencies.d.ts.map +1 -0
  111. package/dist/helpers/dependencies.js +10 -0
  112. package/dist/helpers/dependencies.js.map +1 -0
  113. package/dist/helpers/event.d.ts +22 -0
  114. package/dist/helpers/event.d.ts.map +1 -0
  115. package/dist/helpers/event.js +47 -0
  116. package/dist/helpers/event.js.map +1 -0
  117. package/dist/helpers/fromLastKeyQuery.d.ts +3 -0
  118. package/dist/helpers/fromLastKeyQuery.d.ts.map +1 -0
  119. package/dist/helpers/fromLastKeyQuery.js +7 -0
  120. package/dist/helpers/fromLastKeyQuery.js.map +1 -0
  121. package/dist/helpers/sleep.d.ts +2 -0
  122. package/dist/helpers/sleep.d.ts.map +1 -0
  123. package/dist/helpers/sleep.js +2 -0
  124. package/dist/helpers/sleep.js.map +1 -0
  125. package/dist/helpers/toLastKeyResponse.d.ts +3 -0
  126. package/dist/helpers/toLastKeyResponse.d.ts.map +1 -0
  127. package/dist/helpers/toLastKeyResponse.js +7 -0
  128. package/dist/helpers/toLastKeyResponse.js.map +1 -0
  129. package/dist/index.d.ts +30 -0
  130. package/dist/index.d.ts.map +1 -0
  131. package/dist/index.js +35 -0
  132. package/dist/index.js.map +1 -0
  133. package/dist/middlewares/entity-type-check.d.ts +4 -0
  134. package/dist/middlewares/entity-type-check.d.ts.map +1 -0
  135. package/dist/middlewares/entity-type-check.js +12 -0
  136. package/dist/middlewares/entity-type-check.js.map +1 -0
  137. package/dist/middlewares/mutual-type-check.d.ts +4 -0
  138. package/dist/middlewares/mutual-type-check.d.ts.map +1 -0
  139. package/dist/middlewares/mutual-type-check.js +13 -0
  140. package/dist/middlewares/mutual-type-check.js.map +1 -0
  141. package/dist/mock/entity.d.ts +5 -0
  142. package/dist/mock/entity.d.ts.map +1 -0
  143. package/dist/mock/entity.js +6 -0
  144. package/dist/mock/entity.js.map +1 -0
  145. package/dist/mock/monorise/admin.d.ts +127 -0
  146. package/dist/mock/monorise/admin.d.ts.map +1 -0
  147. package/dist/mock/monorise/admin.js +26 -0
  148. package/dist/mock/monorise/admin.js.map +1 -0
  149. package/dist/mock/monorise/course.d.ts +118 -0
  150. package/dist/mock/monorise/course.d.ts.map +1 -0
  151. package/dist/mock/monorise/course.js +53 -0
  152. package/dist/mock/monorise/course.js.map +1 -0
  153. package/dist/mock/monorise/index.d.ts +330 -0
  154. package/dist/mock/monorise/index.d.ts.map +1 -0
  155. package/dist/mock/monorise/index.js +19 -0
  156. package/dist/mock/monorise/index.js.map +1 -0
  157. package/dist/processors/create-entity-processor.d.ts +6 -0
  158. package/dist/processors/create-entity-processor.d.ts.map +1 -0
  159. package/dist/processors/create-entity-processor.js +32 -0
  160. package/dist/processors/create-entity-processor.js.map +1 -0
  161. package/dist/processors/mutual-processor.d.ts +16 -0
  162. package/dist/processors/mutual-processor.d.ts.map +1 -0
  163. package/dist/processors/mutual-processor.js +131 -0
  164. package/dist/processors/mutual-processor.js.map +1 -0
  165. package/dist/processors/prejoin-processor.d.ts +13 -0
  166. package/dist/processors/prejoin-processor.d.ts.map +1 -0
  167. package/dist/processors/prejoin-processor.js +149 -0
  168. package/dist/processors/prejoin-processor.js.map +1 -0
  169. package/dist/processors/replication-processor.d.ts +9 -0
  170. package/dist/processors/replication-processor.d.ts.map +1 -0
  171. package/dist/processors/replication-processor.js +179 -0
  172. package/dist/processors/replication-processor.js.map +1 -0
  173. package/dist/processors/tag-processor.d.ts +12 -0
  174. package/dist/processors/tag-processor.d.ts.map +1 -0
  175. package/dist/processors/tag-processor.js +105 -0
  176. package/dist/processors/tag-processor.js.map +1 -0
  177. package/dist/services/DependencyContainer.d.ts +63 -0
  178. package/dist/services/DependencyContainer.d.ts.map +1 -0
  179. package/dist/services/DependencyContainer.js +121 -0
  180. package/dist/services/DependencyContainer.js.map +1 -0
  181. package/dist/services/entity-service-lifecycle.d.ts +12 -0
  182. package/dist/services/entity-service-lifecycle.d.ts.map +1 -0
  183. package/dist/services/entity-service-lifecycle.js +32 -0
  184. package/dist/services/entity-service-lifecycle.js.map +1 -0
  185. package/dist/services/entity.service.d.ts +34 -0
  186. package/dist/services/entity.service.d.ts.map +1 -0
  187. package/dist/services/entity.service.js +117 -0
  188. package/dist/services/entity.service.js.map +1 -0
  189. package/dist/services/mutual.service.d.ts +64 -0
  190. package/dist/services/mutual.service.d.ts.map +1 -0
  191. package/dist/services/mutual.service.js +137 -0
  192. package/dist/services/mutual.service.js.map +1 -0
  193. package/dist/tsconfig.tsbuildinfo +1 -0
  194. package/dist/types/entity.type.d.ts +20 -0
  195. package/dist/types/entity.type.d.ts.map +1 -0
  196. package/dist/types/entity.type.js +2 -0
  197. package/dist/types/entity.type.js.map +1 -0
  198. package/dist/types/event.d.ts +72 -0
  199. package/dist/types/event.d.ts.map +1 -0
  200. package/dist/types/event.js +74 -0
  201. package/dist/types/event.js.map +1 -0
  202. package/package.json +34 -0
@@ -0,0 +1,56 @@
1
+ import httpStatus from 'http-status';
2
+ import { z } from 'zod';
3
+ export class ListEntitiesByEntityController {
4
+ associateRepository;
5
+ constructor(associateRepository) {
6
+ this.associateRepository = associateRepository;
7
+ }
8
+ controller = async (req, res) => {
9
+ const { byEntityType, byEntityId, entityType } = req.params;
10
+ /**
11
+ * Chain query is a query that allows to query entities by a chain of mutual types.
12
+ * if /core/mutual/learner/:learnerId/pathways?chainEntityQuery=type1,type2
13
+ * then the query will look for list of type1 in learner based on learnerId,
14
+ * then look for list of type2 in type1 by list of entityId of type1,
15
+ * then finally look for list of pathways in type2 by list of entityId of type2.
16
+ */
17
+ const querySchema = z.object({
18
+ chainEntityQuery: z.string().optional(),
19
+ });
20
+ const queryParam = querySchema.parse(req.query);
21
+ if (queryParam?.chainEntityQuery) {
22
+ try {
23
+ const mutualTypes = queryParam.chainEntityQuery.split(',');
24
+ const chainMutualTypes = [byEntityType, ...mutualTypes, entityType];
25
+ let byIds = [byEntityId];
26
+ let items = [];
27
+ for (let i = 1; i < chainMutualTypes.length; i++) {
28
+ const byType = chainMutualTypes[i - 1];
29
+ const type = chainMutualTypes[i];
30
+ items = [];
31
+ for (const byId of byIds) {
32
+ const resp = await this.associateRepository.listEntitiesByEntity(byType, byId, type);
33
+ items = items.concat(resp.items);
34
+ }
35
+ byIds = items.map((item) => item.entityId);
36
+ }
37
+ return res.json({
38
+ entities: items,
39
+ });
40
+ }
41
+ catch (err) {
42
+ return res.status(httpStatus.BAD_REQUEST).json({
43
+ code: 'INVALID_CHAIN_QUERY',
44
+ message: 'Chain query is invalid. Please double check the chainEntityQuery param',
45
+ });
46
+ }
47
+ }
48
+ else {
49
+ const resp = await this.associateRepository.listEntitiesByEntity(byEntityType, byEntityId, entityType);
50
+ return res.json({
51
+ entities: resp.items,
52
+ });
53
+ }
54
+ };
55
+ }
56
+ //# sourceMappingURL=list-entities-by-entity.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-entities-by-entity.controller.js","sourceRoot":"","sources":["../../../controllers/mutual/list-entities-by-entity.controller.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,OAAO,8BAA8B;IACrB;IAApB,YAAoB,mBAAqC;QAArC,wBAAmB,GAAnB,mBAAmB,CAAkB;IAAG,CAAC;IAE7D,UAAU,GAA0C,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACrE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAIpD,CAAC;QAEF;;;;;;WAMG;QACH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;YAC3B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACxC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,EAAE,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CACnD,GAAG,CACmB,CAAC;gBAEzB,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,GAAG,WAAW,EAAE,UAAU,CAAC,CAAC;gBACpE,IAAI,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;gBACzB,IAAI,KAAK,GAAsD,EAAE,CAAC;gBAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBACjC,KAAK,GAAG,EAAE,CAAC;oBAEX,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAC9D,MAAM,EACN,IAAI,EACJ,IAAI,CACL,CAAC;wBACF,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnC,CAAC;oBACD,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7C,CAAC;gBAED,OAAO,GAAG,CAAC,IAAI,CAAC;oBACd,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;oBAC7C,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EACL,wEAAwE;iBAC3E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAC9D,YAAY,EACZ,UAAU,EACV,UAAU,CACX,CAAC;YAEF,OAAO,GAAG,CAAC,IAAI,CAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,KAAK;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;CACH"}
@@ -0,0 +1,8 @@
1
+ import type { Request, Response } from 'express';
2
+ import type { MutualService } from '../../services/mutual.service';
3
+ export declare class UpdateMutualController {
4
+ private mutualService;
5
+ constructor(mutualService: MutualService);
6
+ controller: (req: Request, res: Response) => void;
7
+ }
8
+ //# sourceMappingURL=update-mutual.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-mutual.controller.d.ts","sourceRoot":"","sources":["../../../controllers/mutual/update-mutual.controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,qBAAa,sBAAsB;IACrB,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAsC/C;CACH"}
@@ -0,0 +1,40 @@
1
+ import httpStatus from 'http-status';
2
+ import { ZodError } from 'zod';
3
+ import { StandardError } from '../../errors/standard-error';
4
+ export class UpdateMutualController {
5
+ mutualService;
6
+ constructor(mutualService) {
7
+ this.mutualService = mutualService;
8
+ }
9
+ controller = async (req, res) => {
10
+ const accountId = req.headers['account-id'];
11
+ const { byEntityType, byEntityId, entityType, entityId } = req.params;
12
+ try {
13
+ const mutual = await this.mutualService.updateMutual({
14
+ byEntityType,
15
+ byEntityId,
16
+ entityType,
17
+ entityId,
18
+ mutualPayload: req.body,
19
+ accountId,
20
+ });
21
+ return res.status(httpStatus.OK).json(mutual);
22
+ }
23
+ catch (err) {
24
+ if (err instanceof ZodError) {
25
+ return res.status(httpStatus.BAD_REQUEST).json({
26
+ code: 'API_VALIDATION_ERROR',
27
+ message: 'API validation failed',
28
+ details: err.flatten(),
29
+ });
30
+ }
31
+ if (err instanceof StandardError && err.code === 'MUTUAL_NOT_FOUND') {
32
+ return res.status(httpStatus.BAD_REQUEST).json({
33
+ ...err.toJSON(),
34
+ });
35
+ }
36
+ throw err;
37
+ }
38
+ };
39
+ }
40
+ //# sourceMappingURL=update-mutual.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-mutual.controller.js","sourceRoot":"","sources":["../../../controllers/mutual/update-mutual.controller.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,MAAM,OAAO,sBAAsB;IACb;IAApB,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD,UAAU,GAA0C,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACrE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GACtD,GAAG,CAAC,MAKH,CAAC;QAEJ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;gBACnD,YAAY;gBACZ,UAAU;gBACV,UAAU;gBACV,QAAQ;gBACR,aAAa,EAAE,GAAG,CAAC,IAAI;gBACvB,SAAS;aACV,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;oBAC7C,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,uBAAuB;oBAChC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;iBACvB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACpE,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;oBAC7C,GAAG,GAAG,CAAC,MAAM,EAAE;iBAChB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;CACH"}
@@ -0,0 +1,5 @@
1
+ import type { Router } from 'express';
2
+ import type { DependencyContainer } from '../services/DependencyContainer';
3
+ declare const setupCommonRoutes: (container: DependencyContainer) => (router: Router) => void;
4
+ export { setupCommonRoutes };
5
+ //# sourceMappingURL=setupRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupRoutes.d.ts","sourceRoot":"","sources":["../../controllers/setupRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,QAAA,MAAM,iBAAiB,GACpB,WAAW,mBAAmB,MAAM,QAAQ,MAAM,SAoElD,CAAC;AAEJ,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { entityTypeCheck } from '../middlewares/entity-type-check';
2
+ import { mutualTypeCheck } from '../middlewares/mutual-type-check';
3
+ const setupCommonRoutes = (container) => (router) => {
4
+ /*
5
+ * Mutual endpoint
6
+ */
7
+ // const container = new DependencyContainer();
8
+ router.use('/mutual/:byEntityType/:byEntityId/:entityType', mutualTypeCheck(container));
9
+ router.get('/mutual/:byEntityType/:byEntityId/:entityType', container.listEntitiesByEntityController.controller);
10
+ router.post('/mutual/:byEntityType/:byEntityId/:entityType/:entityId', container.createMutualController.controller);
11
+ router.get('/mutual/:byEntityType/:byEntityId/:entityType/:entityId', container.getMutualController.controller);
12
+ router.patch('/mutual/:byEntityType/:byEntityId/:entityType/:entityId', container.updateMutualController.controller);
13
+ router.delete('/mutual/:byEntityType/:byEntityId/:entityType/:entityId', container.deleteMutualController.controller);
14
+ /*
15
+ * Entities endpoint
16
+ */
17
+ router.use('/entity/:entityType', entityTypeCheck(container));
18
+ router.get('/entity/:entityType', container.listEntitiesController.controller);
19
+ router.post('/entity/:entityType', container.createEntityController.controller);
20
+ router.get('/entity/:entityType/:entityId', container.getEntityController.controller);
21
+ router.put('/entity/:entityType/:entityId', container.upsertEntityController.controller);
22
+ router.patch('/entity/:entityType/:entityId', container.updateEntityController.controller);
23
+ router.delete('/entity/:entityType/:entityId', container.deleteEntityController.controller);
24
+ /*
25
+ * Tag endpoint
26
+ */
27
+ router.get('/tag/:entityType/:tagName', container.listTagsController.controller);
28
+ };
29
+ export { setupCommonRoutes };
30
+ //# sourceMappingURL=setupRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupRoutes.js","sourceRoot":"","sources":["../../controllers/setupRoutes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,MAAM,iBAAiB,GACrB,CAAC,SAA8B,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE;IACrD;;OAEG;IACH,+CAA+C;IAE/C,MAAM,CAAC,GAAG,CACR,+CAA+C,EAC/C,eAAe,CAAC,SAAS,CAAC,CAC3B,CAAC;IACF,MAAM,CAAC,GAAG,CACR,+CAA+C,EAC/C,SAAS,CAAC,8BAA8B,CAAC,UAAU,CACpD,CAAC;IACF,MAAM,CAAC,IAAI,CACT,yDAAyD,EACzD,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAC5C,CAAC;IACF,MAAM,CAAC,GAAG,CACR,yDAAyD,EACzD,SAAS,CAAC,mBAAmB,CAAC,UAAU,CACzC,CAAC;IACF,MAAM,CAAC,KAAK,CACV,yDAAyD,EACzD,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAC5C,CAAC;IACF,MAAM,CAAC,MAAM,CACX,yDAAyD,EACzD,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAC5C,CAAC;IAEF;;OAEG;IAEH,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,CACR,qBAAqB,EACrB,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAC5C,CAAC;IACF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAC5C,CAAC;IACF,MAAM,CAAC,GAAG,CACR,+BAA+B,EAC/B,SAAS,CAAC,mBAAmB,CAAC,UAAU,CACzC,CAAC;IACF,MAAM,CAAC,GAAG,CACR,+BAA+B,EAC/B,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAC5C,CAAC;IACF,MAAM,CAAC,KAAK,CACV,+BAA+B,EAC/B,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAC5C,CAAC;IACF,MAAM,CAAC,MAAM,CACX,+BAA+B,EAC/B,SAAS,CAAC,sBAAsB,CAAC,UAAU,CAC5C,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,GAAG,CACR,2BAA2B,EAC3B,SAAS,CAAC,kBAAkB,CAAC,UAAU,CACxC,CAAC;AACJ,CAAC,CAAC;AAEJ,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Request, Response } from 'express';
2
+ import type { TagRepository } from '../../data/Tag';
3
+ export declare class ListTagsController {
4
+ private tagRepository;
5
+ constructor(tagRepository: TagRepository);
6
+ controller: (req: Request, res: Response) => void;
7
+ }
8
+ //# sourceMappingURL=list-tags.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-tags.controller.d.ts","sourceRoot":"","sources":["../../../controllers/tag/list-tags.controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAapD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAoC/C;CACH"}
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ import { fromLastKeyQuery } from '../../helpers/fromLastKeyQuery';
3
+ import { toLastKeyResponse } from '../../helpers/toLastKeyResponse';
4
+ const querySchema = z.object({
5
+ group: z.string().optional(),
6
+ query: z.string().optional(),
7
+ start: z.string().optional(),
8
+ end: z.string().optional(),
9
+ limit: z.string().optional(),
10
+ lastKey: z.string().optional(),
11
+ });
12
+ export class ListTagsController {
13
+ tagRepository;
14
+ constructor(tagRepository) {
15
+ this.tagRepository = tagRepository;
16
+ }
17
+ controller = async (req, res) => {
18
+ const errorContext = {};
19
+ try {
20
+ errorContext.params = req.params;
21
+ errorContext.query = req.query;
22
+ const { entityType, tagName } = req.params;
23
+ const { lastKey, query, limit, start, end, group } = querySchema.parse(req.query);
24
+ const results = await this.tagRepository.listTags({
25
+ entityType,
26
+ tagName,
27
+ limit: Number(limit),
28
+ options: {
29
+ lastKey: fromLastKeyQuery(lastKey),
30
+ },
31
+ query,
32
+ group,
33
+ start,
34
+ end,
35
+ });
36
+ return res.json({
37
+ entities: results.items.map((item) => item.toJSON()),
38
+ totalCount: results.totalCount,
39
+ lastKey: toLastKeyResponse(results.lastKey),
40
+ });
41
+ }
42
+ catch (error) {
43
+ console.log({ error, errorContext });
44
+ return res.status(500).json({ message: error });
45
+ }
46
+ };
47
+ }
48
+ //# sourceMappingURL=list-tags.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-tags.controller.js","sourceRoot":"","sources":["../../../controllers/tag/list-tags.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD,UAAU,GAA0C,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACrE,MAAM,YAAY,GAA4B,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACjC,YAAY,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YAE/B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAGnC,CAAC;YAEF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,CACpE,GAAG,CAAC,KAAK,CACV,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAChD,UAAU;gBACV,OAAO;gBACP,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACpB,OAAO,EAAE;oBACP,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;iBACnC;gBACD,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,CAAC;gBACd,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpD,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YACrC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC;CACH"}
@@ -0,0 +1,7 @@
1
+ import { type DynamoDB, type TransactWriteItemsInput } from '@aws-sdk/client-dynamodb';
2
+ export declare class DbUtils {
3
+ private ddbClient;
4
+ constructor(ddbClient: DynamoDB);
5
+ executeTransactWrite(params: TransactWriteItemsInput): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=DbUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DbUtils.d.ts","sourceRoot":"","sources":["../../data/DbUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,uBAAuB,EAE7B,MAAM,0BAA0B,CAAC;AAGlC,qBAAa,OAAO;IACN,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,QAAQ;IAEjC,oBAAoB,CAAC,MAAM,EAAE,uBAAuB;CA4B3D"}
@@ -0,0 +1,23 @@
1
+ import { BatchStatementErrorCodeEnum, TransactionCanceledException, } from '@aws-sdk/client-dynamodb';
2
+ import { StandardError } from '../errors/standard-error';
3
+ export class DbUtils {
4
+ ddbClient;
5
+ constructor(ddbClient) {
6
+ this.ddbClient = ddbClient;
7
+ }
8
+ async executeTransactWrite(params) {
9
+ try {
10
+ await this.ddbClient.transactWriteItems(params);
11
+ }
12
+ catch (err) {
13
+ if (err instanceof TransactionCanceledException) {
14
+ const hasConditionalCheckFailed = err.CancellationReasons?.some((reason) => reason.Code === BatchStatementErrorCodeEnum.ConditionalCheckFailed);
15
+ if (hasConditionalCheckFailed) {
16
+ throw new StandardError('CONDITIONAL_CHECK_FAILED', 'Failed to executeTransactWrite', err, { params });
17
+ }
18
+ }
19
+ throw new StandardError('TRANSACTION_FAILED', 'Failed to executeTransactWrite', err, { params });
20
+ }
21
+ }
22
+ }
23
+ //# sourceMappingURL=DbUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DbUtils.js","sourceRoot":"","sources":["../../data/DbUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAG3B,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,OAAO,OAAO;IACE;IAApB,YAAoB,SAAmB;QAAnB,cAAS,GAAT,SAAS,CAAU;IAAG,CAAC;IAE3C,KAAK,CAAC,oBAAoB,CAAC,MAA+B;QACxD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,4BAA4B,EAAE,CAAC;gBAChD,MAAM,yBAAyB,GAAG,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAC7D,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,IAAI,KAAK,2BAA2B,CAAC,sBAAsB,CACrE,CAAC;gBAEF,IAAI,yBAAyB,EAAE,CAAC;oBAC9B,MAAM,IAAI,aAAa,CACrB,0BAA0B,EAC1B,gCAAgC,EAChC,GAAG,EACH,EAAE,MAAM,EAAE,CACX,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,IAAI,aAAa,CACrB,oBAAoB,EACpB,gCAAgC,EAChC,GAAG,EACH,EAAE,MAAM,EAAE,CACX,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,73 @@
1
+ import { type AttributeValue, type DynamoDB, type TransactWriteItem } from '@aws-sdk/client-dynamodb';
2
+ import type { EntitySchemaMap, Entity as EntityType, createEntityConfig } from '@monorise/base';
3
+ import type { ProjectionExpressionValues } from './ProjectionExpression';
4
+ import { Item } from './abstract/Item.base';
5
+ import { Repository } from './abstract/Repository.base';
6
+ export declare class Entity<T extends EntityType> extends Item {
7
+ entityType: T;
8
+ entityId?: string | undefined;
9
+ data: Partial<EntitySchemaMap[T]>;
10
+ private _createdAt?;
11
+ private _updatedAt?;
12
+ fullId: string;
13
+ constructor(entityType: T, entityId?: string | undefined, data?: Partial<EntitySchemaMap[T]>, _createdAt?: Date | undefined, _updatedAt?: Date | undefined);
14
+ static fromItem<T extends EntityType>(item?: Record<string, AttributeValue>): Entity<T>;
15
+ get pk(): string;
16
+ get sk(): string;
17
+ get listActionKey(): string;
18
+ get emailKeys(): Record<string, AttributeValue>;
19
+ get createdAt(): string | undefined;
20
+ get updatedAt(): string | undefined;
21
+ toItem(): Record<string, AttributeValue>;
22
+ toJSON(): Record<string, unknown>;
23
+ }
24
+ export declare class EntityRepository extends Repository {
25
+ private EntityConfig;
26
+ private readonly TABLE_NAME;
27
+ private readonly dynamodbClient;
28
+ private readonly EmailAuthEnabledEntities;
29
+ constructor(EntityConfig: Record<EntityType, ReturnType<typeof createEntityConfig>>, TABLE_NAME: string, dynamodbClient: DynamoDB, EmailAuthEnabledEntities: string[]);
30
+ listEntities<T extends EntityType>({ entityType, limit, // if this is not set, it will return all items
31
+ between, options, }: {
32
+ entityType: T;
33
+ limit?: number;
34
+ between?: {
35
+ start: string;
36
+ end: string;
37
+ };
38
+ options?: {
39
+ lastKey?: Record<string, AttributeValue>;
40
+ ProjectionExpression?: ProjectionExpressionValues;
41
+ };
42
+ }): Promise<{
43
+ items: Entity<T>[];
44
+ totalCount?: number;
45
+ lastKey?: Record<string, AttributeValue>;
46
+ }>;
47
+ getEntity<T extends EntityType>(entityType: T, entityId: string): Promise<Entity<T>>;
48
+ getEntityByEmail<T extends EntityType>(entityType: T, email: string): Promise<Entity<T>>;
49
+ getEmailAvailability<T extends EntityType>(entityType: T, email: string): Promise<void>;
50
+ createEntityTransactItems<T extends EntityType>(entity: Entity<T>, opts?: {
51
+ mutualId?: string;
52
+ }): TransactWriteItem[];
53
+ createEntity<T extends EntityType>(entityType: T, entityPayload: EntitySchemaMap[T], entityId?: string, opts?: {
54
+ createAndUpdateDatetime?: Date;
55
+ mutualId?: string;
56
+ }): Promise<Entity<T>>;
57
+ upsertEntity<T extends EntityType>(entityType: T, entityId: string, payload: Partial<EntitySchemaMap[T]>): Promise<Entity<T>>;
58
+ updateEntity<T extends EntityType>(entityType: T, entityId: string, toUpdate: {
59
+ data: Partial<EntitySchemaMap[T]>;
60
+ updatedAt?: string;
61
+ }, opts?: {
62
+ ConditionExpression: string;
63
+ ExpressionAttributeNames: Record<string, string>;
64
+ ExpressionAttributeValues: Record<string, AttributeValue>;
65
+ }): Promise<Entity<T>>;
66
+ deleteEntity<T extends EntityType>(entityType: T, entityId: string): Promise<void>;
67
+ queryEntities<T extends EntityType>(entityType: T, query: string): Promise<{
68
+ items: Entity<T>[];
69
+ totalCount?: number;
70
+ filteredCount?: number;
71
+ }>;
72
+ }
73
+ //# sourceMappingURL=Entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../data/Entity.ts"],"names":[],"mappings":"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"}