Fix attributes removal by entity id
This commit is contained in:
parent
be3e78044c
commit
a529abeced
@ -17,6 +17,10 @@ package org.thingsboard.server.common.data;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public enum AttributeScope {
|
||||
|
||||
CLIENT_SCOPE(1),
|
||||
@ -25,8 +29,15 @@ public enum AttributeScope {
|
||||
@Getter
|
||||
private final int id;
|
||||
|
||||
private static final Map<Integer, AttributeScope> values = Arrays.stream(values())
|
||||
.collect(Collectors.toMap(AttributeScope::getId, scope -> scope));
|
||||
|
||||
AttributeScope(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public static AttributeScope valueOf(int id) {
|
||||
return values.get(id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -164,7 +164,7 @@ public class BaseAttributesService implements AttributesService {
|
||||
|
||||
@Override
|
||||
public int removeAllByEntityId(TenantId tenantId, EntityId entityId) {
|
||||
List<Pair<String, String>> deleted = attributesDao.removeAllByEntityId(tenantId, entityId);
|
||||
List<Pair<AttributeScope, String>> deleted = attributesDao.removeAllByEntityId(tenantId, entityId);
|
||||
return deleted.size();
|
||||
}
|
||||
|
||||
|
||||
@ -19,6 +19,7 @@ import com.google.common.util.concurrent.Futures;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.ListeningExecutorService;
|
||||
import com.google.common.util.concurrent.MoreExecutors;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@ -40,7 +41,6 @@ import org.thingsboard.server.dao.cache.CacheExecutorService;
|
||||
import org.thingsboard.server.dao.service.Validator;
|
||||
import org.thingsboard.server.dao.sql.JpaExecutorService;
|
||||
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
@ -308,11 +308,13 @@ public class CachedAttributesService implements AttributesService {
|
||||
|
||||
@Override
|
||||
public int removeAllByEntityId(TenantId tenantId, EntityId entityId) {
|
||||
List<Pair<String, String>> result = attributesDao.removeAllByEntityId(tenantId, entityId);
|
||||
List<Pair<AttributeScope, String>> result = attributesDao.removeAllByEntityId(tenantId, entityId);
|
||||
result.forEach(deleted -> {
|
||||
String scope = deleted.getKey();
|
||||
AttributeScope scope = deleted.getKey();
|
||||
String key = deleted.getValue();
|
||||
cache.evict(new AttributeCacheKey(scope, entityId, key));
|
||||
if (scope != null && key != null) {
|
||||
cache.evict(new AttributeCacheKey(scope, entityId, key));
|
||||
}
|
||||
});
|
||||
return result.size();
|
||||
}
|
||||
|
||||
@ -35,8 +35,8 @@ import org.thingsboard.server.common.data.kv.AttributeKvEntry;
|
||||
import org.thingsboard.server.common.stats.StatsFactory;
|
||||
import org.thingsboard.server.dao.DaoUtil;
|
||||
import org.thingsboard.server.dao.attributes.AttributesDao;
|
||||
import org.thingsboard.server.dao.model.ModelConstants;
|
||||
import org.thingsboard.server.dao.dictionary.KeyDictionaryDao;
|
||||
import org.thingsboard.server.dao.model.ModelConstants;
|
||||
import org.thingsboard.server.dao.model.sql.AttributeKvCompositeKey;
|
||||
import org.thingsboard.server.dao.model.sql.AttributeKvEntity;
|
||||
import org.thingsboard.server.dao.sql.JpaAbstractDaoListeningExecutorService;
|
||||
@ -209,10 +209,10 @@ public class JpaAttributeDao extends JpaAbstractDaoListeningExecutorService impl
|
||||
@Transactional
|
||||
@Override
|
||||
public List<Pair<AttributeScope, String>> removeAllByEntityId(TenantId tenantId, EntityId entityId) {
|
||||
return jdbcTemplate.queryForList("DELETE FROM attribute_kv WHERE entity_type = ? and entity_id = ? " +
|
||||
"RETURNING attribute_type, attribute_key", entityId.getEntityType().name(), entityId.getId()).stream()
|
||||
.map(row -> Pair.of(row.get(ModelConstants.ATTRIBUTE_TYPE_COLUMN),
|
||||
(String) row.get(ModelConstants.ATTRIBUTE_KEY_COLUMN)))
|
||||
return jdbcTemplate.queryForList("DELETE FROM attribute_kv WHERE entity_id = ? " +
|
||||
"RETURNING attribute_type, attribute_key", entityId.getId()).stream()
|
||||
.map(row -> Pair.of(AttributeScope.valueOf((Integer) row.get(ModelConstants.ATTRIBUTE_TYPE_COLUMN)),
|
||||
keyDictionaryDao.getKey((Integer) row.get(ModelConstants.ATTRIBUTE_KEY_COLUMN))))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user