Browse Source

Added KV entity for postgres

pull/162/head
Volodymyr Babak 9 years ago
parent
commit
2d146c2416
  1. 56
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributeKvEntity.java
  2. 14
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributesKvCompositeKey.java
  3. 2
      dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java
  4. 10
      dao/src/main/java/org/thingsboard/server/dao/sql/attributes/AttributeKvRepository.java
  5. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/attributes/JpaAttributeDao.java
  6. 14
      dao/src/main/resources/postgres/schema.sql

56
dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributeKvEntity.java

@ -0,0 +1,56 @@
package org.thingsboard.server.dao.model.sql;
import lombok.Data;
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
import org.thingsboard.server.dao.model.ToData;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
@Data
@Entity
@Table(name = "attributes_kv")
public class AttributeKvEntity implements ToData<AttributeKvEntry> {
@Id
@Column(name = ENTITY_TYPE_COLUMN)
private String entityType;
@Id
@Column(name = ENTITY_ID_COLUMN)
private UUID entityId;
@Id
@Column(name = ATTRIBUTE_TYPE_COLUMN)
private String attributeType;
@Id
@Column(name = ATTRIBUTE_KEY_COLUMN)
private String attributeKey;
@Column(name = BOOLEAN_VALUE_COLUMN)
private Boolean booleanValue;
@Column(name = STRING_VALUE_COLUMN)
private String strValue;
@Column(name = LONG_VALUE_COLUMN)
private Long longValue;
@Column(name = DOUBLE_VALUE_COLUMN)
private Double doubleValue;
@Column(name = LAST_UPDATE_TS_COLUMN)
private Long lastUpdateTs;
@Override
public AttributeKvEntry toData() {
// TODO - add implementation
return null;
}
}

14
dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributesKvCompositeKey.java

@ -0,0 +1,14 @@
package org.thingsboard.server.dao.model.sql;
import lombok.Data;
import java.io.Serializable;
import java.util.UUID;
@Data
public class AttributesKvCompositeKey implements Serializable {
private String entityType;
private UUID entityId;
private String attributeType;
private String attributeKey;
}

2
dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java

@ -16,12 +16,14 @@
package org.thingsboard.server.dao.model.sql;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.thingsboard.server.common.data.relation.EntityRelation;
import java.io.Serializable;
import java.util.UUID;
@AllArgsConstructor
@Data
public class RelationCompositeKey implements Serializable {
private UUID fromId;

10
dao/src/main/java/org/thingsboard/server/dao/sql/attributes/AttributeKvRepository.java

@ -0,0 +1,10 @@
package org.thingsboard.server.dao.sql.attributes;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.dao.model.sql.AttributeKvEntity;
import org.thingsboard.server.dao.model.sql.AttributesKvCompositeKey;
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true")
public interface AttributeKvRepository extends CrudRepository<AttributeKvEntity, AttributesKvCompositeKey> {
}

6
dao/src/main/java/org/thingsboard/server/dao/sql/attributes/JpaAttributesDao.java → dao/src/main/java/org/thingsboard/server/dao/sql/attributes/JpaAttributeDao.java

@ -17,6 +17,7 @@ package org.thingsboard.server.dao.sql.attributes;
import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.id.EntityId;
@ -30,7 +31,10 @@ import java.util.Optional;
@Component
@Slf4j
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true")
public class JpaAttributesDao implements AttributesDao {
public class JpaAttributeDao implements AttributesDao {
@Autowired
private AttributeKvRepository attributeKvRepository;
@Override
public ListenableFuture<Optional<AttributeKvEntry>> find(EntityId entityId, String attributeType, String attributeKey) {

14
dao/src/main/resources/postgres/schema.sql

@ -74,6 +74,20 @@ CREATE TABLE IF NOT EXISTS asset (
);
ALTER TABLE asset OWNER TO postgres;
CREATE TABLE IF NOT EXISTS attributes_kv (
entity_type character varying(255),
entity_id uuid,
attribute_type character varying(255),
attribute_key character varying(255),
bool_v boolean,
str_v character varying(255),
long_v bigint,
dbl_v double precision,
last_update_ts bigint,
CONSTRAINT attributes_kv_unq_key UNIQUE (entity_type, entity_id, attribute_type, attribute_key)
);
ALTER TABLE relation OWNER TO postgres;
CREATE TABLE IF NOT EXISTS component_descriptor (
id uuid NOT NULL CONSTRAINT component_descriptor_pkey PRIMARY KEY,
actions character varying(255),

Loading…
Cancel
Save