From b1c0a04426fed272e26c741943bd4a238d7644ee Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Mon, 8 Jan 2024 11:05:49 +0200 Subject: [PATCH] Delete notification settings on tenant deletion --- .../service/notification/AbstractNotificationApiTest.java | 4 ++++ .../dao/notification/NotificationSettingsService.java | 2 ++ .../notification/DefaultNotificationSettingsService.java | 6 ++++++ .../thingsboard/server/dao/tenant/TenantServiceImpl.java | 1 + 4 files changed, 13 insertions(+) diff --git a/application/src/test/java/org/thingsboard/server/service/notification/AbstractNotificationApiTest.java b/application/src/test/java/org/thingsboard/server/service/notification/AbstractNotificationApiTest.java index a0e908a600..ba8e68eb5b 100644 --- a/application/src/test/java/org/thingsboard/server/service/notification/AbstractNotificationApiTest.java +++ b/application/src/test/java/org/thingsboard/server/service/notification/AbstractNotificationApiTest.java @@ -62,6 +62,7 @@ import org.thingsboard.server.controller.AbstractControllerTest; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.notification.NotificationRequestService; import org.thingsboard.server.dao.notification.NotificationRuleService; +import org.thingsboard.server.dao.notification.NotificationSettingsService; import org.thingsboard.server.dao.notification.NotificationTargetService; import org.thingsboard.server.dao.notification.NotificationTemplateService; import org.thingsboard.server.dao.sqlts.insert.sql.SqlPartitioningRepository; @@ -95,6 +96,8 @@ public abstract class AbstractNotificationApiTest extends AbstractControllerTest @Autowired protected NotificationRequestService notificationRequestService; @Autowired + protected NotificationSettingsService notificationSettingsService; + @Autowired protected SqlPartitioningRepository partitioningRepository; public static final String DEFAULT_NOTIFICATION_SUBJECT = "Just a test"; @@ -107,6 +110,7 @@ public abstract class AbstractNotificationApiTest extends AbstractControllerTest notificationTemplateService.deleteNotificationTemplatesByTenantId(TenantId.SYS_TENANT_ID); notificationTargetService.deleteNotificationTargetsByTenantId(TenantId.SYS_TENANT_ID); partitioningRepository.dropPartitionsBefore("notification", Long.MAX_VALUE, 1); + notificationSettingsService.deleteNotificationSettings(TenantId.SYS_TENANT_ID); } protected NotificationTarget createNotificationTarget(UserId... usersIds) { diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/notification/NotificationSettingsService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/notification/NotificationSettingsService.java index 9fca174b3a..4b90b46ffc 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/notification/NotificationSettingsService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/notification/NotificationSettingsService.java @@ -26,6 +26,8 @@ public interface NotificationSettingsService { NotificationSettings findNotificationSettings(TenantId tenantId); + void deleteNotificationSettings(TenantId tenantId); + UserNotificationSettings saveUserNotificationSettings(TenantId tenantId, UserId userId, UserNotificationSettings settings); UserNotificationSettings getUserNotificationSettings(TenantId tenantId, UserId userId, boolean format); diff --git a/dao/src/main/java/org/thingsboard/server/dao/notification/DefaultNotificationSettingsService.java b/dao/src/main/java/org/thingsboard/server/dao/notification/DefaultNotificationSettingsService.java index 350162feb7..51e08359f3 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/notification/DefaultNotificationSettingsService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/notification/DefaultNotificationSettingsService.java @@ -97,6 +97,12 @@ public class DefaultNotificationSettingsService implements NotificationSettingsS }); } + @CacheEvict(cacheNames = CacheConstants.NOTIFICATION_SETTINGS_CACHE, key = "#tenantId") + @Override + public void deleteNotificationSettings(TenantId tenantId) { + adminSettingsService.deleteAdminSettingsByTenantIdAndKey(tenantId, SETTINGS_KEY); + } + @Override public UserNotificationSettings saveUserNotificationSettings(TenantId tenantId, UserId userId, UserNotificationSettings settings) { UserSettings userSettings = new UserSettings(); diff --git a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java index e10a80af2d..83852685d1 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/tenant/TenantServiceImpl.java @@ -241,6 +241,7 @@ public class TenantServiceImpl extends AbstractCachedEntityService