AI rule node: publish save/delete events for AI settings
This commit is contained in:
parent
255ab3b391
commit
b902c0029d
@ -27,7 +27,9 @@ public interface AiSettingsDao extends Dao<AiSettings>, TenantEntityDao<AiSettin
|
||||
|
||||
Optional<AiSettings> findByTenantIdAndId(TenantId tenantId, AiSettingsId aiSettingsId);
|
||||
|
||||
void deleteByTenantId(TenantId tenantId);
|
||||
boolean deleteById(TenantId tenantId, AiSettingsId aiSettingsId);
|
||||
|
||||
int deleteByTenantId(TenantId tenantId);
|
||||
|
||||
boolean deleteByTenantIdAndId(TenantId tenantId, AiSettingsId aiSettingsId);
|
||||
|
||||
|
||||
@ -16,7 +16,9 @@
|
||||
package org.thingsboard.server.dao.ai;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.thingsboard.server.common.data.EntityType;
|
||||
import org.thingsboard.server.common.data.ai.AiSettings;
|
||||
import org.thingsboard.server.common.data.id.AiSettingsId;
|
||||
@ -25,8 +27,11 @@ import org.thingsboard.server.common.data.id.HasId;
|
||||
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.eventsourcing.DeleteEntityEvent;
|
||||
import org.thingsboard.server.dao.eventsourcing.SaveEntityEvent;
|
||||
import org.thingsboard.server.dao.service.DataValidator;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.thingsboard.server.dao.entity.AbstractEntityService.checkConstraintViolation;
|
||||
@ -36,19 +41,33 @@ import static org.thingsboard.server.dao.service.Validator.validatePageLink;
|
||||
@RequiredArgsConstructor
|
||||
class AiSettingsServiceImpl implements AiSettingsService {
|
||||
|
||||
private final AiSettingsDao aiSettingsDao;
|
||||
|
||||
private final ApplicationEventPublisher eventPublisher;
|
||||
private final DataValidator<AiSettings> aiSettingsValidator;
|
||||
|
||||
private final AiSettingsDao aiSettingsDao;
|
||||
|
||||
@Override
|
||||
public AiSettings save(AiSettings aiSettings) {
|
||||
aiSettingsValidator.validate(aiSettings, AiSettings::getTenantId);
|
||||
AiSettings oldSettings = aiSettingsValidator.validate(aiSettings, AiSettings::getTenantId);
|
||||
|
||||
AiSettings savedSettings;
|
||||
try {
|
||||
return aiSettingsDao.saveAndFlush(aiSettings.getTenantId(), aiSettings);
|
||||
savedSettings = aiSettingsDao.saveAndFlush(aiSettings.getTenantId(), aiSettings);
|
||||
} catch (Exception e) {
|
||||
checkConstraintViolation(e, "ai_settings_name_unq_key", "AI settings record with such name already exists!");
|
||||
throw e;
|
||||
}
|
||||
|
||||
eventPublisher.publishEvent(SaveEntityEvent.builder()
|
||||
.tenantId(savedSettings.getTenantId())
|
||||
.entity(savedSettings)
|
||||
.oldEntity(oldSettings)
|
||||
.entityId(savedSettings.getId())
|
||||
.created(oldSettings == null)
|
||||
.broadcastEvent(true)
|
||||
.build());
|
||||
|
||||
return savedSettings;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -69,7 +88,15 @@ class AiSettingsServiceImpl implements AiSettingsService {
|
||||
|
||||
@Override
|
||||
public boolean deleteByTenantIdAndId(TenantId tenantId, AiSettingsId aiSettingsId) {
|
||||
return aiSettingsDao.deleteByTenantIdAndId(tenantId, aiSettingsId);
|
||||
Optional<AiSettings> aiSettingsOpt = aiSettingsDao.findByTenantIdAndId(tenantId, aiSettingsId);
|
||||
if (aiSettingsOpt.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
boolean deleted = aiSettingsDao.deleteByTenantIdAndId(tenantId, aiSettingsId);
|
||||
if (deleted) {
|
||||
publishDeleteEvent(aiSettingsOpt.get());
|
||||
}
|
||||
return deleted;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -84,12 +111,23 @@ class AiSettingsServiceImpl implements AiSettingsService {
|
||||
|
||||
@Override
|
||||
public void deleteEntity(TenantId tenantId, EntityId id, boolean force) {
|
||||
aiSettingsDao.removeById(tenantId, id.getId());
|
||||
deleteByTenantIdAndId(tenantId, new AiSettingsId(id.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void deleteByTenantId(TenantId tenantId) {
|
||||
List<AiSettings> deletedSettings = aiSettingsDao.findAllByTenantId(tenantId, new PageLink(Integer.MAX_VALUE)).getData();
|
||||
aiSettingsDao.deleteByTenantId(tenantId);
|
||||
deletedSettings.forEach(this::publishDeleteEvent);
|
||||
}
|
||||
|
||||
private void publishDeleteEvent(AiSettings settings) {
|
||||
eventPublisher.publishEvent(DeleteEntityEvent.builder()
|
||||
.tenantId(settings.getTenantId())
|
||||
.entityId(settings.getId())
|
||||
.entity(settings)
|
||||
.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.thingsboard.server.dao.model.sql.AiSettingsEntity;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface AiSettingsRepository extends JpaRepository<AiSettingsEntity, UUID> {
|
||||
@ -40,11 +41,16 @@ public interface AiSettingsRepository extends JpaRepository<AiSettingsEntity, UU
|
||||
long countByTenantId(UUID tenantId);
|
||||
|
||||
@Transactional
|
||||
void deleteByTenantId(UUID tenantId);
|
||||
@Modifying
|
||||
@Query("DELETE FROM AiSettingsEntity ai WHERE ai.id IN (:ids)")
|
||||
int deleteByIdIn(@Param("ids") Set<UUID> ids);
|
||||
|
||||
@Transactional
|
||||
int deleteByTenantId(UUID tenantId);
|
||||
|
||||
@Transactional
|
||||
@Modifying
|
||||
@Query("DELETE FROM AiSettingsEntity ai WHERE ai.tenantId = :tenantId AND ai.id = :id")
|
||||
int deleteByTenantIdAndId(@Param("tenantId") UUID tenantId, @Param("id") UUID id);
|
||||
@Query("DELETE FROM AiSettingsEntity ai WHERE ai.tenantId = :tenantId AND ai.id IN (:ids)")
|
||||
int deleteByTenantIdAndIdIn(@Param("tenantId") UUID tenantId, @Param("ids") Set<UUID> ids);
|
||||
|
||||
}
|
||||
|
||||
@ -32,6 +32,7 @@ import org.thingsboard.server.dao.sql.JpaAbstractDao;
|
||||
import org.thingsboard.server.dao.util.SqlDao;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
@SqlDao
|
||||
@ -59,13 +60,18 @@ class JpaAiSettingsDao extends JpaAbstractDao<AiSettingsEntity, AiSettings> impl
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByTenantId(TenantId tenantId) {
|
||||
aiSettingsRepository.deleteByTenantId(tenantId.getId());
|
||||
public boolean deleteById(TenantId tenantId, AiSettingsId aiSettingsId) {
|
||||
return aiSettingsRepository.deleteByIdIn(Set.of(aiSettingsId.getId())) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteByTenantId(TenantId tenantId) {
|
||||
return aiSettingsRepository.deleteByTenantId(tenantId.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteByTenantIdAndId(TenantId tenantId, AiSettingsId aiSettingsId) {
|
||||
return aiSettingsRepository.deleteByTenantIdAndId(tenantId.getId(), aiSettingsId.getId()) > 0;
|
||||
return aiSettingsRepository.deleteByTenantIdAndIdIn(tenantId.getId(), Set.of(aiSettingsId.getId())) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user