Commit 321d4f1cb2680a2335aa24b0b2b4353e998ecbf8

Authored by Volodymyr Babak
1 parent 78b40b09

Fixes for cases when asset/device deleted but has entity view assigned

... ... @@ -40,7 +40,8 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
40 40 import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
41 41 import static org.thingsboard.server.dao.model.ModelConstants.CUSTOMER_ID_PROPERTY;
42 42 import static org.thingsboard.server.dao.model.ModelConstants.ENTITY_ID_COLUMN;
43   -import static org.thingsboard.server.dao.model.ModelConstants.ENTITY_VIEW_BY_TENANT_AND_CUSTOMER_AND_SEARCH_TEXT;
  43 +import static org.thingsboard.server.dao.model.ModelConstants.ENTITY_VIEW_BY_TENANT_AND_CUSTOMER_CF;
  44 +import static org.thingsboard.server.dao.model.ModelConstants.ENTITY_VIEW_BY_TENANT_AND_ENTITY_ID_CF;
44 45 import static org.thingsboard.server.dao.model.ModelConstants.ENTITY_VIEW_BY_TENANT_AND_NAME;
45 46 import static org.thingsboard.server.dao.model.ModelConstants.ENTITY_VIEW_BY_TENANT_AND_SEARCH_TEXT_COLUMN_FAMILY_NAME;
46 47 import static org.thingsboard.server.dao.model.ModelConstants.ENTITY_VIEW_NAME_PROPERTY;
... ... @@ -101,7 +102,7 @@ public class CassandraEntityViewDao extends CassandraAbstractSearchTextDao<Entit
101 102 log.debug("Try to find entity views by tenantId [{}], customerId[{}] and pageLink [{}]",
102 103 tenantId, customerId, pageLink);
103 104 List<EntityViewEntity> entityViewEntities = findPageWithTextSearch(
104   - ENTITY_VIEW_BY_TENANT_AND_CUSTOMER_AND_SEARCH_TEXT,
  105 + ENTITY_VIEW_BY_TENANT_AND_CUSTOMER_CF,
105 106 Arrays.asList(eq(CUSTOMER_ID_PROPERTY, customerId), eq(TENANT_ID_PROPERTY, tenantId)),
106 107 pageLink);
107 108 log.trace("Found find entity views [{}] by tenantId [{}], customerId [{}] and pageLink [{}]",
... ... @@ -112,9 +113,9 @@ public class CassandraEntityViewDao extends CassandraAbstractSearchTextDao<Entit
112 113 @Override
113 114 public ListenableFuture<List<EntityView>> findEntityViewsByTenantIdAndEntityIdAsync(UUID tenantId, UUID entityId) {
114 115 log.debug("Try to find entity views by tenantId [{}] and entityId [{}]", tenantId, entityId);
115   - Select.Where query = select().from(getColumnFamilyName()).where();
  116 + Select.Where query = select().from(ENTITY_VIEW_BY_TENANT_AND_ENTITY_ID_CF).where();
116 117 query.and(eq(TENANT_ID_PROPERTY, tenantId));
117   - query.and(eq(ENTITY_ID_COLUMN, entityId));
  118 + query.and(eq(ENTITY_ID_COLUMN, entityId));dr
118 119 return findListByStatementAsync(query);
119 120 }
120 121 }
... ...
... ... @@ -150,7 +150,8 @@ public class ModelConstants {
150 150 public static final String ENTITY_VIEW_TENANT_ID_PROPERTY = TENANT_ID_PROPERTY;
151 151 public static final String ENTITY_VIEW_CUSTOMER_ID_PROPERTY = CUSTOMER_ID_PROPERTY;
152 152 public static final String ENTITY_VIEW_NAME_PROPERTY = DEVICE_NAME_PROPERTY;
153   - public static final String ENTITY_VIEW_BY_TENANT_AND_CUSTOMER_AND_SEARCH_TEXT = "entity_view_by_tenant_and_customer";
  153 + public static final String ENTITY_VIEW_BY_TENANT_AND_CUSTOMER_CF = "entity_view_by_tenant_and_customer";
  154 + public static final String ENTITY_VIEW_BY_TENANT_AND_ENTITY_ID_CF = "entity_view_by_tenant_and_entity_id";
154 155 public static final String ENTITY_VIEW_KEYS_PROPERTY = "keys";
155 156 public static final String ENTITY_VIEW_START_TS_PROPERTY = "start_ts";
156 157 public static final String ENTITY_VIEW_END_TS_PROPERTY = "end_ts";
... ...
... ... @@ -671,3 +671,14 @@ CREATE MATERIALIZED VIEW IF NOT EXISTS thingsboard.entity_view_by_tenant_and_cus
671 671 AND id IS NOT NULL
672 672 PRIMARY KEY (tenant_id, customer_id, search_text, id, entity_id)
673 673 WITH CLUSTERING ORDER BY (customer_id DESC, search_text ASC, id DESC);
  674 +
  675 +CREATE MATERIALIZED VIEW IF NOT EXISTS thingsboard.entity_view_by_tenant_and_entity_id AS
  676 + SELECT *
  677 + from thingsboard.entity_views
  678 + WHERE tenant_id IS NOT NULL
  679 + AND customer_id IS NOT NULL
  680 + AND entity_id IS NOT NULL
  681 + AND search_text IS NOT NULL
  682 + AND id IS NOT NULL
  683 + PRIMARY KEY (tenant_id, entity_id, customer_id, search_text, id)
  684 + WITH CLUSTERING ORDER BY (entity_id DESC, customer_id DESC, search_text ASC, id DESC);
\ No newline at end of file
... ...