thingsboard-memoizeit

Added KV entity for postgres

6/9/2017 1:52:26 PM

Details

diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributeKvEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributeKvEntity.java
new file mode 100644
index 0000000..6637ecb
--- /dev/null
+++ b/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;
+    }
+}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributesKvCompositeKey.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/AttributesKvCompositeKey.java
new file mode 100644
index 0000000..a2d5513
--- /dev/null
+++ b/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;
+}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java
index 4af848c..3e13ff5 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java
+++ b/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;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/attributes/AttributeKvRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/attributes/AttributeKvRepository.java
new file mode 100644
index 0000000..27e366e
--- /dev/null
+++ b/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> {
+}
diff --git a/dao/src/main/resources/postgres/schema.sql b/dao/src/main/resources/postgres/schema.sql
index afaf936..684ec00 100644
--- a/dao/src/main/resources/postgres/schema.sql
+++ b/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),