@monorise/core 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.
- package/configs/service.config.ts +14 -0
- package/constants/table.ts +3 -0
- package/controllers/entity/create-entity.controller.ts +51 -0
- package/controllers/entity/delete-entity.controller.ts +35 -0
- package/controllers/entity/entity.http +62 -0
- package/controllers/entity/get-entity.controller.ts +33 -0
- package/controllers/entity/list-entities.controller.ts +69 -0
- package/controllers/entity/update-entity.controller.ts +56 -0
- package/controllers/entity/upsert-entity.controller.ts +97 -0
- package/controllers/mutual/create-mutual.controller.ts +89 -0
- package/controllers/mutual/delete-mutual.controller.ts +40 -0
- package/controllers/mutual/get-mutual.controller.ts +38 -0
- package/controllers/mutual/list-entities-by-entity.controller.ts +76 -0
- package/controllers/mutual/mutual.http +88 -0
- package/controllers/mutual/update-mutual.controller.ts +50 -0
- package/controllers/setupRoutes.ts +73 -0
- package/controllers/tag/list-tags.controller.ts +57 -0
- package/data/DbUtils.ts +40 -0
- package/data/Entity.ts +499 -0
- package/data/EventUtils.ts +47 -0
- package/data/FileObject.ts +16 -0
- package/data/Mutual.ts +779 -0
- package/data/ProjectionExpression.ts +8 -0
- package/data/Tag.ts +470 -0
- package/data/abstract/Item.base.ts +19 -0
- package/data/abstract/Repository.base.ts +92 -0
- package/dist/configs/service.config.d.ts +5 -0
- package/dist/configs/service.config.d.ts.map +1 -0
- package/dist/configs/service.config.js +5 -0
- package/dist/configs/service.config.js.map +1 -0
- package/dist/constants/table.d.ts +4 -0
- package/dist/constants/table.d.ts.map +1 -0
- package/dist/constants/table.js +4 -0
- package/dist/constants/table.js.map +1 -0
- package/dist/controllers/entity/create-entity.controller.d.ts +8 -0
- package/dist/controllers/entity/create-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/create-entity.controller.js +44 -0
- package/dist/controllers/entity/create-entity.controller.js.map +1 -0
- package/dist/controllers/entity/delete-entity.controller.d.ts +8 -0
- package/dist/controllers/entity/delete-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/delete-entity.controller.js +29 -0
- package/dist/controllers/entity/delete-entity.controller.js.map +1 -0
- package/dist/controllers/entity/get-entity.controller.d.ts +8 -0
- package/dist/controllers/entity/get-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/get-entity.controller.js +24 -0
- package/dist/controllers/entity/get-entity.controller.js.map +1 -0
- package/dist/controllers/entity/list-entities.controller.d.ts +8 -0
- package/dist/controllers/entity/list-entities.controller.d.ts.map +1 -0
- package/dist/controllers/entity/list-entities.controller.js +56 -0
- package/dist/controllers/entity/list-entities.controller.js.map +1 -0
- package/dist/controllers/entity/update-entity.controller.d.ts +8 -0
- package/dist/controllers/entity/update-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/update-entity.controller.js +45 -0
- package/dist/controllers/entity/update-entity.controller.js.map +1 -0
- package/dist/controllers/entity/upsert-entity.controller.d.ts +10 -0
- package/dist/controllers/entity/upsert-entity.controller.d.ts.map +1 -0
- package/dist/controllers/entity/upsert-entity.controller.js +73 -0
- package/dist/controllers/entity/upsert-entity.controller.js.map +1 -0
- package/dist/controllers/mutual/create-mutual.controller.d.ts +10 -0
- package/dist/controllers/mutual/create-mutual.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/create-mutual.controller.js +70 -0
- package/dist/controllers/mutual/create-mutual.controller.js.map +1 -0
- package/dist/controllers/mutual/delete-mutual.controller.d.ts +8 -0
- package/dist/controllers/mutual/delete-mutual.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/delete-mutual.controller.js +31 -0
- package/dist/controllers/mutual/delete-mutual.controller.js.map +1 -0
- package/dist/controllers/mutual/get-mutual.controller.d.ts +8 -0
- package/dist/controllers/mutual/get-mutual.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/get-mutual.controller.js +24 -0
- package/dist/controllers/mutual/get-mutual.controller.js.map +1 -0
- package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts +8 -0
- package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/list-entities-by-entity.controller.js +56 -0
- package/dist/controllers/mutual/list-entities-by-entity.controller.js.map +1 -0
- package/dist/controllers/mutual/update-mutual.controller.d.ts +8 -0
- package/dist/controllers/mutual/update-mutual.controller.d.ts.map +1 -0
- package/dist/controllers/mutual/update-mutual.controller.js +40 -0
- package/dist/controllers/mutual/update-mutual.controller.js.map +1 -0
- package/dist/controllers/setupRoutes.d.ts +4 -0
- package/dist/controllers/setupRoutes.d.ts.map +1 -0
- package/dist/controllers/setupRoutes.js +31 -0
- package/dist/controllers/setupRoutes.js.map +1 -0
- package/dist/controllers/tag/list-tags.controller.d.ts +8 -0
- package/dist/controllers/tag/list-tags.controller.d.ts.map +1 -0
- package/dist/controllers/tag/list-tags.controller.js +48 -0
- package/dist/controllers/tag/list-tags.controller.js.map +1 -0
- package/dist/data/DbUtils.d.ts +7 -0
- package/dist/data/DbUtils.d.ts.map +1 -0
- package/dist/data/DbUtils.js +23 -0
- package/dist/data/DbUtils.js.map +1 -0
- package/dist/data/Entity.d.ts +71 -0
- package/dist/data/Entity.d.ts.map +1 -0
- package/dist/data/Entity.js +358 -0
- package/dist/data/Entity.js.map +1 -0
- package/dist/data/EventUtils.d.ts +14 -0
- package/dist/data/EventUtils.d.ts.map +1 -0
- package/dist/data/EventUtils.js +34 -0
- package/dist/data/EventUtils.js.map +1 -0
- package/dist/data/FileObject.d.ts +62 -0
- package/dist/data/FileObject.d.ts.map +1 -0
- package/dist/data/FileObject.js +13 -0
- package/dist/data/FileObject.js.map +1 -0
- package/dist/data/Mutual.d.ts +94 -0
- package/dist/data/Mutual.d.ts.map +1 -0
- package/dist/data/Mutual.js +492 -0
- package/dist/data/Mutual.js.map +1 -0
- package/dist/data/ProjectionExpression.d.ts +6 -0
- package/dist/data/ProjectionExpression.d.ts.map +1 -0
- package/dist/data/ProjectionExpression.js +5 -0
- package/dist/data/ProjectionExpression.js.map +1 -0
- package/dist/data/Tag.d.ts +77 -0
- package/dist/data/Tag.d.ts.map +1 -0
- package/dist/data/Tag.js +330 -0
- package/dist/data/Tag.js.map +1 -0
- package/dist/data/abstract/Item.base.d.ts +11 -0
- package/dist/data/abstract/Item.base.d.ts.map +1 -0
- package/dist/data/abstract/Item.base.js +9 -0
- package/dist/data/abstract/Item.base.js.map +1 -0
- package/dist/data/abstract/Repository.base.d.ts +11 -0
- package/dist/data/abstract/Repository.base.d.ts.map +1 -0
- package/dist/data/abstract/Repository.base.js +54 -0
- package/dist/data/abstract/Repository.base.js.map +1 -0
- package/dist/errors/api-error.d.ts +23 -0
- package/dist/errors/api-error.d.ts.map +1 -0
- package/dist/errors/api-error.js +26 -0
- package/dist/errors/api-error.js.map +1 -0
- package/dist/errors/extendable-error.d.ts +18 -0
- package/dist/errors/extendable-error.d.ts.map +1 -0
- package/dist/errors/extendable-error.js +22 -0
- package/dist/errors/extendable-error.js.map +1 -0
- package/dist/errors/standard-error.d.ts +11 -0
- package/dist/errors/standard-error.d.ts.map +1 -0
- package/dist/errors/standard-error.js +21 -0
- package/dist/errors/standard-error.js.map +1 -0
- package/dist/helpers/dependencies.d.ts +8 -0
- package/dist/helpers/dependencies.d.ts.map +1 -0
- package/dist/helpers/dependencies.js +10 -0
- package/dist/helpers/dependencies.js.map +1 -0
- package/dist/helpers/event.d.ts +22 -0
- package/dist/helpers/event.d.ts.map +1 -0
- package/dist/helpers/event.js +47 -0
- package/dist/helpers/event.js.map +1 -0
- package/dist/helpers/fromLastKeyQuery.d.ts +3 -0
- package/dist/helpers/fromLastKeyQuery.d.ts.map +1 -0
- package/dist/helpers/fromLastKeyQuery.js +7 -0
- package/dist/helpers/fromLastKeyQuery.js.map +1 -0
- package/dist/helpers/sleep.d.ts +2 -0
- package/dist/helpers/sleep.d.ts.map +1 -0
- package/dist/helpers/sleep.js +2 -0
- package/dist/helpers/sleep.js.map +1 -0
- package/dist/helpers/toLastKeyResponse.d.ts +3 -0
- package/dist/helpers/toLastKeyResponse.d.ts.map +1 -0
- package/dist/helpers/toLastKeyResponse.js +7 -0
- package/dist/helpers/toLastKeyResponse.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/middlewares/entity-type-check.d.ts +3 -0
- package/dist/middlewares/entity-type-check.d.ts.map +1 -0
- package/dist/middlewares/entity-type-check.js +12 -0
- package/dist/middlewares/entity-type-check.js.map +1 -0
- package/dist/middlewares/mutual-type-check.d.ts +3 -0
- package/dist/middlewares/mutual-type-check.d.ts.map +1 -0
- package/dist/middlewares/mutual-type-check.js +13 -0
- package/dist/middlewares/mutual-type-check.js.map +1 -0
- package/dist/mock/container.d.ts +3 -0
- package/dist/mock/container.d.ts.map +1 -0
- package/dist/mock/container.js +3 -0
- package/dist/mock/container.js.map +1 -0
- package/dist/mock/entity.d.ts +13 -0
- package/dist/mock/entity.d.ts.map +1 -0
- package/dist/mock/entity.js +14 -0
- package/dist/mock/entity.js.map +1 -0
- package/dist/mock/monorise/admin.d.ts +127 -0
- package/dist/mock/monorise/admin.d.ts.map +1 -0
- package/dist/mock/monorise/admin.js +29 -0
- package/dist/mock/monorise/admin.js.map +1 -0
- package/dist/mock/monorise/chapter.d.ts +457 -0
- package/dist/mock/monorise/chapter.d.ts.map +1 -0
- package/dist/mock/monorise/chapter.js +81 -0
- package/dist/mock/monorise/chapter.js.map +1 -0
- package/dist/mock/monorise/course.d.ts +311 -0
- package/dist/mock/monorise/course.d.ts.map +1 -0
- package/dist/mock/monorise/course.js +128 -0
- package/dist/mock/monorise/course.js.map +1 -0
- package/dist/mock/monorise/index.d.ts +3599 -0
- package/dist/mock/monorise/index.d.ts.map +1 -0
- package/dist/mock/monorise/index.js +62 -0
- package/dist/mock/monorise/index.js.map +1 -0
- package/dist/mock/monorise/learner.d.ts +390 -0
- package/dist/mock/monorise/learner.d.ts.map +1 -0
- package/dist/mock/monorise/learner.js +59 -0
- package/dist/mock/monorise/learner.js.map +1 -0
- package/dist/mock/monorise/learning-activity.d.ts +266 -0
- package/dist/mock/monorise/learning-activity.d.ts.map +1 -0
- package/dist/mock/monorise/learning-activity.js +50 -0
- package/dist/mock/monorise/learning-activity.js.map +1 -0
- package/dist/mock/monorise/learning-journey-config.d.ts +84 -0
- package/dist/mock/monorise/learning-journey-config.d.ts.map +1 -0
- package/dist/mock/monorise/learning-journey-config.js +27 -0
- package/dist/mock/monorise/learning-journey-config.js.map +1 -0
- package/dist/mock/monorise/module.d.ts +211 -0
- package/dist/mock/monorise/module.d.ts.map +1 -0
- package/dist/mock/monorise/module.js +91 -0
- package/dist/mock/monorise/module.js.map +1 -0
- package/dist/mock/monorise/organization.d.ts +346 -0
- package/dist/mock/monorise/organization.d.ts.map +1 -0
- package/dist/mock/monorise/organization.js +54 -0
- package/dist/mock/monorise/organization.js.map +1 -0
- package/dist/mock/monorise/reference.d.ts +171 -0
- package/dist/mock/monorise/reference.d.ts.map +1 -0
- package/dist/mock/monorise/reference.js +25 -0
- package/dist/mock/monorise/reference.js.map +1 -0
- package/dist/mock/monorise/video.d.ts +346 -0
- package/dist/mock/monorise/video.d.ts.map +1 -0
- package/dist/mock/monorise/video.js +33 -0
- package/dist/mock/monorise/video.js.map +1 -0
- package/dist/packages/core/configs/service.config.d.ts +5 -0
- package/dist/packages/core/configs/service.config.d.ts.map +1 -0
- package/dist/packages/core/configs/service.config.js +5 -0
- package/dist/packages/core/configs/service.config.js.map +1 -0
- package/dist/packages/core/constants/table.d.ts +4 -0
- package/dist/packages/core/constants/table.d.ts.map +1 -0
- package/dist/packages/core/constants/table.js +4 -0
- package/dist/packages/core/constants/table.js.map +1 -0
- package/dist/packages/core/controllers/entity/create-entity.controller.d.ts +8 -0
- package/dist/packages/core/controllers/entity/create-entity.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/entity/create-entity.controller.js +44 -0
- package/dist/packages/core/controllers/entity/create-entity.controller.js.map +1 -0
- package/dist/packages/core/controllers/entity/delete-entity.controller.d.ts +8 -0
- package/dist/packages/core/controllers/entity/delete-entity.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/entity/delete-entity.controller.js +29 -0
- package/dist/packages/core/controllers/entity/delete-entity.controller.js.map +1 -0
- package/dist/packages/core/controllers/entity/get-entity.controller.d.ts +8 -0
- package/dist/packages/core/controllers/entity/get-entity.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/entity/get-entity.controller.js +24 -0
- package/dist/packages/core/controllers/entity/get-entity.controller.js.map +1 -0
- package/dist/packages/core/controllers/entity/list-entities.controller.d.ts +8 -0
- package/dist/packages/core/controllers/entity/list-entities.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/entity/list-entities.controller.js +56 -0
- package/dist/packages/core/controllers/entity/list-entities.controller.js.map +1 -0
- package/dist/packages/core/controllers/entity/update-entity.controller.d.ts +8 -0
- package/dist/packages/core/controllers/entity/update-entity.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/entity/update-entity.controller.js +45 -0
- package/dist/packages/core/controllers/entity/update-entity.controller.js.map +1 -0
- package/dist/packages/core/controllers/entity/upsert-entity.controller.d.ts +10 -0
- package/dist/packages/core/controllers/entity/upsert-entity.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/entity/upsert-entity.controller.js +73 -0
- package/dist/packages/core/controllers/entity/upsert-entity.controller.js.map +1 -0
- package/dist/packages/core/controllers/mutual/create-mutual.controller.d.ts +10 -0
- package/dist/packages/core/controllers/mutual/create-mutual.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/mutual/create-mutual.controller.js +70 -0
- package/dist/packages/core/controllers/mutual/create-mutual.controller.js.map +1 -0
- package/dist/packages/core/controllers/mutual/delete-mutual.controller.d.ts +8 -0
- package/dist/packages/core/controllers/mutual/delete-mutual.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/mutual/delete-mutual.controller.js +31 -0
- package/dist/packages/core/controllers/mutual/delete-mutual.controller.js.map +1 -0
- package/dist/packages/core/controllers/mutual/get-mutual.controller.d.ts +8 -0
- package/dist/packages/core/controllers/mutual/get-mutual.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/mutual/get-mutual.controller.js +24 -0
- package/dist/packages/core/controllers/mutual/get-mutual.controller.js.map +1 -0
- package/dist/packages/core/controllers/mutual/list-entities-by-entity.controller.d.ts +8 -0
- package/dist/packages/core/controllers/mutual/list-entities-by-entity.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/mutual/list-entities-by-entity.controller.js +56 -0
- package/dist/packages/core/controllers/mutual/list-entities-by-entity.controller.js.map +1 -0
- package/dist/packages/core/controllers/mutual/update-mutual.controller.d.ts +8 -0
- package/dist/packages/core/controllers/mutual/update-mutual.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/mutual/update-mutual.controller.js +40 -0
- package/dist/packages/core/controllers/mutual/update-mutual.controller.js.map +1 -0
- package/dist/packages/core/controllers/setupRoutes.d.ts +3 -0
- package/dist/packages/core/controllers/setupRoutes.d.ts.map +1 -0
- package/dist/packages/core/controllers/setupRoutes.js +33 -0
- package/dist/packages/core/controllers/setupRoutes.js.map +1 -0
- package/dist/packages/core/controllers/tag/list-tags.controller.d.ts +8 -0
- package/dist/packages/core/controllers/tag/list-tags.controller.d.ts.map +1 -0
- package/dist/packages/core/controllers/tag/list-tags.controller.js +48 -0
- package/dist/packages/core/controllers/tag/list-tags.controller.js.map +1 -0
- package/dist/packages/core/data/DbUtils.d.ts +7 -0
- package/dist/packages/core/data/DbUtils.d.ts.map +1 -0
- package/dist/packages/core/data/DbUtils.js +23 -0
- package/dist/packages/core/data/DbUtils.js.map +1 -0
- package/dist/packages/core/data/Entity.d.ts +71 -0
- package/dist/packages/core/data/Entity.d.ts.map +1 -0
- package/dist/packages/core/data/Entity.js +358 -0
- package/dist/packages/core/data/Entity.js.map +1 -0
- package/dist/packages/core/data/EventUtils.d.ts +14 -0
- package/dist/packages/core/data/EventUtils.d.ts.map +1 -0
- package/dist/packages/core/data/EventUtils.js +34 -0
- package/dist/packages/core/data/EventUtils.js.map +1 -0
- package/dist/packages/core/data/FileObject.d.ts +62 -0
- package/dist/packages/core/data/FileObject.d.ts.map +1 -0
- package/dist/packages/core/data/FileObject.js +13 -0
- package/dist/packages/core/data/FileObject.js.map +1 -0
- package/dist/packages/core/data/Mutual.d.ts +94 -0
- package/dist/packages/core/data/Mutual.d.ts.map +1 -0
- package/dist/packages/core/data/Mutual.js +492 -0
- package/dist/packages/core/data/Mutual.js.map +1 -0
- package/dist/packages/core/data/ProjectionExpression.d.ts +6 -0
- package/dist/packages/core/data/ProjectionExpression.d.ts.map +1 -0
- package/dist/packages/core/data/ProjectionExpression.js +5 -0
- package/dist/packages/core/data/ProjectionExpression.js.map +1 -0
- package/dist/packages/core/data/Tag.d.ts +77 -0
- package/dist/packages/core/data/Tag.d.ts.map +1 -0
- package/dist/packages/core/data/Tag.js +330 -0
- package/dist/packages/core/data/Tag.js.map +1 -0
- package/dist/packages/core/data/abstract/Item.base.d.ts +11 -0
- package/dist/packages/core/data/abstract/Item.base.d.ts.map +1 -0
- package/dist/packages/core/data/abstract/Item.base.js +9 -0
- package/dist/packages/core/data/abstract/Item.base.js.map +1 -0
- package/dist/packages/core/data/abstract/Repository.base.d.ts +11 -0
- package/dist/packages/core/data/abstract/Repository.base.d.ts.map +1 -0
- package/dist/packages/core/data/abstract/Repository.base.js +54 -0
- package/dist/packages/core/data/abstract/Repository.base.js.map +1 -0
- package/dist/packages/core/errors/api-error.d.ts +23 -0
- package/dist/packages/core/errors/api-error.d.ts.map +1 -0
- package/dist/packages/core/errors/api-error.js +26 -0
- package/dist/packages/core/errors/api-error.js.map +1 -0
- package/dist/packages/core/errors/extendable-error.d.ts +18 -0
- package/dist/packages/core/errors/extendable-error.d.ts.map +1 -0
- package/dist/packages/core/errors/extendable-error.js +22 -0
- package/dist/packages/core/errors/extendable-error.js.map +1 -0
- package/dist/packages/core/errors/standard-error.d.ts +11 -0
- package/dist/packages/core/errors/standard-error.d.ts.map +1 -0
- package/dist/packages/core/errors/standard-error.js +21 -0
- package/dist/packages/core/errors/standard-error.js.map +1 -0
- package/dist/packages/core/helpers/dependencies.d.ts +8 -0
- package/dist/packages/core/helpers/dependencies.d.ts.map +1 -0
- package/dist/packages/core/helpers/dependencies.js +10 -0
- package/dist/packages/core/helpers/dependencies.js.map +1 -0
- package/dist/packages/core/helpers/event.d.ts +22 -0
- package/dist/packages/core/helpers/event.d.ts.map +1 -0
- package/dist/packages/core/helpers/event.js +47 -0
- package/dist/packages/core/helpers/event.js.map +1 -0
- package/dist/packages/core/helpers/fromLastKeyQuery.d.ts +3 -0
- package/dist/packages/core/helpers/fromLastKeyQuery.d.ts.map +1 -0
- package/dist/packages/core/helpers/fromLastKeyQuery.js +7 -0
- package/dist/packages/core/helpers/fromLastKeyQuery.js.map +1 -0
- package/dist/packages/core/helpers/sleep.d.ts +2 -0
- package/dist/packages/core/helpers/sleep.d.ts.map +1 -0
- package/dist/packages/core/helpers/sleep.js +2 -0
- package/dist/packages/core/helpers/sleep.js.map +1 -0
- package/dist/packages/core/helpers/toLastKeyResponse.d.ts +3 -0
- package/dist/packages/core/helpers/toLastKeyResponse.d.ts.map +1 -0
- package/dist/packages/core/helpers/toLastKeyResponse.js +7 -0
- package/dist/packages/core/helpers/toLastKeyResponse.js.map +1 -0
- package/dist/packages/core/index.d.ts +12 -0
- package/dist/packages/core/index.d.ts.map +1 -0
- package/dist/packages/core/index.js +12 -0
- package/dist/packages/core/index.js.map +1 -0
- package/dist/packages/core/middlewares/entity-type-check.d.ts +3 -0
- package/dist/packages/core/middlewares/entity-type-check.d.ts.map +1 -0
- package/dist/packages/core/middlewares/entity-type-check.js +12 -0
- package/dist/packages/core/middlewares/entity-type-check.js.map +1 -0
- package/dist/packages/core/middlewares/mutual-type-check.d.ts +3 -0
- package/dist/packages/core/middlewares/mutual-type-check.d.ts.map +1 -0
- package/dist/packages/core/middlewares/mutual-type-check.js +13 -0
- package/dist/packages/core/middlewares/mutual-type-check.js.map +1 -0
- package/dist/packages/core/mock/container.d.ts +3 -0
- package/dist/packages/core/mock/container.d.ts.map +1 -0
- package/dist/packages/core/mock/container.js +3 -0
- package/dist/packages/core/mock/container.js.map +1 -0
- package/dist/packages/core/mock/entity.d.ts +13 -0
- package/dist/packages/core/mock/entity.d.ts.map +1 -0
- package/dist/packages/core/mock/entity.js +14 -0
- package/dist/packages/core/mock/entity.js.map +1 -0
- package/dist/packages/core/mock/monorise/admin.d.ts +127 -0
- package/dist/packages/core/mock/monorise/admin.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/admin.js +29 -0
- package/dist/packages/core/mock/monorise/admin.js.map +1 -0
- package/dist/packages/core/mock/monorise/audio.d.ts +324 -0
- package/dist/packages/core/mock/monorise/audio.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/audio.js +32 -0
- package/dist/packages/core/mock/monorise/audio.js.map +1 -0
- package/dist/packages/core/mock/monorise/chapter.d.ts +457 -0
- package/dist/packages/core/mock/monorise/chapter.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/chapter.js +81 -0
- package/dist/packages/core/mock/monorise/chapter.js.map +1 -0
- package/dist/packages/core/mock/monorise/cohort-track.d.ts +118 -0
- package/dist/packages/core/mock/monorise/cohort-track.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/cohort-track.js +38 -0
- package/dist/packages/core/mock/monorise/cohort-track.js.map +1 -0
- package/dist/packages/core/mock/monorise/course-banner.d.ts +149 -0
- package/dist/packages/core/mock/monorise/course-banner.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/course-banner.js +24 -0
- package/dist/packages/core/mock/monorise/course-banner.js.map +1 -0
- package/dist/packages/core/mock/monorise/course.d.ts +311 -0
- package/dist/packages/core/mock/monorise/course.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/course.js +128 -0
- package/dist/packages/core/mock/monorise/course.js.map +1 -0
- package/dist/packages/core/mock/monorise/expert.d.ts +380 -0
- package/dist/packages/core/mock/monorise/expert.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/expert.js +32 -0
- package/dist/packages/core/mock/monorise/expert.js.map +1 -0
- package/dist/packages/core/mock/monorise/index.d.ts +3599 -0
- package/dist/packages/core/mock/monorise/index.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/index.js +62 -0
- package/dist/packages/core/mock/monorise/index.js.map +1 -0
- package/dist/packages/core/mock/monorise/learner-video-progress.d.ts +198 -0
- package/dist/packages/core/mock/monorise/learner-video-progress.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/learner-video-progress.js +21 -0
- package/dist/packages/core/mock/monorise/learner-video-progress.js.map +1 -0
- package/dist/packages/core/mock/monorise/learner.d.ts +390 -0
- package/dist/packages/core/mock/monorise/learner.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/learner.js +59 -0
- package/dist/packages/core/mock/monorise/learner.js.map +1 -0
- package/dist/packages/core/mock/monorise/learning-activity-submission.d.ts +160 -0
- package/dist/packages/core/mock/monorise/learning-activity-submission.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/learning-activity-submission.js +17 -0
- package/dist/packages/core/mock/monorise/learning-activity-submission.js.map +1 -0
- package/dist/packages/core/mock/monorise/learning-activity.d.ts +266 -0
- package/dist/packages/core/mock/monorise/learning-activity.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/learning-activity.js +50 -0
- package/dist/packages/core/mock/monorise/learning-activity.js.map +1 -0
- package/dist/packages/core/mock/monorise/learning-journey-config.d.ts +84 -0
- package/dist/packages/core/mock/monorise/learning-journey-config.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/learning-journey-config.js +27 -0
- package/dist/packages/core/mock/monorise/learning-journey-config.js.map +1 -0
- package/dist/packages/core/mock/monorise/learning-journey-progress.d.ts +290 -0
- package/dist/packages/core/mock/monorise/learning-journey-progress.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/learning-journey-progress.js +46 -0
- package/dist/packages/core/mock/monorise/learning-journey-progress.js.map +1 -0
- package/dist/packages/core/mock/monorise/module.d.ts +211 -0
- package/dist/packages/core/mock/monorise/module.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/module.js +91 -0
- package/dist/packages/core/mock/monorise/module.js.map +1 -0
- package/dist/packages/core/mock/monorise/organization.d.ts +346 -0
- package/dist/packages/core/mock/monorise/organization.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/organization.js +54 -0
- package/dist/packages/core/mock/monorise/organization.js.map +1 -0
- package/dist/packages/core/mock/monorise/pathway.d.ts +267 -0
- package/dist/packages/core/mock/monorise/pathway.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/pathway.js +221 -0
- package/dist/packages/core/mock/monorise/pathway.js.map +1 -0
- package/dist/packages/core/mock/monorise/phase.d.ts +580 -0
- package/dist/packages/core/mock/monorise/phase.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/phase.js +166 -0
- package/dist/packages/core/mock/monorise/phase.js.map +1 -0
- package/dist/packages/core/mock/monorise/reference.d.ts +171 -0
- package/dist/packages/core/mock/monorise/reference.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/reference.js +25 -0
- package/dist/packages/core/mock/monorise/reference.js.map +1 -0
- package/dist/packages/core/mock/monorise/track.d.ts +617 -0
- package/dist/packages/core/mock/monorise/track.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/track.js +270 -0
- package/dist/packages/core/mock/monorise/track.js.map +1 -0
- package/dist/packages/core/mock/monorise/video.d.ts +346 -0
- package/dist/packages/core/mock/monorise/video.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise/video.js +33 -0
- package/dist/packages/core/mock/monorise/video.js.map +1 -0
- package/dist/packages/core/mock/monorise.d.ts +6 -0
- package/dist/packages/core/mock/monorise.d.ts.map +1 -0
- package/dist/packages/core/mock/monorise.js +5 -0
- package/dist/packages/core/mock/monorise.js.map +1 -0
- package/dist/packages/core/processors/create-entity-processor.d.ts +5 -0
- package/dist/packages/core/processors/create-entity-processor.d.ts.map +1 -0
- package/dist/packages/core/processors/create-entity-processor.js +32 -0
- package/dist/packages/core/processors/create-entity-processor.js.map +1 -0
- package/dist/packages/core/processors/mutual-processor.d.ts +15 -0
- package/dist/packages/core/processors/mutual-processor.d.ts.map +1 -0
- package/dist/packages/core/processors/mutual-processor.js +128 -0
- package/dist/packages/core/processors/mutual-processor.js.map +1 -0
- package/dist/packages/core/processors/prejoin-processor.d.ts +12 -0
- package/dist/packages/core/processors/prejoin-processor.d.ts.map +1 -0
- package/dist/packages/core/processors/prejoin-processor.js +150 -0
- package/dist/packages/core/processors/prejoin-processor.js.map +1 -0
- package/dist/packages/core/processors/replication-processor.d.ts +8 -0
- package/dist/packages/core/processors/replication-processor.d.ts.map +1 -0
- package/dist/packages/core/processors/replication-processor.js +180 -0
- package/dist/packages/core/processors/replication-processor.js.map +1 -0
- package/dist/packages/core/processors/tag-processor.d.ts +11 -0
- package/dist/packages/core/processors/tag-processor.d.ts.map +1 -0
- package/dist/packages/core/processors/tag-processor.js +106 -0
- package/dist/packages/core/processors/tag-processor.js.map +1 -0
- package/dist/packages/core/services/DependencyContainer.d.ts +51 -0
- package/dist/packages/core/services/DependencyContainer.d.ts.map +1 -0
- package/dist/packages/core/services/DependencyContainer.js +115 -0
- package/dist/packages/core/services/DependencyContainer.js.map +1 -0
- package/dist/packages/core/services/entity-service-lifecycle.d.ts +12 -0
- package/dist/packages/core/services/entity-service-lifecycle.d.ts.map +1 -0
- package/dist/packages/core/services/entity-service-lifecycle.js +23 -0
- package/dist/packages/core/services/entity-service-lifecycle.js.map +1 -0
- package/dist/packages/core/services/entity.service.d.ts +32 -0
- package/dist/packages/core/services/entity.service.d.ts.map +1 -0
- package/dist/packages/core/services/entity.service.js +121 -0
- package/dist/packages/core/services/entity.service.js.map +1 -0
- package/dist/packages/core/services/mutual.service.d.ts +64 -0
- package/dist/packages/core/services/mutual.service.d.ts.map +1 -0
- package/dist/packages/core/services/mutual.service.js +144 -0
- package/dist/packages/core/services/mutual.service.js.map +1 -0
- package/dist/packages/core/types/entity.type.d.ts +20 -0
- package/dist/packages/core/types/entity.type.d.ts.map +1 -0
- package/dist/packages/core/types/entity.type.js +2 -0
- package/dist/packages/core/types/entity.type.js.map +1 -0
- package/dist/processors/create-entity-processor.d.ts +5 -0
- package/dist/processors/create-entity-processor.d.ts.map +1 -0
- package/dist/processors/create-entity-processor.js +33 -0
- package/dist/processors/create-entity-processor.js.map +1 -0
- package/dist/processors/mutual-processor.d.ts +15 -0
- package/dist/processors/mutual-processor.d.ts.map +1 -0
- package/dist/processors/mutual-processor.js +129 -0
- package/dist/processors/mutual-processor.js.map +1 -0
- package/dist/processors/prejoin-processor.d.ts +12 -0
- package/dist/processors/prejoin-processor.d.ts.map +1 -0
- package/dist/processors/prejoin-processor.js +151 -0
- package/dist/processors/prejoin-processor.js.map +1 -0
- package/dist/processors/replication-processor.d.ts +8 -0
- package/dist/processors/replication-processor.d.ts.map +1 -0
- package/dist/processors/replication-processor.js +181 -0
- package/dist/processors/replication-processor.js.map +1 -0
- package/dist/processors/tag-processor.d.ts +11 -0
- package/dist/processors/tag-processor.d.ts.map +1 -0
- package/dist/processors/tag-processor.js +107 -0
- package/dist/processors/tag-processor.js.map +1 -0
- package/dist/services/DependencyContainer.d.ts +51 -0
- package/dist/services/DependencyContainer.d.ts.map +1 -0
- package/dist/services/DependencyContainer.js +115 -0
- package/dist/services/DependencyContainer.js.map +1 -0
- package/dist/services/entity-service-lifecycle.d.ts +12 -0
- package/dist/services/entity-service-lifecycle.d.ts.map +1 -0
- package/dist/services/entity-service-lifecycle.js +23 -0
- package/dist/services/entity-service-lifecycle.js.map +1 -0
- package/dist/services/entity.service.d.ts +32 -0
- package/dist/services/entity.service.d.ts.map +1 -0
- package/dist/services/entity.service.js +121 -0
- package/dist/services/entity.service.js.map +1 -0
- package/dist/services/mutual.service.d.ts +64 -0
- package/dist/services/mutual.service.d.ts.map +1 -0
- package/dist/services/mutual.service.js +144 -0
- package/dist/services/mutual.service.js.map +1 -0
- package/dist/shared/types/event.d.ts +72 -0
- package/dist/shared/types/event.d.ts.map +1 -0
- package/dist/shared/types/event.js +74 -0
- package/dist/shared/types/event.js.map +1 -0
- package/dist/types/entity.type.d.ts +20 -0
- package/dist/types/entity.type.d.ts.map +1 -0
- package/dist/types/entity.type.js +2 -0
- package/dist/types/entity.type.js.map +1 -0
- package/dist/types/event.d.ts +72 -0
- package/dist/types/event.d.ts.map +1 -0
- package/dist/types/event.js +74 -0
- package/dist/types/event.js.map +1 -0
- package/errors/api-error.ts +39 -0
- package/errors/extendable-error.ts +35 -0
- package/errors/standard-error.ts +29 -0
- package/helpers/dependencies.ts +10 -0
- package/helpers/event.ts +85 -0
- package/helpers/fromLastKeyQuery.ts +11 -0
- package/helpers/sleep.ts +1 -0
- package/helpers/toLastKeyResponse.ts +11 -0
- package/index.ts +23 -0
- package/middlewares/entity-type-check.ts +20 -0
- package/middlewares/mutual-type-check.ts +26 -0
- package/mock/entity.ts +12 -0
- package/mock/monorise/admin.ts +35 -0
- package/mock/monorise/chapter.ts +94 -0
- package/mock/monorise/course.ts +149 -0
- package/mock/monorise/index.ts +143 -0
- package/mock/monorise/learner.ts +66 -0
- package/mock/monorise/learning-activity.ts +62 -0
- package/mock/monorise/learning-journey-config.ts +34 -0
- package/mock/monorise/module.ts +108 -0
- package/mock/monorise/organization.ts +63 -0
- package/mock/monorise/reference.ts +28 -0
- package/mock/monorise/video.ts +36 -0
- package/package.json +31 -0
- package/processors/create-entity-processor.ts +55 -0
- package/processors/mutual-processor.ts +262 -0
- package/processors/prejoin-processor.ts +264 -0
- package/processors/replication-processor.ts +261 -0
- package/processors/tag-processor.ts +174 -0
- package/services/DependencyContainer.ts +208 -0
- package/services/entity-service-lifecycle.ts +41 -0
- package/services/entity.service.ts +201 -0
- package/services/mutual.service.ts +285 -0
- package/tsconfig.json +118 -0
- package/types/entity.type.ts +62 -0
- package/types/event.ts +84 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { ulid } from 'ulid';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { Entity } from '#/data/Entity';
|
|
4
|
+
import { Mutual } from '#/data/Mutual';
|
|
5
|
+
import { EVENT } from '#/shared/types/event';
|
|
6
|
+
import { afterCreateEntityHook } from './entity-service-lifecycle';
|
|
7
|
+
export class MutualService {
|
|
8
|
+
entityRepository;
|
|
9
|
+
mutualRepository;
|
|
10
|
+
publishEvent;
|
|
11
|
+
eventUtils;
|
|
12
|
+
ddbUtils;
|
|
13
|
+
constructor(entityRepository, mutualRepository, publishEvent, eventUtils, ddbUtils) {
|
|
14
|
+
this.entityRepository = entityRepository;
|
|
15
|
+
this.mutualRepository = mutualRepository;
|
|
16
|
+
this.publishEvent = publishEvent;
|
|
17
|
+
this.eventUtils = eventUtils;
|
|
18
|
+
this.ddbUtils = ddbUtils;
|
|
19
|
+
}
|
|
20
|
+
createMutual = async ({ byEntityType, byEntityId, entityType, entityId, mutualPayload, accountId, options = {}, }) => {
|
|
21
|
+
const { ensureEntityStrongConsistentWrite = false, asEntity, createAndUpdateDatetime, mutualId, skipMutualCreation = false, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } = options;
|
|
22
|
+
const errorContext = {
|
|
23
|
+
arguments: {
|
|
24
|
+
byEntityType,
|
|
25
|
+
byEntityId,
|
|
26
|
+
entityType,
|
|
27
|
+
entityId,
|
|
28
|
+
mutualPayload,
|
|
29
|
+
options,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
// TODO: schema validation for mutual data by config
|
|
33
|
+
const schema = z.record(z.string(), z.any());
|
|
34
|
+
const parsedMutualPayload = schema.parse(mutualPayload);
|
|
35
|
+
const [{ data: byEntityData }, { data: entityData }] = await Promise.all([
|
|
36
|
+
this.entityRepository.getEntity(byEntityType, byEntityId),
|
|
37
|
+
this.entityRepository.getEntity(entityType, entityId),
|
|
38
|
+
]);
|
|
39
|
+
errorContext.byEntityData = byEntityData;
|
|
40
|
+
errorContext.entityData = entityData;
|
|
41
|
+
await this.mutualRepository.checkMutualExist(byEntityType, byEntityId, entityType, entityId);
|
|
42
|
+
const currentDatetime = createAndUpdateDatetime || new Date();
|
|
43
|
+
const mutual = new Mutual(byEntityType, byEntityId, byEntityData, entityType, entityId, entityData, parsedMutualPayload, mutualId || ulid(), currentDatetime, currentDatetime, currentDatetime);
|
|
44
|
+
const mutualTransactions = skipMutualCreation
|
|
45
|
+
? []
|
|
46
|
+
: this.mutualRepository.createMutualTransactItems(mutual, {
|
|
47
|
+
ConditionExpression,
|
|
48
|
+
ExpressionAttributeNames,
|
|
49
|
+
ExpressionAttributeValues,
|
|
50
|
+
});
|
|
51
|
+
const entityTransactions = [];
|
|
52
|
+
let entity;
|
|
53
|
+
// construct entity transact item only if need to ensure strong consistent write
|
|
54
|
+
if (asEntity && ensureEntityStrongConsistentWrite) {
|
|
55
|
+
entity = new Entity(asEntity, mutual.mutualId, parsedMutualPayload, currentDatetime, currentDatetime);
|
|
56
|
+
entityTransactions.push(...this.entityRepository.createEntityTransactItems(entity, {
|
|
57
|
+
mutualId: mutual.mainPk,
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
// write to db regardless of options
|
|
61
|
+
const createTransactItems = [...mutualTransactions, ...entityTransactions];
|
|
62
|
+
errorContext.createTransactItems = createTransactItems;
|
|
63
|
+
await this.ddbUtils.executeTransactWrite({
|
|
64
|
+
TransactItems: createTransactItems,
|
|
65
|
+
});
|
|
66
|
+
// duplicated behaviour from entityService.createEntity after write success
|
|
67
|
+
if (asEntity && entity && ensureEntityStrongConsistentWrite) {
|
|
68
|
+
await afterCreateEntityHook({
|
|
69
|
+
entity,
|
|
70
|
+
entityPayload: mutualPayload,
|
|
71
|
+
accountId,
|
|
72
|
+
publishEvent: this.publishEvent,
|
|
73
|
+
eventUtils: this.eventUtils,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// publish an event to create entity if asEntity defined
|
|
77
|
+
// since it's event-driven, it would be the creation of entity
|
|
78
|
+
// would be eventual consistent
|
|
79
|
+
if (options.asEntity && !ensureEntityStrongConsistentWrite) {
|
|
80
|
+
await this.publishEvent({
|
|
81
|
+
event: EVENT.CORE.CREATE_ENTITY,
|
|
82
|
+
payload: {
|
|
83
|
+
entityType: options.asEntity,
|
|
84
|
+
entityId: mutual.mutualId,
|
|
85
|
+
entityPayload: mutual.mutualData,
|
|
86
|
+
accountId,
|
|
87
|
+
options: {
|
|
88
|
+
createAndUpdateDatetime: mutual.createdAt,
|
|
89
|
+
mutualId: mutual.mutualId,
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
const eventPayload = {
|
|
95
|
+
byEntityType,
|
|
96
|
+
byEntityId,
|
|
97
|
+
entityType,
|
|
98
|
+
entityId,
|
|
99
|
+
parsedMutualPayload,
|
|
100
|
+
accountId,
|
|
101
|
+
publishedAt: new Date().toISOString(),
|
|
102
|
+
};
|
|
103
|
+
const eventPromises = [
|
|
104
|
+
this.publishEvent({
|
|
105
|
+
event: EVENT.CORE.MUTUAL_CREATED,
|
|
106
|
+
payload: eventPayload,
|
|
107
|
+
}),
|
|
108
|
+
];
|
|
109
|
+
await Promise.all(eventPromises);
|
|
110
|
+
return { mutual, eventPayload };
|
|
111
|
+
};
|
|
112
|
+
updateMutual = async ({ byEntityType, byEntityId, entityType, entityId, mutualPayload, accountId, options, }) => {
|
|
113
|
+
const schema = z.record(z.string(), z.any());
|
|
114
|
+
const parsedMutualPayload = schema.parse(mutualPayload);
|
|
115
|
+
const mutual = await this.mutualRepository.updateMutual(byEntityType, byEntityId, entityType, entityId, { mutualData: parsedMutualPayload }, options);
|
|
116
|
+
await this.publishEvent({
|
|
117
|
+
event: EVENT.CORE.MUTUAL_UPDATED,
|
|
118
|
+
payload: {
|
|
119
|
+
byEntityType,
|
|
120
|
+
byEntityId,
|
|
121
|
+
entityType,
|
|
122
|
+
entityId,
|
|
123
|
+
parsedMutualPayload,
|
|
124
|
+
updatedByAccountId: accountId,
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
return mutual;
|
|
128
|
+
};
|
|
129
|
+
deleteMutual = async ({ byEntityType, byEntityId, entityType, entityId, accountId, }) => {
|
|
130
|
+
const mutual = await this.mutualRepository.deleteMutual(byEntityType, byEntityId, entityType, entityId);
|
|
131
|
+
await this.publishEvent({
|
|
132
|
+
event: EVENT.CORE.MUTUAL_UPDATED,
|
|
133
|
+
payload: {
|
|
134
|
+
byEntityType,
|
|
135
|
+
byEntityId,
|
|
136
|
+
entityType,
|
|
137
|
+
entityId,
|
|
138
|
+
deletedByAccountId: accountId,
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
return mutual;
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=mutual.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutual.service.js","sourceRoot":"","sources":["../../../../services/mutual.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Entity as EntityType } from '@monorise/base';
|
|
2
|
+
import type { Mutual } from '#/data/Mutual';
|
|
3
|
+
export type Tag = {
|
|
4
|
+
group?: string;
|
|
5
|
+
sortValue?: string;
|
|
6
|
+
};
|
|
7
|
+
type Prejoins = {
|
|
8
|
+
mutualField: string;
|
|
9
|
+
targetEntityType: EntityType;
|
|
10
|
+
entityPaths: {
|
|
11
|
+
skipCache?: boolean;
|
|
12
|
+
entityType: EntityType;
|
|
13
|
+
processor?: (items: Mutual<EntityType, EntityType, Record<string, unknown>>[], context: Record<string, unknown>) => {
|
|
14
|
+
items: Mutual<EntityType, EntityType, Record<string, unknown>>[];
|
|
15
|
+
context?: Record<string, unknown>;
|
|
16
|
+
};
|
|
17
|
+
}[];
|
|
18
|
+
}[];
|
|
19
|
+
export type { Prejoins };
|
|
20
|
+
//# sourceMappingURL=entity.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.type.d.ts","sourceRoot":"","sources":["../../../../types/entity.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,MAAM,GAAG,GAAG;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,WAAW,EAAE;QACX,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,EAChE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B;YACH,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACnC,CAAC;KACH,EAAE,CAAC;CACL,EAAE,CAAC;AAqCJ,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.type.js","sourceRoot":"","sources":["../../../../types/entity.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-entity-processor.d.ts","sourceRoot":"","sources":["../../processors/create-entity-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkBhE,eAAO,MAAM,OAAO,GAAU,IAAI,QAAQ;;EAmCzC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { StandardError } from '#/errors/standard-error';
|
|
2
|
+
import { parseSQSBusEvent } from '#/helpers/event';
|
|
3
|
+
import { DependencyContainer } from '#/services/DependencyContainer';
|
|
4
|
+
const container = new DependencyContainer();
|
|
5
|
+
export const handler = async (ev) => {
|
|
6
|
+
const { entityService } = container;
|
|
7
|
+
const batchItemFailures = [];
|
|
8
|
+
for (const record of ev.Records) {
|
|
9
|
+
const errorContext = {};
|
|
10
|
+
const body = parseSQSBusEvent(record.body);
|
|
11
|
+
const { detail } = body;
|
|
12
|
+
const { entityType, entityId, entityPayload, accountId, options } = detail;
|
|
13
|
+
errorContext.body = body;
|
|
14
|
+
try {
|
|
15
|
+
await entityService.createEntity({
|
|
16
|
+
entityType,
|
|
17
|
+
entityId,
|
|
18
|
+
entityPayload,
|
|
19
|
+
accountId,
|
|
20
|
+
options,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
console.error('=====CREATE_ENTITY_PROCESSOR_ERROR=====', err, JSON.stringify({ errorContext }, null, 2));
|
|
25
|
+
if (err instanceof StandardError && err.code === 'INVALID_ENTITY_TYPE') {
|
|
26
|
+
continue; // do not retry
|
|
27
|
+
}
|
|
28
|
+
batchItemFailures.push({ itemIdentifier: record.messageId });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { batchItemFailures };
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=create-entity-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-entity-processor.js","sourceRoot":"","sources":["../../processors/create-entity-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,MAAM,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAa5C,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAAY,EAAE,EAAE;IAC5C,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACpC,MAAM,iBAAiB,GAA0B,EAAE,CAAC;IAEpD,KAAK,MAAM,MAAM,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,YAAY,GAA4B,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,gBAAgB,CAAkB,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3E,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,YAAY,CAAC;gBAC/B,UAAU;gBACV,QAAQ;gBACR,aAAa;gBACb,SAAS;gBACT,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,yCAAyC,EACzC,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAC1C,CAAC;YAEF,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACvE,SAAS,CAAC,eAAe;YAC3B,CAAC;YAED,iBAAiB,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC/B,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Entity } from '@monorise/base';
|
|
2
|
+
import type { SQSBatchItemFailure, SQSEvent } from 'aws-lambda';
|
|
3
|
+
export type EventDetailBody = {
|
|
4
|
+
mutualIds: string[];
|
|
5
|
+
byEntityType: Entity;
|
|
6
|
+
byEntityId: string;
|
|
7
|
+
entityType: Entity;
|
|
8
|
+
field: string;
|
|
9
|
+
publishedAt: string;
|
|
10
|
+
customContext?: Record<string, unknown>;
|
|
11
|
+
};
|
|
12
|
+
export declare const handler: (ev: SQSEvent) => Promise<{
|
|
13
|
+
batchItemFailures: SQSBatchItemFailure[];
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=mutual-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutual-processor.d.ts","sourceRoot":"","sources":["../../processors/mutual-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQhE,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,CAAC;AASF,eAAO,MAAM,OAAO,GAAU,IAAI,QAAQ;;EA0OzC,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { TransactionCanceledException } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { Mutual } from '#/data/Mutual';
|
|
3
|
+
import { StandardError } from '#/errors/standard-error';
|
|
4
|
+
import { parseSQSBusEvent } from '#/helpers/event';
|
|
5
|
+
import { EntityConfig } from '#/lambda-layer/monorise';
|
|
6
|
+
import { DependencyContainer } from '#/services/DependencyContainer';
|
|
7
|
+
import { EVENT } from '#/types/event';
|
|
8
|
+
const container = new DependencyContainer();
|
|
9
|
+
const processEntities = async (entityIds, action) => Promise.allSettled(entityIds.map(action));
|
|
10
|
+
export const handler = async (ev) => {
|
|
11
|
+
const batchItemFailures = [];
|
|
12
|
+
const { entityRepository, mutualRepository, publishEvent } = container;
|
|
13
|
+
await Promise.allSettled(ev.Records.map(async (record) => {
|
|
14
|
+
const errorContext = {};
|
|
15
|
+
const body = parseSQSBusEvent(record.body);
|
|
16
|
+
const { detail } = body;
|
|
17
|
+
const { mutualIds, byEntityType, byEntityId, entityType, field, publishedAt, customContext, } = detail;
|
|
18
|
+
errorContext.body = body;
|
|
19
|
+
try {
|
|
20
|
+
// Validate if mutual configuration exists
|
|
21
|
+
const config = EntityConfig[byEntityType]?.mutual?.mutualFields?.[field];
|
|
22
|
+
if (!config) {
|
|
23
|
+
throw new StandardError('INVALID_MUTUAL', 'Invalid mutual');
|
|
24
|
+
}
|
|
25
|
+
const mutualDataProcessor = config.mutualDataProcessor ?? (() => ({}));
|
|
26
|
+
// Create a lock to prevent concurrent modifications
|
|
27
|
+
await mutualRepository.createMutualLock({
|
|
28
|
+
byEntityType,
|
|
29
|
+
byEntityId,
|
|
30
|
+
entityType,
|
|
31
|
+
version: publishedAt,
|
|
32
|
+
});
|
|
33
|
+
// Fetch related entities in parallel
|
|
34
|
+
const [byEntity, mutuals] = await Promise.all([
|
|
35
|
+
entityRepository.getEntity(byEntityType, byEntityId),
|
|
36
|
+
mutualRepository.listEntitiesByEntity(byEntityType, byEntityId, entityType),
|
|
37
|
+
]);
|
|
38
|
+
// Determine which entities were added, removed, or need updates
|
|
39
|
+
const existingEntityIds = new Set(mutuals.items.map((m) => m.entityId));
|
|
40
|
+
const newMutualIds = new Set(mutualIds ?? []);
|
|
41
|
+
const addedEntityIds = [...newMutualIds].filter((id) => !existingEntityIds.has(id));
|
|
42
|
+
const deletedEntityIds = [...existingEntityIds].filter((id) => !newMutualIds.has(id));
|
|
43
|
+
const toUpdateEntityIds = [...existingEntityIds].filter((id) => newMutualIds.has(id));
|
|
44
|
+
errorContext.existingEntityIds = [...existingEntityIds];
|
|
45
|
+
errorContext.addedEntityIds = addedEntityIds;
|
|
46
|
+
errorContext.deletedEntityIds = deletedEntityIds;
|
|
47
|
+
errorContext.toUpdateEntityIds = toUpdateEntityIds;
|
|
48
|
+
const addEntities = await processEntities(addedEntityIds, async (id) => {
|
|
49
|
+
const entity = await entityRepository.getEntity(entityType, id);
|
|
50
|
+
await mutualRepository.createMutual(byEntityType, byEntityId, byEntity.data, entityType, id, entity.data, mutualDataProcessor(mutualIds, new Mutual(byEntityType, byEntityId, byEntity.data, entityType, id, entity.data, {}), customContext), {
|
|
51
|
+
ConditionExpression: 'attribute_not_exists(#mutualUpdatedAt) OR #mutualUpdatedAt < :publishedAt',
|
|
52
|
+
ExpressionAttributeNames: {
|
|
53
|
+
'#mutualUpdatedAt': 'mutualUpdatedAt',
|
|
54
|
+
},
|
|
55
|
+
ExpressionAttributeValues: {
|
|
56
|
+
':publishedAt': { S: publishedAt },
|
|
57
|
+
},
|
|
58
|
+
createAndUpdateDatetime: new Date(publishedAt),
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
const deleteEntities = await processEntities(deletedEntityIds, async (id) => {
|
|
62
|
+
await mutualRepository.deleteMutual(byEntityType, byEntityId, entityType, id, {
|
|
63
|
+
ConditionExpression: 'attribute_exists(PK) AND #mutualUpdatedAt < :publishedAt',
|
|
64
|
+
ExpressionAttributeNames: {
|
|
65
|
+
'#mutualUpdatedAt': 'mutualUpdatedAt',
|
|
66
|
+
},
|
|
67
|
+
ExpressionAttributeValues: {
|
|
68
|
+
':publishedAt': { S: publishedAt },
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
const updateEntities = await processEntities(toUpdateEntityIds, async (id) => {
|
|
73
|
+
await mutualRepository.updateMutual(byEntityType, byEntityId, entityType, id, {
|
|
74
|
+
mutualData: mutualDataProcessor(mutualIds, new Mutual(byEntityType, byEntityId, byEntity.data, entityType, id, {}, {}), customContext),
|
|
75
|
+
mutualUpdatedAt: publishedAt,
|
|
76
|
+
}, {
|
|
77
|
+
ConditionExpression: 'attribute_exists(PK) AND #mutualUpdatedAt < :publishedAt',
|
|
78
|
+
ExpressionAttributeNames: {
|
|
79
|
+
'#mutualUpdatedAt': 'mutualUpdatedAt',
|
|
80
|
+
},
|
|
81
|
+
ExpressionAttributeValues: {
|
|
82
|
+
':publishedAt': { S: publishedAt },
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
errorContext.results = { addEntities, deleteEntities, updateEntities };
|
|
87
|
+
// release lock
|
|
88
|
+
await mutualRepository.deleteMutualLock({
|
|
89
|
+
byEntityType,
|
|
90
|
+
byEntityId,
|
|
91
|
+
entityType,
|
|
92
|
+
});
|
|
93
|
+
// Check for unprocessable errors in processing results
|
|
94
|
+
if ([...addEntities, ...deleteEntities, ...updateEntities].some((res) => res.status === 'rejected' &&
|
|
95
|
+
!(res.reason instanceof TransactionCanceledException ||
|
|
96
|
+
(res.reason instanceof StandardError &&
|
|
97
|
+
res.reason.code === 'MUTUAL_NOT_FOUND')))) {
|
|
98
|
+
throw new StandardError('MUTUAL_PROCESSOR_ERROR', 'Mutual processor error', null, errorContext);
|
|
99
|
+
}
|
|
100
|
+
await publishEvent({
|
|
101
|
+
event: EVENT.CORE.ENTITY_MUTUAL_PROCESSED,
|
|
102
|
+
payload: {
|
|
103
|
+
byEntityType,
|
|
104
|
+
byEntityId,
|
|
105
|
+
entityType,
|
|
106
|
+
field,
|
|
107
|
+
mutualIds,
|
|
108
|
+
publishedAt,
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
console.error('=====MUTUAL_PROCESSOR_ERROR=====', err, JSON.stringify({ errorContext }, null, 2));
|
|
114
|
+
// Release the lock to avoid deadlocks
|
|
115
|
+
await mutualRepository.deleteMutualLock({
|
|
116
|
+
byEntityType,
|
|
117
|
+
byEntityId,
|
|
118
|
+
entityType,
|
|
119
|
+
});
|
|
120
|
+
if (err instanceof StandardError &&
|
|
121
|
+
['INVALID_MUTUAL', 'MUTUAL_LOCK_CONFLICT'].includes(err.code)) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
batchItemFailures.push({ itemIdentifier: record.messageId });
|
|
125
|
+
}
|
|
126
|
+
}));
|
|
127
|
+
return { batchItemFailures };
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=mutual-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutual-processor.js","sourceRoot":"","sources":["../../processors/mutual-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Entity } from '@monorise/base';
|
|
2
|
+
import type { SQSBatchItemFailure, SQSEvent } from 'aws-lambda';
|
|
3
|
+
export type EventDetailBody = {
|
|
4
|
+
byEntityType: Entity;
|
|
5
|
+
byEntityId: string;
|
|
6
|
+
entityType: Entity;
|
|
7
|
+
publishedAt: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const handler: (ev: SQSEvent) => Promise<{
|
|
10
|
+
batchItemFailures: SQSBatchItemFailure[];
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=prejoin-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prejoin-processor.d.ts","sourceRoot":"","sources":["../../processors/prejoin-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAWhE,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AA2LF,eAAO,MAAM,OAAO,GAAU,IAAI,QAAQ;;EA2DzC,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { PROJECTION_EXPRESSION } from '#/data/ProjectionExpression';
|
|
2
|
+
import { parseSQSBusEvent } from '#/helpers/event';
|
|
3
|
+
import { AllowedEntityTypes, EntityConfig } from '#/lambda-layer/monorise';
|
|
4
|
+
import { DependencyContainer } from '#/services/DependencyContainer';
|
|
5
|
+
import { EVENT } from '#/types/event';
|
|
6
|
+
const container = new DependencyContainer();
|
|
7
|
+
async function processPrejoins({ mutualRepository, publishEvent, byEntityType, byEntityId, prejoins, publishedAt, }) {
|
|
8
|
+
const mutualCache = {
|
|
9
|
+
/*
|
|
10
|
+
course: [{
|
|
11
|
+
byEntityType: 'module',
|
|
12
|
+
byEntityId: '1',
|
|
13
|
+
entityType: 'course',
|
|
14
|
+
entityId: '1',
|
|
15
|
+
}],
|
|
16
|
+
module: [],
|
|
17
|
+
chapter: [],
|
|
18
|
+
video: []
|
|
19
|
+
*/
|
|
20
|
+
};
|
|
21
|
+
//initiate
|
|
22
|
+
mutualCache[byEntityType] = [
|
|
23
|
+
{
|
|
24
|
+
entityType: byEntityType,
|
|
25
|
+
entityId: byEntityId,
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
for (const { mutualField, targetEntityType, entityPaths } of prejoins) {
|
|
29
|
+
let toBePublishedContext = {};
|
|
30
|
+
for (const [index, entityPath] of entityPaths.entries()) {
|
|
31
|
+
const entityType = entityPath.entityType;
|
|
32
|
+
// skip cached
|
|
33
|
+
if (!entityPath.skipCache && mutualCache[entityType]) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// if skipping cache should not have previous run data
|
|
37
|
+
mutualCache[entityType] = [];
|
|
38
|
+
const parentEntityType = entityPaths[index - 1]
|
|
39
|
+
.entityType;
|
|
40
|
+
const parentEntities = mutualCache[parentEntityType] ?? [];
|
|
41
|
+
// find all nested entities
|
|
42
|
+
for (const parentEntity of parentEntities) {
|
|
43
|
+
const { entityType: parentEntityType, entityId: parentEntityId } = parentEntity;
|
|
44
|
+
const { items: mutualItems } = await mutualRepository.listEntitiesByEntity(parentEntityType, parentEntityId, entityPath.entityType, {
|
|
45
|
+
ProjectionExpression: PROJECTION_EXPRESSION.MUTUAL_DATA_ONLY,
|
|
46
|
+
});
|
|
47
|
+
// custom processor defined in prejoin config for each path
|
|
48
|
+
const processor = entityPath.processor || ((items, context) => ({ items, context }));
|
|
49
|
+
const processed = processor(mutualItems, toBePublishedContext);
|
|
50
|
+
toBePublishedContext = processed?.context || toBePublishedContext;
|
|
51
|
+
mutualCache[entityType] = [
|
|
52
|
+
...(mutualCache[entityType] ?? []),
|
|
53
|
+
...(processed ? processed.items : mutualItems),
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
if (!mutualCache[entityType] && !Array.isArray(mutualCache[entityType])) {
|
|
57
|
+
// to avoid empty array
|
|
58
|
+
mutualCache[entityType] = [];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const mutualIds = (mutualCache[targetEntityType] ?? []).map((item) => item.entityId);
|
|
62
|
+
await publishEvent({
|
|
63
|
+
event: EVENT.CORE.ENTITY_MUTUAL_TO_UPDATE,
|
|
64
|
+
payload: {
|
|
65
|
+
byEntityType,
|
|
66
|
+
byEntityId,
|
|
67
|
+
entityType: targetEntityType,
|
|
68
|
+
field: mutualField,
|
|
69
|
+
mutualIds,
|
|
70
|
+
customContext: toBePublishedContext,
|
|
71
|
+
publishedAt,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function publishToSubscribers({ mutualRepository, publishEvent, byEntityType, byEntityId, publishedAt, }) {
|
|
77
|
+
const listeners = AllowedEntityTypes.reduce((acc, configKey) => {
|
|
78
|
+
const { subscribes } = EntityConfig[configKey].mutual ?? {};
|
|
79
|
+
const hasSubscription = (subscribes ?? []).some(({ entityType }) => entityType === byEntityType);
|
|
80
|
+
return [
|
|
81
|
+
...acc,
|
|
82
|
+
...(hasSubscription
|
|
83
|
+
? [
|
|
84
|
+
{
|
|
85
|
+
entityType: configKey,
|
|
86
|
+
},
|
|
87
|
+
]
|
|
88
|
+
: []),
|
|
89
|
+
];
|
|
90
|
+
}, []);
|
|
91
|
+
// publish event for each interested entity
|
|
92
|
+
const subscribedMutualItems = await Promise.all(listeners.map(({ entityType: subscribedEntityType }) => mutualRepository.listEntitiesByEntity(byEntityType, byEntityId, subscribedEntityType, {
|
|
93
|
+
ProjectionExpression: PROJECTION_EXPRESSION.NO_DATA,
|
|
94
|
+
})));
|
|
95
|
+
const subscribedMutuals = subscribedMutualItems.flatMap((item) => item.items);
|
|
96
|
+
await Promise.all(subscribedMutuals.map((subscribedMutual) => publishEvent({
|
|
97
|
+
event: EVENT.CORE.PREJOIN_RELATIONSHIP_SYNC,
|
|
98
|
+
payload: {
|
|
99
|
+
byEntityType: subscribedMutual.entityType,
|
|
100
|
+
byEntityId: subscribedMutual.entityId,
|
|
101
|
+
entityType: subscribedMutual.byEntityType,
|
|
102
|
+
publishedAt,
|
|
103
|
+
},
|
|
104
|
+
})));
|
|
105
|
+
}
|
|
106
|
+
export const handler = async (ev) => {
|
|
107
|
+
const batchItemFailures = [];
|
|
108
|
+
const { mutualRepository, publishEvent } = container;
|
|
109
|
+
for (const record of ev.Records) {
|
|
110
|
+
const body = parseSQSBusEvent(record.body);
|
|
111
|
+
const { detail } = body;
|
|
112
|
+
const { byEntityType, byEntityId, entityType, publishedAt } = detail;
|
|
113
|
+
let errorContext = {
|
|
114
|
+
body,
|
|
115
|
+
};
|
|
116
|
+
try {
|
|
117
|
+
const isEntityTypeSubscribed = (EntityConfig[byEntityType]?.mutual?.subscribes ?? []).some(({ entityType: subscribedEntityType }) => subscribedEntityType === entityType);
|
|
118
|
+
const hasPrejoins = EntityConfig[byEntityType]?.mutual?.prejoins;
|
|
119
|
+
const shouldProcessPrejoins = isEntityTypeSubscribed && hasPrejoins;
|
|
120
|
+
errorContext = {
|
|
121
|
+
...errorContext,
|
|
122
|
+
isEntityTypeSubscribed,
|
|
123
|
+
hasPrejoins,
|
|
124
|
+
shouldProcessPrejoins,
|
|
125
|
+
};
|
|
126
|
+
if (shouldProcessPrejoins) {
|
|
127
|
+
await processPrejoins({
|
|
128
|
+
mutualRepository,
|
|
129
|
+
publishEvent,
|
|
130
|
+
byEntityType,
|
|
131
|
+
byEntityId,
|
|
132
|
+
prejoins: EntityConfig[byEntityType]?.mutual?.prejoins ?? [],
|
|
133
|
+
publishedAt,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
await publishToSubscribers({
|
|
137
|
+
mutualRepository,
|
|
138
|
+
publishEvent,
|
|
139
|
+
byEntityType,
|
|
140
|
+
byEntityId,
|
|
141
|
+
publishedAt,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
console.log('===PREJOIN-PROCESSOR ERROR===', err, JSON.stringify({ errorContext }, null, 2));
|
|
146
|
+
batchItemFailures.push({ itemIdentifier: record.messageId });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return { batchItemFailures };
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=prejoin-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prejoin-processor.js","sourceRoot":"","sources":["../../processors/prejoin-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { _Record as DynamoDBStreamEvent } from '@aws-sdk/client-dynamodb-streams';
|
|
2
|
+
import type { DynamoDBBatchItemFailure } from 'aws-lambda';
|
|
3
|
+
export declare const handler: (event: {
|
|
4
|
+
Records: DynamoDBStreamEvent[];
|
|
5
|
+
}) => Promise<{
|
|
6
|
+
batchItemFailures: DynamoDBBatchItemFailure[];
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=replication-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replication-processor.d.ts","sourceRoot":"","sources":["../../processors/replication-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,OAAO,IAAI,mBAAmB,EAC/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAW3D,eAAO,MAAM,OAAO,GAAU,OAAO;IAAE,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAAE;;EAoPtE,CAAC"}
|