diff --git a/application/src/main/java/org/thingsboard/server/service/entitiy/EntityStateSourcingListener.java b/application/src/main/java/org/thingsboard/server/service/entitiy/EntityStateSourcingListener.java index 5843d59315..03ab77ac09 100644 --- a/application/src/main/java/org/thingsboard/server/service/entitiy/EntityStateSourcingListener.java +++ b/application/src/main/java/org/thingsboard/server/service/entitiy/EntityStateSourcingListener.java @@ -99,7 +99,7 @@ public class EntityStateSourcingListener { case ASSET -> { onAssetUpdate(event.getEntity(), event.getOldEntity()); } - case ASSET_PROFILE, ENTITY_VIEW, NOTIFICATION_RULE, AI_MODEL_SETTINGS -> { + case ASSET_PROFILE, ENTITY_VIEW, NOTIFICATION_RULE -> { tbClusterService.broadcastEntityStateChangeEvent(tenantId, entityId, lifecycleEvent); } case RULE_CHAIN -> { @@ -164,7 +164,7 @@ public class EntityStateSourcingListener { Asset asset = (Asset) event.getEntity(); tbClusterService.onAssetDeleted(tenantId, asset, null); } - case ASSET_PROFILE, ENTITY_VIEW, CUSTOMER, EDGE, NOTIFICATION_RULE, AI_MODEL_SETTINGS -> { + case ASSET_PROFILE, ENTITY_VIEW, CUSTOMER, EDGE, NOTIFICATION_RULE -> { tbClusterService.broadcastEntityStateChangeEvent(tenantId, entityId, ComponentLifecycleEvent.DELETED); } case NOTIFICATION_REQUEST -> { diff --git a/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java b/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java index 3e509bd506..265f14c4e2 100644 --- a/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java +++ b/application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java @@ -589,7 +589,6 @@ public class DefaultTbClusterService implements TbClusterService { EntityType.ENTITY_VIEW, EntityType.NOTIFICATION_RULE, EntityType.CALCULATED_FIELD, - EntityType.AI_MODEL_SETTINGS, EntityType.TENANT_PROFILE, EntityType.DEVICE_PROFILE, EntityType.ASSET_PROFILE, diff --git a/dao/src/main/java/org/thingsboard/server/dao/ai/AiModelSettingsDao.java b/dao/src/main/java/org/thingsboard/server/dao/ai/AiModelSettingsDao.java index 5ee0d49121..c8d6b65369 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/ai/AiModelSettingsDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/ai/AiModelSettingsDao.java @@ -22,6 +22,7 @@ import org.thingsboard.server.dao.ExportableEntityDao; import org.thingsboard.server.dao.TenantEntityDao; import java.util.Optional; +import java.util.Set; public interface AiModelSettingsDao extends TenantEntityDao, ExportableEntityDao { @@ -29,7 +30,7 @@ public interface AiModelSettingsDao extends TenantEntityDao, Ex boolean deleteById(TenantId tenantId, AiModelSettingsId settingsId); - int deleteByTenantId(TenantId tenantId); + Set deleteByTenantId(TenantId tenantId); boolean deleteByTenantIdAndId(TenantId tenantId, AiModelSettingsId settingsId); diff --git a/dao/src/main/java/org/thingsboard/server/dao/ai/AiModelSettingsServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/ai/AiModelSettingsServiceImpl.java index 2dc3aba623..2494ab6a15 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/ai/AiModelSettingsServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/ai/AiModelSettingsServiceImpl.java @@ -29,14 +29,12 @@ import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.dao.entity.CachedVersionedEntityService; -import org.thingsboard.server.dao.eventsourcing.DeleteEntityEvent; -import org.thingsboard.server.dao.eventsourcing.SaveEntityEvent; import org.thingsboard.server.dao.model.sql.AiModelSettingsEntity; import org.thingsboard.server.dao.service.DataValidator; import org.thingsboard.server.dao.sql.JpaExecutorService; -import java.util.List; import java.util.Optional; +import java.util.Set; import static org.thingsboard.server.dao.service.Validator.validatePageLink; @@ -65,7 +63,7 @@ class AiModelSettingsServiceImpl extends CachedVersionedEntityService toDeleteOpt = aiModelSettingsDao.findByTenantIdAndId(tenantId, settingsId); - if (toDeleteOpt.isEmpty()) { - return false; - } boolean deleted = aiModelSettingsDao.deleteByTenantIdAndId(tenantId, settingsId); if (deleted) { - publishDeleteEvent(toDeleteOpt.get()); publishEvictEvent(new AiModelSettingsCacheEvictEvent.Deleted(AiModelSettingsCacheKey.of(tenantId, settingsId))); } return deleted; @@ -153,25 +137,8 @@ class AiModelSettingsServiceImpl extends CachedVersionedEntityService toDelete = aiModelSettingsDao.findAllByTenantId(tenantId, new PageLink(Integer.MAX_VALUE)).getData(); - if (toDelete.isEmpty()) { - return; - } - - aiModelSettingsDao.deleteByTenantId(tenantId); - - toDelete.forEach(settings -> { - publishDeleteEvent(settings); - publishEvictEvent(new AiModelSettingsCacheEvictEvent.Deleted(AiModelSettingsCacheKey.of(settings.getTenantId(), settings.getId()))); - }); - } - - private void publishDeleteEvent(AiModelSettings settings) { - eventPublisher.publishEvent(DeleteEntityEvent.builder() - .tenantId(settings.getTenantId()) - .entityId(settings.getId()) - .entity(settings) - .build()); + Set deleted = aiModelSettingsDao.deleteByTenantId(tenantId); + deleted.forEach(id -> publishEvictEvent(new AiModelSettingsCacheEvictEvent.Deleted(AiModelSettingsCacheKey.of(tenantId, id)))); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/ai/AiModelSettingsRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/ai/AiModelSettingsRepository.java index 8bb432ca83..aae01a3b41 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/ai/AiModelSettingsRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/ai/AiModelSettingsRepository.java @@ -73,8 +73,13 @@ interface AiModelSettingsRepository extends JpaRepository deleteByTenantId(@Param("tenantId") UUID tenantId); @Transactional @Modifying diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/ai/JpaAiModelSettingsDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/ai/JpaAiModelSettingsDao.java index a09179d31e..38e7280313 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/ai/JpaAiModelSettingsDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/ai/JpaAiModelSettingsDao.java @@ -39,6 +39,8 @@ import java.util.Optional; import java.util.Set; import java.util.UUID; +import static java.util.stream.Collectors.toSet; + @SqlDao @Component @RequiredArgsConstructor @@ -108,8 +110,10 @@ class JpaAiModelSettingsDao extends JpaAbstractDao deleteByTenantId(TenantId tenantId) { + return aiModelSettingsRepository.deleteByTenantId(tenantId.getId()).stream() + .map(AiModelSettingsId::new) + .collect(toSet()); } @Override