RemoveNotificationsForUser.ts 1.1 KB

1234567891011121314151617181920212223242526272829
  1. import { NotificationType, Result, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
  2. import { RemoveNotificationsForUserDTO } from './RemoveNotificationsForUserDTO'
  3. import { NotificationRepositoryInterface } from '../../../Notifications/NotificationRepositoryInterface'
  4. export class RemoveNotificationsForUser implements UseCaseInterface<void> {
  5. constructor(private notificationRepository: NotificationRepositoryInterface) {}
  6. async execute(dto: RemoveNotificationsForUserDTO): Promise<Result<void>> {
  7. const userUuidOrError = Uuid.create(dto.userUuid)
  8. if (userUuidOrError.isFailed()) {
  9. return Result.fail(userUuidOrError.getError())
  10. }
  11. const userUuid = userUuidOrError.getValue()
  12. const typeOrError = NotificationType.create(dto.type)
  13. if (typeOrError.isFailed()) {
  14. return Result.fail(typeOrError.getError())
  15. }
  16. const type = typeOrError.getValue()
  17. const notifications = await this.notificationRepository.findByUserUuidAndType(userUuid, type)
  18. for (const notification of notifications) {
  19. await this.notificationRepository.remove(notification)
  20. }
  21. return Result.ok()
  22. }
  23. }