Browse Source

fixed bug with saving similar edges in db

pull/2436/head
Bohdan Smetaniuk 6 years ago
parent
commit
9a749bf720
  1. 15
      dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java
  2. 4
      dao/src/main/resources/sql/schema-entities-hsql.sql
  3. 4
      dao/src/main/resources/sql/schema-entities.sql

15
dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java

@ -23,6 +23,7 @@ import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.util.test.FixedSecureRandom;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
@ -730,6 +731,11 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic
throw new DataValidationException("Edge with such name already exists!");
}
);
edgeDao.findByRoutingKey(edge.getTenantId().getId(), edge.getRoutingKey()).ifPresent(
d -> {
throw new DataValidationException("Edge with such routing_key already exists");
}
);
}
}
@ -743,13 +749,20 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic
}
}
);
edgeDao.findByRoutingKey(edge.getTenantId().getId(), edge.getRoutingKey()).ifPresent(
e -> {
if (!e.getUuidId().equals(edge.getUuidId())) {
throw new DataValidationException("Edge with such routing_key already exists!");
}
}
);
}
}
@Override
protected void validateDataImpl(TenantId tenantId, Edge edge) {
if (StringUtils.isEmpty(edge.getType())) {
throw new DataValidationException("Edge type should be specified!");
throw new DataValidationException("Edge typeshould be specified!");
}
if (StringUtils.isEmpty(edge.getName())) {
throw new DataValidationException("Edge name should be specified!");

4
dao/src/main/resources/sql/schema-entities-hsql.sql

@ -266,5 +266,7 @@ CREATE TABLE IF NOT EXISTS edge (
routing_key varchar(255),
secret varchar(255),
search_text varchar(255),
tenant_id varchar(31)
tenant_id varchar(31),
CONSTRAINT edge_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT edge_routing_key_unq_key UNIQUE (routing_key)
);

4
dao/src/main/resources/sql/schema-entities.sql

@ -266,7 +266,9 @@ CREATE TABLE IF NOT EXISTS edge (
routing_key varchar(255),
secret varchar(255),
search_text varchar(255),
tenant_id varchar(31)
tenant_id varchar(31),
CONSTRAINT edge_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT edge_routing_key_unq_key UNIQUE (routing_key)
);
CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN ttl bigint, IN debug_ttl bigint, INOUT deleted bigint)

Loading…
Cancel
Save