itlab-internal-services 2.15.6 → 2.16.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/README.md +1 -187
- package/dist/classes/document-merger.class.js +3 -5
- package/dist/classes/index.d.ts +1 -0
- package/dist/classes/index.js +3 -1
- package/dist/classes/report-category.class.d.ts +55 -0
- package/dist/classes/report-category.class.js +120 -0
- package/dist/decorators/{account.decorator.d.ts → authenticated-account.decorator.d.ts} +4 -4
- package/dist/decorators/{account.decorator.js → authenticated-account.decorator.js} +8 -10
- package/dist/decorators/index.d.ts +1 -1
- package/dist/decorators/index.js +1 -1
- package/dist/exceptions/authenticated-user-required.exception.d.ts +34 -0
- package/dist/exceptions/authenticated-user-required.exception.js +51 -0
- package/dist/exceptions/bad-body.exception.d.ts +19 -8
- package/dist/exceptions/bad-body.exception.js +26 -10
- package/dist/exceptions/bad-parameter.exception.d.ts +23 -8
- package/dist/exceptions/bad-parameter.exception.js +41 -19
- package/dist/exceptions/duplicate.exception.d.ts +20 -8
- package/dist/exceptions/duplicate.exception.js +27 -10
- package/dist/exceptions/index.d.ts +1 -0
- package/dist/exceptions/index.js +1 -0
- package/dist/functions/add-views-likes-virtuals.function.d.ts +15 -0
- package/dist/functions/add-views-likes-virtuals.function.js +43 -0
- package/dist/functions/create-internal-axios-client.function.js +2 -2
- package/dist/functions/index.d.ts +1 -0
- package/dist/functions/index.js +3 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/likeable.interface.d.ts +1 -1
- package/dist/likeable.interface.js +2 -2
- package/dist/models/account.model.d.ts +23 -0
- package/dist/models/account.model.js +59 -0
- package/dist/models/index.d.ts +3 -1
- package/dist/models/index.js +7 -3
- package/dist/{modules/search/models → models}/search-document.model.d.ts +1 -1
- package/dist/{modules/search/models → models}/search-document.model.js +1 -1
- package/dist/models/{account-entity.model.d.ts → user.model.d.ts} +8 -21
- package/dist/models/{account-entity.model.js → user.model.js} +11 -25
- package/dist/modules/authentication/authentication-module-options.interface.d.ts +2 -8
- package/dist/modules/authentication/authentication-options.parameter.d.ts +4 -0
- package/dist/modules/authentication/{inject-auth-options.decorator.js → authentication-options.parameter.js} +5 -2
- package/dist/modules/authentication/authentication.module.d.ts +23 -0
- package/dist/modules/authentication/authentication.module.js +24 -1
- package/dist/modules/authentication/guards/index.d.ts +2 -2
- package/dist/modules/authentication/guards/index.js +7 -7
- package/dist/modules/authentication/guards/jwt-auth.guard.d.ts +17 -0
- package/dist/modules/authentication/guards/jwt-auth.guard.js +73 -0
- package/dist/modules/authentication/guards/permissions.guard.d.ts +5 -27
- package/dist/modules/authentication/guards/permissions.guard.js +26 -59
- package/dist/modules/authentication/guards/public.guard.d.ts +7 -13
- package/dist/modules/authentication/guards/public.guard.js +10 -24
- package/dist/modules/authentication/guards/service-auth.guard.d.ts +22 -0
- package/dist/modules/authentication/guards/service-auth.guard.js +65 -0
- package/dist/modules/authentication/index.d.ts +3 -3
- package/dist/modules/authentication/index.js +3 -5
- package/dist/modules/cache/cache-response.interceptor.d.ts +2 -2
- package/dist/modules/cache/cache-response.interceptor.js +2 -2
- package/dist/modules/cache/index.d.ts +1 -0
- package/dist/modules/cache/index.js +1 -0
- package/dist/modules/comment/comment-module-options.interface.d.ts +38 -0
- package/dist/modules/comment/comment.controller.d.ts +24 -30
- package/dist/modules/comment/comment.controller.js +59 -61
- package/dist/modules/comment/comment.module-definition.d.ts +1 -42
- package/dist/modules/comment/comment.module-definition.js +1 -2
- package/dist/modules/comment/comment.module.d.ts +13 -13
- package/dist/modules/comment/comment.module.js +15 -42
- package/dist/modules/comment/comment.service.d.ts +27 -37
- package/dist/modules/comment/comment.service.js +50 -84
- package/dist/modules/comment/index.d.ts +2 -3
- package/dist/modules/comment/index.js +16 -7
- package/dist/modules/database/database.module.js +2 -5
- package/dist/modules/database/index.d.ts +2 -5
- package/dist/modules/database/index.js +17 -9
- package/dist/modules/index.d.ts +2 -6
- package/dist/modules/index.js +2 -6
- package/dist/modules/like/index.d.ts +2 -1
- package/dist/modules/like/index.js +16 -3
- package/dist/modules/like/like-module-options.interface.d.ts +21 -0
- package/dist/modules/like/like.controller.d.ts +45 -37
- package/dist/modules/like/like.controller.js +117 -102
- package/dist/modules/like/like.module-definition.d.ts +1 -17
- package/dist/modules/like/like.module-definition.js +1 -2
- package/dist/modules/like/like.module.d.ts +12 -12
- package/dist/modules/like/like.module.js +14 -37
- package/dist/modules/like/like.service.d.ts +31 -27
- package/dist/modules/like/like.service.js +42 -35
- package/dist/modules/merge/index.d.ts +3 -0
- package/dist/modules/merge/index.js +19 -0
- package/dist/modules/merge/merge-module-options.interface.d.ts +21 -0
- package/dist/modules/merge/merge.controller.d.ts +30 -0
- package/dist/modules/merge/merge.controller.js +76 -0
- package/dist/modules/merge/merge.module.d.ts +18 -0
- package/dist/modules/merge/merge.module.js +41 -0
- package/dist/modules/merge/merge.service.interface.d.ts +17 -0
- package/dist/modules/services/base-http.service.d.ts +83 -0
- package/dist/modules/services/base-http.service.js +124 -0
- package/dist/modules/services/base-urls.d.ts +22 -0
- package/dist/modules/services/base-urls.js +121 -0
- package/dist/modules/services/index.d.ts +4 -0
- package/dist/modules/services/index.js +20 -0
- package/dist/modules/services/providers/accounts.service.d.ts +52 -0
- package/dist/modules/services/providers/accounts.service.js +82 -0
- package/dist/modules/services/providers/books.service.d.ts +29 -0
- package/dist/modules/services/providers/books.service.js +53 -0
- package/dist/modules/services/providers/changelog.service.d.ts +18 -0
- package/dist/modules/services/providers/changelog.service.js +41 -0
- package/dist/modules/services/providers/comments/comments.service-definition.d.ts +1 -0
- package/dist/modules/services/providers/comments/comments.service-definition.js +4 -0
- package/dist/modules/services/providers/comments/comments.service.d.ts +60 -0
- package/dist/modules/services/providers/comments/comments.service.js +138 -0
- package/dist/modules/services/providers/comments/index.d.ts +1 -0
- package/dist/{factories → modules/services/providers/comments}/index.js +1 -1
- package/dist/modules/services/providers/content/content-types.d.ts +20 -0
- package/dist/modules/services/providers/content/content-types.js +7 -0
- package/dist/modules/services/providers/content/content.service-definition.d.ts +1 -0
- package/dist/modules/services/providers/content/content.service-definition.js +4 -0
- package/dist/modules/services/providers/content/content.service.d.ts +94 -0
- package/dist/modules/services/providers/content/content.service.js +214 -0
- package/dist/modules/services/providers/content/index.d.ts +1 -0
- package/dist/modules/{search/models → services/providers/content}/index.js +1 -1
- package/dist/modules/services/providers/demo-hive.service.d.ts +29 -0
- package/dist/modules/services/providers/demo-hive.service.js +53 -0
- package/dist/modules/services/providers/events.service.d.ts +29 -0
- package/dist/modules/services/providers/events.service.js +53 -0
- package/dist/modules/services/providers/hackschool.service.d.ts +49 -0
- package/dist/modules/services/providers/hackschool.service.js +77 -0
- package/dist/modules/services/providers/ideas.service.d.ts +18 -0
- package/dist/modules/services/providers/ideas.service.js +41 -0
- package/dist/modules/services/providers/index.d.ts +19 -0
- package/dist/modules/services/providers/index.js +35 -0
- package/dist/modules/services/providers/lunch-roulette.service.d.ts +18 -0
- package/dist/modules/services/providers/lunch-roulette.service.js +41 -0
- package/dist/modules/services/providers/mail/index.d.ts +3 -0
- package/dist/modules/services/providers/mail/index.js +19 -0
- package/dist/modules/services/providers/mail/mail-types.d.ts +30 -0
- package/dist/modules/services/providers/mail/mail-types.js +22 -0
- package/dist/modules/services/providers/mail/mail.service.d.ts +99 -0
- package/dist/modules/{mail → services/providers/mail}/mail.service.js +54 -91
- package/dist/modules/services/providers/newletter.service.d.ts +29 -0
- package/dist/modules/services/providers/newletter.service.js +53 -0
- package/dist/modules/services/providers/newsroom.service.d.ts +47 -0
- package/dist/modules/services/providers/newsroom.service.js +71 -0
- package/dist/modules/services/providers/notification/dtos/schedule-notification.dto.js +2 -0
- package/dist/modules/services/providers/notification/index.d.ts +2 -0
- package/dist/modules/services/providers/notification/index.js +18 -0
- package/dist/modules/services/providers/notification/notification.service-definition.d.ts +1 -0
- package/dist/modules/services/providers/notification/notification.service-definition.js +4 -0
- package/dist/modules/services/providers/notification/notification.service.d.ts +50 -0
- package/dist/modules/services/providers/notification/notification.service.js +130 -0
- package/dist/modules/services/providers/pass/dtos/create-guild-member-pass.dto.js +2 -0
- package/dist/modules/services/providers/pass/dtos/create-team-member-pass.dto.js +2 -0
- package/dist/modules/services/providers/pass/index.d.ts +2 -0
- package/dist/modules/services/providers/pass/index.js +18 -0
- package/dist/modules/services/providers/pass/pass-types.d.ts +18 -0
- package/dist/modules/services/providers/pass/pass-types.js +7 -0
- package/dist/modules/{pass → services/providers/pass}/pass.service.d.ts +15 -39
- package/dist/modules/{pass → services/providers/pass}/pass.service.js +46 -61
- package/dist/modules/services/providers/podcasts.service.d.ts +29 -0
- package/dist/modules/services/providers/podcasts.service.js +53 -0
- package/dist/modules/services/providers/search/dtos/index-search-document.dto.js +2 -0
- package/dist/modules/services/providers/search/index.d.ts +2 -0
- package/dist/modules/services/providers/search/index.js +18 -0
- package/dist/modules/services/providers/search/search.service-definition.d.ts +1 -0
- package/dist/modules/services/providers/search/search.service-definition.js +4 -0
- package/dist/modules/services/providers/search/search.service.d.ts +66 -0
- package/dist/modules/services/providers/search/search.service.js +171 -0
- package/dist/modules/services/providers/team.service.d.ts +29 -0
- package/dist/modules/services/providers/team.service.js +53 -0
- package/dist/modules/services/providers/tech-radar.service.d.ts +39 -0
- package/dist/modules/services/providers/tech-radar.service.js +65 -0
- package/dist/modules/services/services-module-options.interface.d.ts +4 -0
- package/dist/modules/services/services-module-options.interface.js +2 -0
- package/dist/modules/services/services-options.parameter.d.ts +1 -0
- package/dist/modules/services/services-options.parameter.js +8 -0
- package/dist/modules/services/services.module-definition.d.ts +16 -0
- package/dist/modules/services/services.module-definition.js +21 -0
- package/dist/modules/services/services.module.d.ts +17 -0
- package/dist/modules/services/services.module.js +63 -0
- package/dist/pipes/index.d.ts +2 -3
- package/dist/pipes/index.js +2 -3
- package/dist/pipes/params/hub-id.pipe.d.ts +22 -0
- package/dist/pipes/{hub-id.pipe.js → params/hub-id.pipe.js} +14 -17
- package/dist/pipes/params/hub-resource.pipe.d.ts +22 -0
- package/dist/pipes/{hub-resource.pipe.js → params/hub-resource.pipe.js} +19 -20
- package/dist/pipes/params/index.d.ts +3 -0
- package/dist/pipes/params/index.js +19 -0
- package/dist/pipes/params/mongo-id.pipe.d.ts +15 -0
- package/dist/pipes/params/mongo-id.pipe.js +52 -0
- package/dist/pipes/queries/index.d.ts +3 -0
- package/dist/pipes/queries/index.js +19 -0
- package/dist/pipes/queries/mongo-ids.pipe.d.ts +22 -0
- package/dist/pipes/queries/mongo-ids.pipe.js +60 -0
- package/dist/pipes/queries/optional-boolean.pipe.d.ts +29 -0
- package/dist/pipes/queries/optional-boolean.pipe.js +72 -0
- package/dist/pipes/queries/optional-include-drafts.pipe.d.ts +28 -0
- package/dist/pipes/queries/optional-include-drafts.pipe.js +38 -0
- package/dist/properties/index.d.ts +1 -0
- package/dist/properties/index.js +5 -0
- package/dist/swagger/index.d.ts +1 -0
- package/dist/swagger/index.js +5 -0
- package/dist/swagger/remove-public-route-auth.plugin.d.ts +9 -0
- package/dist/swagger/remove-public-route-auth.plugin.js +25 -0
- package/dist/swagger/swagger-options.interface.d.ts +14 -0
- package/dist/swagger/swagger-options.interface.js +2 -0
- package/dist/swagger/swagger.function.d.ts +11 -0
- package/dist/swagger/swagger.function.js +47 -0
- package/dist/transform/boolean.transform.js +3 -3
- package/dist/viewable.interface.js +1 -1
- package/package.json +2 -2
- package/dist/factories/index.d.ts +0 -1
- package/dist/factories/virtuals.factory.d.ts +0 -79
- package/dist/factories/virtuals.factory.js +0 -171
- package/dist/modules/authentication/guards/auth.guard.d.ts +0 -36
- package/dist/modules/authentication/guards/auth.guard.js +0 -107
- package/dist/modules/authentication/guards/internal.guard.d.ts +0 -33
- package/dist/modules/authentication/guards/internal.guard.js +0 -72
- package/dist/modules/authentication/inject-auth-options.decorator.d.ts +0 -1
- package/dist/modules/comment/comment.model.d.ts +0 -29
- package/dist/modules/comment/comment.model.js +0 -43
- package/dist/modules/content/content.module-definition.d.ts +0 -5
- package/dist/modules/content/content.module-definition.js +0 -8
- package/dist/modules/content/content.module.d.ts +0 -31
- package/dist/modules/content/content.module.js +0 -60
- package/dist/modules/content/content.service.d.ts +0 -50
- package/dist/modules/content/content.service.js +0 -145
- package/dist/modules/content/index.d.ts +0 -3
- package/dist/modules/content/index.js +0 -9
- package/dist/modules/database/model-service/dbs/hub-account.db.d.ts +0 -28
- package/dist/modules/database/model-service/dbs/hub-account.db.js +0 -44
- package/dist/modules/database/model-service/dbs/hub-books.db.d.ts +0 -23
- package/dist/modules/database/model-service/dbs/hub-books.db.js +0 -45
- package/dist/modules/database/model-service/dbs/hub-comments.db.d.ts +0 -29
- package/dist/modules/database/model-service/dbs/hub-comments.db.js +0 -68
- package/dist/modules/database/model-service/dbs/hub-content.db.d.ts +0 -24
- package/dist/modules/database/model-service/dbs/hub-content.db.js +0 -49
- package/dist/modules/database/model-service/dbs/hub-demo-hive.db.d.ts +0 -23
- package/dist/modules/database/model-service/dbs/hub-demo-hive.db.js +0 -45
- package/dist/modules/database/model-service/dbs/hub-events.db.d.ts +0 -24
- package/dist/modules/database/model-service/dbs/hub-events.db.js +0 -49
- package/dist/modules/database/model-service/dbs/hub-hackschool.db.d.ts +0 -60
- package/dist/modules/database/model-service/dbs/hub-hackschool.db.js +0 -106
- package/dist/modules/database/model-service/dbs/hub-newsroom.db.d.ts +0 -25
- package/dist/modules/database/model-service/dbs/hub-newsroom.db.js +0 -53
- package/dist/modules/database/model-service/dbs/hub-podcasts.db.d.ts +0 -23
- package/dist/modules/database/model-service/dbs/hub-podcasts.db.js +0 -45
- package/dist/modules/database/model-service/dbs/hub-team.db.d.ts +0 -22
- package/dist/modules/database/model-service/dbs/hub-team.db.js +0 -41
- package/dist/modules/database/model-service/dbs/hub-tech-radar.db.d.ts +0 -42
- package/dist/modules/database/model-service/dbs/hub-tech-radar.db.js +0 -81
- package/dist/modules/database/model-service/model.service.d.ts +0 -6407
- package/dist/modules/database/model-service/model.service.js +0 -136
- package/dist/modules/database/populate-service/populate.service.d.ts +0 -73
- package/dist/modules/database/populate-service/populate.service.js +0 -163
- package/dist/modules/database/service-mapper-service/service-mapper.service.d.ts +0 -32
- package/dist/modules/database/service-mapper-service/service-mapper.service.js +0 -73
- package/dist/modules/fetch/fetch.module.d.ts +0 -31
- package/dist/modules/fetch/fetch.module.js +0 -60
- package/dist/modules/fetch/fetch.service.d.ts +0 -153
- package/dist/modules/fetch/fetch.service.js +0 -274
- package/dist/modules/fetch/index.d.ts +0 -2
- package/dist/modules/fetch/index.js +0 -7
- package/dist/modules/mail/index.d.ts +0 -4
- package/dist/modules/mail/index.js +0 -23
- package/dist/modules/mail/mail.module.d.ts +0 -31
- package/dist/modules/mail/mail.module.js +0 -60
- package/dist/modules/mail/mail.service.d.ts +0 -136
- package/dist/modules/notification/index.d.ts +0 -3
- package/dist/modules/notification/index.js +0 -22
- package/dist/modules/notification/notification.module-definition.d.ts +0 -5
- package/dist/modules/notification/notification.module-definition.js +0 -8
- package/dist/modules/notification/notification.module.d.ts +0 -34
- package/dist/modules/notification/notification.module.js +0 -63
- package/dist/modules/notification/notification.service.d.ts +0 -42
- package/dist/modules/notification/notification.service.js +0 -100
- package/dist/modules/pass/index.d.ts +0 -3
- package/dist/modules/pass/index.js +0 -22
- package/dist/modules/pass/pass.module.d.ts +0 -32
- package/dist/modules/pass/pass.module.js +0 -61
- package/dist/modules/search/index.d.ts +0 -4
- package/dist/modules/search/index.js +0 -23
- package/dist/modules/search/models/index.d.ts +0 -1
- package/dist/modules/search/search.module-definition.d.ts +0 -5
- package/dist/modules/search/search.module-definition.js +0 -8
- package/dist/modules/search/search.module.d.ts +0 -33
- package/dist/modules/search/search.module.js +0 -62
- package/dist/modules/search/search.service.d.ts +0 -49
- package/dist/modules/search/search.service.js +0 -120
- package/dist/pipes/hub-id.pipe.d.ts +0 -22
- package/dist/pipes/hub-resource.pipe.d.ts +0 -22
- package/dist/pipes/mongo-id.pipe.d.ts +0 -14
- package/dist/pipes/mongo-id.pipe.js +0 -52
- package/dist/swagger.config.d.ts +0 -36
- package/dist/swagger.config.js +0 -76
- /package/dist/modules/{mail/dtos/auth-login-token-mail.dto.js → comment/comment-module-options.interface.js} +0 -0
- /package/dist/modules/{mail/dtos/auth-password-reset-mail.dto.js → like/like-module-options.interface.js} +0 -0
- /package/dist/modules/{mail/dtos/event-cancel-mail.dto.js → merge/merge-module-options.interface.js} +0 -0
- /package/dist/modules/{mail/dtos/event-invite-mail.dto.js → merge/merge.service.interface.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/auth-login-token-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/idea-status-updated-mail.dto.js → services/providers/mail/dtos/auth-login-token-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/auth-password-reset-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/idea-submitted-mail.dto.js → services/providers/mail/dtos/auth-password-reset-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/event-cancel-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/lunch-roulette-cancel-mail.dto.js → services/providers/mail/dtos/event-cancel-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/event-invite-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/lunch-roulette-matched-mail.dto.js → services/providers/mail/dtos/event-invite-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/idea-status-updated-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/lunch-roulette-submitted-mail.dto.js → services/providers/mail/dtos/idea-status-updated-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/idea-submitted-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/lunch-roulette-unmatched-mail.dto.js → services/providers/mail/dtos/idea-submitted-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/index.d.ts +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/index.js +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/lunch-roulette-cancel-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/newsletter-issue-mail.dto.js → services/providers/mail/dtos/lunch-roulette-cancel-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/lunch-roulette-matched-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/newsletter-subscribed-mail.dto.js → services/providers/mail/dtos/lunch-roulette-matched-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/lunch-roulette-submitted-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/newsletter-unsubscribed-mail.dto.js → services/providers/mail/dtos/lunch-roulette-submitted-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/lunch-roulette-unmatched-mail.dto.d.ts +0 -0
- /package/dist/modules/{mail/dtos/notification-mail.dto.js → services/providers/mail/dtos/lunch-roulette-unmatched-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/newsletter-issue-mail.dto.d.ts +0 -0
- /package/dist/modules/{notification/dtos/schedule-notification.dto.js → services/providers/mail/dtos/newsletter-issue-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/newsletter-subscribed-mail.dto.d.ts +0 -0
- /package/dist/modules/{pass/dtos/create-guild-member-pass.dto.js → services/providers/mail/dtos/newsletter-subscribed-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/newsletter-unsubscribed-mail.dto.d.ts +0 -0
- /package/dist/modules/{pass/dtos/create-team-member-pass.dto.js → services/providers/mail/dtos/newsletter-unsubscribed-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/dtos/notification-mail.dto.d.ts +0 -0
- /package/dist/modules/{search/dtos/index-search-document.dto.js → services/providers/mail/dtos/notification-mail.dto.js} +0 -0
- /package/dist/modules/{mail → services/providers/mail}/models/index.d.ts +0 -0
- /package/dist/modules/{mail → services/providers/mail}/models/index.js +0 -0
- /package/dist/modules/{mail → services/providers/mail}/models/mail-recipient.model.d.ts +0 -0
- /package/dist/modules/{mail → services/providers/mail}/models/mail-recipient.model.js +0 -0
- /package/dist/modules/{notification → services/providers/notification}/dtos/index.d.ts +0 -0
- /package/dist/modules/{notification → services/providers/notification}/dtos/index.js +0 -0
- /package/dist/modules/{notification → services/providers/notification}/dtos/schedule-notification.dto.d.ts +0 -0
- /package/dist/modules/{pass → services/providers/pass}/dtos/create-guild-member-pass.dto.d.ts +0 -0
- /package/dist/modules/{pass → services/providers/pass}/dtos/create-team-member-pass.dto.d.ts +0 -0
- /package/dist/modules/{pass → services/providers/pass}/dtos/index.d.ts +0 -0
- /package/dist/modules/{pass → services/providers/pass}/dtos/index.js +0 -0
- /package/dist/modules/{search → services/providers/search}/dtos/index-search-document.dto.d.ts +0 -0
- /package/dist/modules/{search → services/providers/search}/dtos/index.d.ts +0 -0
- /package/dist/modules/{search → services/providers/search}/dtos/index.js +0 -0
- /package/dist/{modules/content → properties}/content.property.d.ts +0 -0
- /package/dist/{modules/content → properties}/content.property.js +0 -0
|
@@ -11,123 +11,89 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var CommentService_1;
|
|
15
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
15
|
exports.CommentService = void 0;
|
|
17
16
|
const common_1 = require("@nestjs/common");
|
|
18
17
|
const config_1 = require("@nestjs/config");
|
|
19
18
|
const mongoose_1 = require("@nestjs/mongoose");
|
|
20
|
-
const class_validator_1 = require("class-validator");
|
|
21
19
|
const mongoose_2 = require("mongoose");
|
|
22
|
-
const create_internal_axios_client_function_1 = require("../../functions/create-internal-axios-client.function");
|
|
23
20
|
const authentication_1 = require("../authentication");
|
|
21
|
+
const base_http_service_1 = require("../services/base-http.service");
|
|
24
22
|
const comment_module_definition_1 = require("./comment.module-definition");
|
|
25
23
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
24
|
+
* CommentService manages persistence and business logic
|
|
25
|
+
* for adding, comments on resource entities.
|
|
26
|
+
*
|
|
27
|
+
* Why: Encapsulates MongoDB operations and ensures consistent handling
|
|
28
|
+
* of comment-related behavior across all resources that support comments.
|
|
30
29
|
*/
|
|
31
|
-
let CommentService =
|
|
30
|
+
let CommentService = class CommentService extends base_http_service_1.BaseHttpService {
|
|
32
31
|
/**
|
|
33
|
-
*
|
|
34
|
-
* an axios client for internal comment service communication.
|
|
32
|
+
* Constructs the CommentService with a configured model instance.
|
|
35
33
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* @param
|
|
34
|
+
* Why: Using the provided Mongoose connection and model options ensures
|
|
35
|
+
* that comments are tied to the correct resource collection dynamically.
|
|
36
|
+
*
|
|
37
|
+
* @param {CommentModuleOptions} moduleOptions - Config for the commentable resource model.
|
|
38
|
+
* @param {Connection} connection - Mongoose database connection.
|
|
40
39
|
*/
|
|
41
|
-
constructor(moduleOptions, connection,
|
|
40
|
+
constructor(moduleOptions, connection, authenticationOptions, configService) {
|
|
41
|
+
super('Comment', [
|
|
42
|
+
'http://organisation-hub-comments-service.organisation-hub-services.svc.cluster.local:3000/',
|
|
43
|
+
'https://services.svi-itlab.com/comments/',
|
|
44
|
+
], authenticationOptions, configService);
|
|
42
45
|
this.moduleOptions = moduleOptions;
|
|
43
46
|
this.connection = connection;
|
|
44
|
-
|
|
45
|
-
this.
|
|
46
|
-
this.logger = new common_1.Logger(CommentService_1.name);
|
|
47
|
-
this.resource = this.moduleOptions.resource;
|
|
48
|
-
// If a model is provided, bind the commentModel to allow ownership lookup
|
|
49
|
-
if (this.moduleOptions.model) {
|
|
50
|
-
this.commentModel = this.connection.model(this.moduleOptions.model.name, this.moduleOptions.model.schema);
|
|
51
|
-
}
|
|
52
|
-
const isProduction = this.configService.get('NODE_ENV') === 'production';
|
|
53
|
-
// Construct base URL conditionally based on environment.
|
|
54
|
-
const baseUrl = isProduction
|
|
55
|
-
? 'http://organisation-hub-comments-service.organisation-hub-services.svc.cluster.local:3000/internal/'
|
|
56
|
-
: 'https://services.svi-itlab.com/comments/internal/';
|
|
57
|
-
// Initialize axios instance with k8s token and appropriate URL.
|
|
58
|
-
this.axiosInstance = (0, create_internal_axios_client_function_1.createInternalAxiosClient)({
|
|
59
|
-
k8sToken: this.authOptions.k8sToken,
|
|
60
|
-
baseUrl: `${baseUrl}${this.resource}/`,
|
|
61
|
-
});
|
|
47
|
+
const { name, schema } = this.moduleOptions.model;
|
|
48
|
+
this.commentModel = this.connection.model(name, schema);
|
|
62
49
|
}
|
|
63
50
|
/**
|
|
64
|
-
* Posts a comment to a given resource,
|
|
51
|
+
* Posts a comment to a given resource, optionally attaching ownership metadata.
|
|
65
52
|
*
|
|
66
|
-
*
|
|
67
|
-
* -
|
|
53
|
+
* Why:
|
|
54
|
+
* - Ensures that the resource exists before attempting to save a comment.
|
|
55
|
+
* - Optionally extracts `ownerId` or `ownerIds` for downstream authorization or notifications.
|
|
56
|
+
* - Wraps the internal HTTP call in a promise with proper error handling and logging.
|
|
68
57
|
*
|
|
69
|
-
* @param {string} resourceId -
|
|
70
|
-
* @param {string} accountId -
|
|
71
|
-
* @param {LabContentRichtext}
|
|
72
|
-
* @returns {Promise<
|
|
58
|
+
* @param {string} resourceId - MongoDB ObjectId of the resource being commented on.
|
|
59
|
+
* @param {string} accountId - Authenticated user ID posting the comment.
|
|
60
|
+
* @param {LabContentRichtext} richtext - Comment content in rich-text format.
|
|
61
|
+
* @returns {Promise<LabCommentPopulated>} Resolves with the saved comment or throws an HTTP exception.
|
|
62
|
+
* @throws {NotFoundException} If the resource does not exist.
|
|
63
|
+
* @throws {HttpException} If the internal service call fails.
|
|
73
64
|
*/
|
|
74
|
-
async postComment(resourceId, accountId,
|
|
75
|
-
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
// Ensure the referenced resource exists before allowing comments
|
|
82
|
-
const resourceDoc = await this.commentModel.findOne({ _id: resourceId });
|
|
83
|
-
if (!resourceDoc) {
|
|
65
|
+
async postComment(resourceId, accountId, richtext) {
|
|
66
|
+
const resourceType = this.commentModel.name.toLowerCase();
|
|
67
|
+
// Verify that the resource exists before posting a comment.
|
|
68
|
+
const resource = await this.commentModel.findOne({ _id: resourceId });
|
|
69
|
+
if (!resource) {
|
|
70
|
+
this.logger.error(`Cannot post comment: ${resourceType} ${resourceId} not found`);
|
|
84
71
|
throw new common_1.NotFoundException('Kommentar konnte nicht erstellt werden');
|
|
85
72
|
}
|
|
86
|
-
//
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
this.logger.log(`
|
|
73
|
+
// Extract ownership metadata if configured for downstream use.
|
|
74
|
+
const ownerId = this.moduleOptions.ownerIdField ? resource[this.moduleOptions.ownerIdField] : undefined;
|
|
75
|
+
const ownerIds = this.moduleOptions.ownerIdsField ? resource[this.moduleOptions.ownerIdsField] : undefined;
|
|
76
|
+
const endpoint = `internal/${this.moduleOptions.resource}/${resourceId}/${accountId}`;
|
|
77
|
+
this.logger.log(`Account ${accountId} is posting a comment on ${resourceType} resource ${resourceId}`);
|
|
91
78
|
try {
|
|
92
|
-
const
|
|
79
|
+
const { data } = await this.client.post(endpoint, richtext, {
|
|
93
80
|
params: { ownerId, ownerIds },
|
|
94
81
|
});
|
|
95
|
-
this.logger.log(`
|
|
96
|
-
return
|
|
82
|
+
this.logger.log(`Account ${accountId} successfully posted a comment on ${resourceType} resource ${resourceId}`);
|
|
83
|
+
return data;
|
|
97
84
|
}
|
|
98
85
|
catch (error) {
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
throw new common_1.HttpException(((_b = axiosError.response) === null || _b === void 0 ? void 0 : _b.data) || 'Internal error', ((_c = axiosError.response) === null || _c === void 0 ? void 0 : _c.status) || 500);
|
|
86
|
+
const { status, data, message } = this.parseError(error);
|
|
87
|
+
this.logger.error(`Account ${accountId} failed to post comment on ${resourceType} resource ${resourceId}: ${message}`);
|
|
88
|
+
throw new common_1.HttpException(data, status);
|
|
103
89
|
}
|
|
104
90
|
}
|
|
105
|
-
/**
|
|
106
|
-
* Deletes all comments associated with the specified resource.
|
|
107
|
-
*
|
|
108
|
-
* - Primarily used for cleanup during resource deletion.
|
|
109
|
-
* - Logs success or failure, but does not throw exceptions on error.
|
|
110
|
-
*
|
|
111
|
-
* @param {string} resourceId - ID of the resource whose comments should be deleted
|
|
112
|
-
* @returns {void}
|
|
113
|
-
*/
|
|
114
|
-
delete(resourceId) {
|
|
115
|
-
this.logger.log(`Deleting all comments for ${this.resource} (${resourceId})`);
|
|
116
|
-
this.axiosInstance
|
|
117
|
-
.delete(resourceId)
|
|
118
|
-
.then(() => {
|
|
119
|
-
this.logger.log(`All comments for ${this.resource} (${resourceId}) deleted`);
|
|
120
|
-
})
|
|
121
|
-
.catch(({ response }) => {
|
|
122
|
-
this.logger.error(`Couldn't delete all comments for ${this.resource} (${resourceId}): ${JSON.stringify(response === null || response === void 0 ? void 0 : response.data)}`);
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
91
|
};
|
|
126
92
|
exports.CommentService = CommentService;
|
|
127
|
-
exports.CommentService = CommentService =
|
|
93
|
+
exports.CommentService = CommentService = __decorate([
|
|
128
94
|
(0, common_1.Injectable)(),
|
|
129
95
|
__param(0, (0, common_1.Inject)(comment_module_definition_1.COMMENT_MODULE_OPTIONS_TOKEN)),
|
|
130
96
|
__param(1, (0, mongoose_1.InjectConnection)()),
|
|
131
|
-
__param(2, (0, authentication_1.
|
|
97
|
+
__param(2, (0, authentication_1.InjectAuthenticationOptions)()),
|
|
132
98
|
__metadata("design:paramtypes", [Object, mongoose_2.Connection, Object, config_1.ConfigService])
|
|
133
99
|
], CommentService);
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export { CommentService } from './comment.service';
|
|
1
|
+
export * from './comment-module-options.interface';
|
|
2
|
+
export * from './comment.module';
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "Comment", { enumerable: true, get: function () { return comment_model_1.Comment; } });
|
|
6
|
-
var comment_module_1 = require("./comment.module");
|
|
7
|
-
Object.defineProperty(exports, "CommentModule", { enumerable: true, get: function () { return comment_module_1.CommentModule; } });
|
|
8
|
-
var comment_service_1 = require("./comment.service");
|
|
9
|
-
Object.defineProperty(exports, "CommentService", { enumerable: true, get: function () { return comment_service_1.CommentService; } });
|
|
17
|
+
__exportStar(require("./comment-module-options.interface"), exports);
|
|
18
|
+
__exportStar(require("./comment.module"), exports);
|
|
@@ -16,9 +16,6 @@ const mongoose_1 = require("@nestjs/mongoose");
|
|
|
16
16
|
const mongoose_2 = __importDefault(require("mongoose"));
|
|
17
17
|
const database_liveness_controller_1 = require("./database.liveness-controller");
|
|
18
18
|
const lock_service_1 = require("./lock-service/lock.service");
|
|
19
|
-
const model_service_1 = require("./model-service/model.service");
|
|
20
|
-
const populate_service_1 = require("./populate-service/populate.service");
|
|
21
|
-
const service_mapper_service_1 = require("./service-mapper-service/service-mapper.service");
|
|
22
19
|
/**
|
|
23
20
|
* DatabaseModule centralizes all database-related configuration and services.
|
|
24
21
|
* It wraps Mongoose integration, model registration, liveness health checks,
|
|
@@ -90,8 +87,8 @@ let DatabaseModule = DatabaseModule_1 = class DatabaseModule {
|
|
|
90
87
|
exports.DatabaseModule = DatabaseModule;
|
|
91
88
|
exports.DatabaseModule = DatabaseModule = DatabaseModule_1 = __decorate([
|
|
92
89
|
(0, common_1.Module)({
|
|
93
|
-
providers: [
|
|
94
|
-
exports: [
|
|
90
|
+
providers: [lock_service_1.LockService],
|
|
91
|
+
exports: [lock_service_1.LockService],
|
|
95
92
|
controllers: [database_liveness_controller_1.DatabaseLivenessProbeController],
|
|
96
93
|
})
|
|
97
94
|
], DatabaseModule);
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export * from './database-module-options.interface';
|
|
2
|
+
export * from './database.module';
|
|
3
3
|
export { LockService } from './lock-service/lock.service';
|
|
4
|
-
export { ModelService } from './model-service/model.service';
|
|
5
|
-
export { PopulateService } from './populate-service/populate.service';
|
|
6
|
-
export { ServiceMapperService } from './service-mapper-service/service-mapper.service';
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
17
|
+
exports.LockService = void 0;
|
|
18
|
+
__exportStar(require("./database-module-options.interface"), exports);
|
|
19
|
+
__exportStar(require("./database.module"), exports);
|
|
6
20
|
var lock_service_1 = require("./lock-service/lock.service");
|
|
7
21
|
Object.defineProperty(exports, "LockService", { enumerable: true, get: function () { return lock_service_1.LockService; } });
|
|
8
|
-
var model_service_1 = require("./model-service/model.service");
|
|
9
|
-
Object.defineProperty(exports, "ModelService", { enumerable: true, get: function () { return model_service_1.ModelService; } });
|
|
10
|
-
var populate_service_1 = require("./populate-service/populate.service");
|
|
11
|
-
Object.defineProperty(exports, "PopulateService", { enumerable: true, get: function () { return populate_service_1.PopulateService; } });
|
|
12
|
-
var service_mapper_service_1 = require("./service-mapper-service/service-mapper.service");
|
|
13
|
-
Object.defineProperty(exports, "ServiceMapperService", { enumerable: true, get: function () { return service_mapper_service_1.ServiceMapperService; } });
|
package/dist/modules/index.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
export * from './authentication';
|
|
2
2
|
export * from './cache';
|
|
3
3
|
export * from './comment';
|
|
4
|
-
export * from './content';
|
|
5
4
|
export * from './database';
|
|
6
|
-
export * from './fetch';
|
|
7
5
|
export * from './like';
|
|
8
|
-
export * from './
|
|
9
|
-
export * from './
|
|
10
|
-
export * from './pass';
|
|
11
|
-
export * from './search';
|
|
6
|
+
export * from './merge';
|
|
7
|
+
export * from './services';
|
package/dist/modules/index.js
CHANGED
|
@@ -17,11 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./authentication"), exports);
|
|
18
18
|
__exportStar(require("./cache"), exports);
|
|
19
19
|
__exportStar(require("./comment"), exports);
|
|
20
|
-
__exportStar(require("./content"), exports);
|
|
21
20
|
__exportStar(require("./database"), exports);
|
|
22
|
-
__exportStar(require("./fetch"), exports);
|
|
23
21
|
__exportStar(require("./like"), exports);
|
|
24
|
-
__exportStar(require("./
|
|
25
|
-
__exportStar(require("./
|
|
26
|
-
__exportStar(require("./pass"), exports);
|
|
27
|
-
__exportStar(require("./search"), exports);
|
|
22
|
+
__exportStar(require("./merge"), exports);
|
|
23
|
+
__exportStar(require("./services"), exports);
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './like-module-options.interface';
|
|
2
|
+
export * from './like.module';
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "LikeModule", { enumerable: true, get: function () { return like_module_1.LikeModule; } });
|
|
17
|
+
__exportStar(require("./like-module-options.interface"), exports);
|
|
18
|
+
__exportStar(require("./like.module"), exports);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ModelDefinition } from '@nestjs/mongoose';
|
|
2
|
+
/**
|
|
3
|
+
* Module options for configuring and dynamically registering the LikeModule.
|
|
4
|
+
*
|
|
5
|
+
* This allows developers to specify the resource model that supports "likes"
|
|
6
|
+
* and optionally provide a custom route suffix. The modular design ensures
|
|
7
|
+
* consistent, reusable like functionality across multiple resource types
|
|
8
|
+
* (e.g. News, Events, Demos).
|
|
9
|
+
*/
|
|
10
|
+
export type LikeModuleOptions = {
|
|
11
|
+
/**
|
|
12
|
+
* Mongoose model definition representing the resource type
|
|
13
|
+
* that can receive likes.
|
|
14
|
+
*/
|
|
15
|
+
model: ModelDefinition;
|
|
16
|
+
/**
|
|
17
|
+
* Optional suffix used to customize the controller route.
|
|
18
|
+
* For example, setting this to "news" will expose routes like `/like/news/:id`.
|
|
19
|
+
*/
|
|
20
|
+
routeSuffix?: string;
|
|
21
|
+
};
|
|
@@ -1,41 +1,49 @@
|
|
|
1
1
|
import { LikeService } from './like.service';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Factory function for creating a LikeController bound to a specific route suffix.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Why: Instead of writing separate controllers for each resource type,
|
|
6
|
+
* we generate one dynamically. This ensures DRY principles while still
|
|
7
|
+
* supporting custom routes (e.g. `/like/news` or `/like/event`).
|
|
8
|
+
*
|
|
9
|
+
* @param {string} [routeSuffix] - Optional suffix appended to the "like" route.
|
|
10
|
+
* @returns A dynamically generated controller class.
|
|
8
11
|
*/
|
|
9
|
-
export declare
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
12
|
+
export declare function createLikeController(routeSuffix?: string): {
|
|
13
|
+
new (likeService: LikeService): {
|
|
14
|
+
readonly likeService: LikeService;
|
|
15
|
+
/**
|
|
16
|
+
* Adds the authenticated user's like to a given resource.
|
|
17
|
+
*
|
|
18
|
+
* Why: Prevents duplicate likes using `$addToSet`,
|
|
19
|
+
* ensuring idempotency of repeated requests.
|
|
20
|
+
*
|
|
21
|
+
* @param {string} resourceId - The MongoDB ObjectId of the resource.
|
|
22
|
+
* @param {string} accountId - The authenticated account performing the like.
|
|
23
|
+
* @returns {Promise<number>} The updated like count.
|
|
24
|
+
*/
|
|
25
|
+
addLikeToResource(resourceId: string, accountId: string): Promise<number>;
|
|
26
|
+
/**
|
|
27
|
+
* Removes the authenticated user's like from a given resource.
|
|
28
|
+
*
|
|
29
|
+
* Why: Uses `$pull` to ensure the user’s ID is removed only if present,
|
|
30
|
+
* maintaining database consistency without errors.
|
|
31
|
+
*
|
|
32
|
+
* @param {string} resourceId - The MongoDB ObjectId of the resource.
|
|
33
|
+
* @param {string} accountId - The authenticated account removing the like.
|
|
34
|
+
* @returns {Promise<number>} The updated like count.
|
|
35
|
+
*/
|
|
36
|
+
removeLikeFromResource(resourceId: string, accountId: string): Promise<number>;
|
|
37
|
+
/**
|
|
38
|
+
* Determines whether the authenticated user has liked a given resource.
|
|
39
|
+
*
|
|
40
|
+
* Why: Useful for rendering UI states (e.g. "Like" vs. "Unlike" buttons)
|
|
41
|
+
* without fetching all likes.
|
|
42
|
+
*
|
|
43
|
+
* @param {string} resourceId - The MongoDB ObjectId of the resource.
|
|
44
|
+
* @param {string} accountId - The authenticated account to check.
|
|
45
|
+
* @returns {Promise<boolean>} True if the resource is liked by the user.
|
|
46
|
+
*/
|
|
47
|
+
isResourceLikedByUser(resourceId: string, accountId: string): Promise<boolean>;
|
|
48
|
+
};
|
|
49
|
+
};
|