This is an automated email from the ASF dual-hosted git repository.

guoyp pushed a commit to branch griffin-2.0.0-dev
in repository https://gitbox.apache.org/repos/asf/griffin.git


The following commit(s) were added to refs/heads/griffin-2.0.0-dev by this push:
     new 69fe18a9 add service interface for metricD table. (#665)
69fe18a9 is described below

commit 69fe18a9ed9402678662e4794663fe40e031dce1
Author: Jin <[email protected]>
AuthorDate: Wed Oct 9 10:22:39 2024 +0800

    add service interface for metricD table. (#665)
---
 griffin-bom/pom.xml                                |  2 +-
 .../griffin/metric/dao/DaoConfiguration.java       |  8 ++---
 .../java/org/apache/griffin/metric/dao/IDao.java   |  7 +++++
 .../apache/griffin/metric/dao/MetricTagDDao.java   | 27 ++++++++++++++++
 .../org/apache/griffin/metric/dao/MetricVDao.java  | 25 +++++++++++++++
 .../metric/dao/mapper/MetricTagDMapper.java        |  9 ++++++
 .../griffin/metric/dao/mapper/MetricVMapper.java   |  9 ++++++
 .../entity/{MetricTag.java => MetricTagD.java}     | 12 ++++++--
 .../org/apache/griffin/metric/entity/MetricV.java  |  2 +-
 .../org/apache/griffin/metric/entity/Tags.java     |  9 ++++--
 .../griffin/metric/service/MetricDService.java     | 36 +++++++++++++++++++---
 .../griffin/metric/service/MetricTagDService.java  | 26 ++++++++++++++++
 .../griffin/metric/service/MetricVService.java     | 26 ++++++++++++++++
 .../src/main/resources/sql/create_h2.sql           | 14 ++++++++-
 .../apache/griffin/metric/entity/MetricTest.java   |  8 ++---
 15 files changed, 201 insertions(+), 19 deletions(-)

diff --git a/griffin-bom/pom.xml b/griffin-bom/pom.xml
index 5377d709..2ed73a84 100644
--- a/griffin-bom/pom.xml
+++ b/griffin-bom/pom.xml
@@ -52,7 +52,7 @@ under the License.
         <slf4j.version>1.7.36</slf4j.version>
         <logback.version>1.2.11</logback.version>
         <h2.version>2.2.220</h2.version>
-        <mysql-connector.version>8.0.16</mysql-connector.version>
+        <mysql-connector.version>8.0.28</mysql-connector.version>
         <commons-io.version>2.11.0</commons-io.version>
         <presto-jdbc.version>0.238.1</presto-jdbc.version>
         <joda-time.version>2.10.13</joda-time.version>
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/dao/DaoConfiguration.java
 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/DaoConfiguration.java
index 93306f4a..bd15ca51 100644
--- 
a/griffin-metric/src/main/java/org/apache/griffin/metric/dao/DaoConfiguration.java
+++ 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/DaoConfiguration.java
@@ -21,20 +21,20 @@
 package org.apache.griffin.metric.dao;
 
 import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
-
 @Configuration
 @ComponentScan("org.apache.griffin.metric")
 @EnableAutoConfiguration
 @MapperScan(basePackages = "org.apache.griffin.metric.dao.mapper", 
sqlSessionFactoryRef = "sqlSessionFactory")
 public class DaoConfiguration {
 
-    @Autowired(required = false)
-    public DataSourceScriptDatabaseInitializer 
dataSourceScriptDatabaseInitializer;
+    public final DataSourceScriptDatabaseInitializer 
dataSourceScriptDatabaseInitializer;
 
+    public DaoConfiguration(DataSourceScriptDatabaseInitializer 
dsScriptDatabaseInitializer) {
+        this.dataSourceScriptDatabaseInitializer = dsScriptDatabaseInitializer;
+    }
 }
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/dao/IDao.java 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/IDao.java
index e47dcad2..835bda24 100644
--- a/griffin-metric/src/main/java/org/apache/griffin/metric/dao/IDao.java
+++ b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/IDao.java
@@ -28,9 +28,16 @@ public interface IDao<E> {
 
     /**
      * Query by the primary key.
+     * @param id Unique identity of E
+     * @return E if exist
      */
     E queryById(@NonNull Serializable id);
 
+    /**
+     * Query by the primary key.
+     * @param id Unique identity of E
+     * @return {@code Optional}
+     */
     Optional<E> queryOptionalById(@NonNull Serializable id);
 
     List<E> queryByIds(Collection<? extends Serializable> ids);
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/dao/MetricTagDDao.java 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/MetricTagDDao.java
new file mode 100644
index 00000000..77265b42
--- /dev/null
+++ 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/MetricTagDDao.java
@@ -0,0 +1,27 @@
+package org.apache.griffin.metric.dao;
+
+import lombok.NonNull;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.griffin.metric.dao.mapper.MetricTagDMapper;
+import org.apache.griffin.metric.entity.MetricTagD;
+import org.springframework.stereotype.Repository;
+
+@Repository
+@Slf4j
+public class MetricTagDDao extends BaseDao<MetricTagD, MetricTagDMapper>{
+
+    public MetricTagDDao(@NonNull MetricTagDMapper mybatisMapper) {
+        super(mybatisMapper);
+    }
+
+    public int addMetricTagD(MetricTagD metricTagD) {
+        if (metricTagD == null) {
+            log.warn("metricTagD is invalid");
+            return 0;
+        }
+
+        int count = mybatisMapper.insert(metricTagD);
+        log.info("add metricTagD: {}, count: {}", metricTagD, count);
+        return count;
+    }
+}
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/dao/MetricVDao.java 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/MetricVDao.java
new file mode 100644
index 00000000..4dd9f5fa
--- /dev/null
+++ b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/MetricVDao.java
@@ -0,0 +1,25 @@
+package org.apache.griffin.metric.dao;
+
+import lombok.NonNull;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.griffin.metric.dao.mapper.MetricVMapper;
+import org.apache.griffin.metric.entity.MetricV;
+import org.springframework.stereotype.Repository;
+
+@Repository
+@Slf4j
+public class MetricVDao extends BaseDao<MetricV, MetricVMapper>{
+    public MetricVDao(@NonNull MetricVMapper mybatisMapper) {
+        super(mybatisMapper);
+    }
+
+    public int addMetricV(MetricV metricV) {
+        if (metricV == null) {
+            log.warn("metricV is invalid");
+            return 0;
+        }
+        int count = mybatisMapper.insert(metricV);
+        log.info("add metricV: {}, count: {}", metricV, count);
+        return count;
+    }
+}
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/dao/mapper/MetricTagDMapper.java
 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/mapper/MetricTagDMapper.java
new file mode 100644
index 00000000..5771732a
--- /dev/null
+++ 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/mapper/MetricTagDMapper.java
@@ -0,0 +1,9 @@
+package org.apache.griffin.metric.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.griffin.metric.entity.MetricTagD;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface MetricTagDMapper extends BaseMapper<MetricTagD> {
+}
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/dao/mapper/MetricVMapper.java
 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/mapper/MetricVMapper.java
new file mode 100644
index 00000000..2570507e
--- /dev/null
+++ 
b/griffin-metric/src/main/java/org/apache/griffin/metric/dao/mapper/MetricVMapper.java
@@ -0,0 +1,9 @@
+package org.apache.griffin.metric.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.griffin.metric.entity.MetricV;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface MetricVMapper extends BaseMapper<MetricV> {
+}
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricTag.java 
b/griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricTagD.java
similarity index 76%
rename from 
griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricTag.java
rename to 
griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricTagD.java
index 34ccdc39..65a46f12 100644
--- 
a/griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricTag.java
+++ 
b/griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricTagD.java
@@ -19,6 +19,10 @@ under the License.
 
 package org.apache.griffin.metric.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -33,20 +37,24 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @AllArgsConstructor
 @EqualsAndHashCode(callSuper = false)
-public class MetricTag extends BaseEntity {
+@TableName("t_tag_d")
+public class MetricTagD extends BaseEntity {
 
     /**
      * An unique identity for a metric tag.
      */
-    private long id;
+    @TableId(value="mid", type = IdType.ASSIGN_ID)
+    private Long id;
 
     /**
      * Key name
      */
+    @TableField(value = "name")
     private String tagKey;
 
     /**
      * The value corresponding to a key
      */
+    @TableField(value = "val")
     private String tagValue;
 }
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricV.java 
b/griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricV.java
index 01d6c702..600f3739 100644
--- a/griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricV.java
+++ b/griffin-metric/src/main/java/org/apache/griffin/metric/entity/MetricV.java
@@ -47,7 +47,7 @@ public class MetricV extends BaseEntity {
      * An unique identity for a metric.
      */
     @TableId(value="mid", type = IdType.AUTO)
-    private long metricId;
+    private Long metricId;
 
     /**
      * A double number to store metric value.
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/entity/Tags.java 
b/griffin-metric/src/main/java/org/apache/griffin/metric/entity/Tags.java
index 74d76e1e..45f20167 100644
--- a/griffin-metric/src/main/java/org/apache/griffin/metric/entity/Tags.java
+++ b/griffin-metric/src/main/java/org/apache/griffin/metric/entity/Tags.java
@@ -17,6 +17,9 @@
 
 package org.apache.griffin.metric.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -33,15 +36,17 @@ import java.util.List;
 @NoArgsConstructor
 @AllArgsConstructor
 @EqualsAndHashCode(callSuper = false)
+@TableName("t_metric_tag")
 public class Tags extends BaseEntity {
 
     /**
      * Metric entity's identity.
      */
-    private long metricId;
+    @TableId(value="mid", type = IdType.AUTO)
+    private Long metricId;
 
     /**
      * All tag properties assigning to a metric entity.
      */
-    private List<MetricTag> metricTags;
+    private List<MetricTagD> metricTags;
 }
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricDService.java
 
b/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricDService.java
index 52dd8d8b..f1aedd6e 100644
--- 
a/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricDService.java
+++ 
b/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricDService.java
@@ -3,9 +3,14 @@ package org.apache.griffin.metric.service;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.griffin.metric.dao.MetricDDao;
 import org.apache.griffin.metric.entity.MetricD;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
+import org.springframework.lang.NonNull;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
@@ -13,16 +18,39 @@ import java.util.List;
 @RestController
 @Slf4j
 public class MetricDService {
+
+    private final MetricDDao metricDDao;
+
+    public MetricDService(MetricDDao metricDDao) {
+        this.metricDDao = metricDDao;
+    }
+
     @GetMapping(value = "/ping", produces = MediaType.APPLICATION_JSON_VALUE)
     public String ping(){
         return "hello";
     }
 
-    @Autowired
-    private MetricDDao metricDDao;
-
     @GetMapping(value = "/allMetricDs", produces = 
MediaType.APPLICATION_JSON_VALUE)
     public List<MetricD> allMetricDs(){
         return metricDDao.queryAll();
     }
+
+    @PutMapping(value = "/metricD", consumes = 
MediaType.APPLICATION_JSON_VALUE,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    public MetricD createMetricD(@RequestBody MetricD metricD){
+        int id = metricDDao.addMetricD(metricD);
+        return metricD;
+    }
+
+    @PostMapping(value = "/metricD", consumes = 
MediaType.APPLICATION_JSON_VALUE,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    public MetricD updateMetricD(MetricD metricD){
+        boolean ret = metricDDao.updateById(metricD);
+        return ret ? metricD : null;
+    }
+
+    @DeleteMapping(value = "/metricD/{id}")
+    public boolean deleteMetricD(@PathVariable @NonNull String id){
+        return metricDDao.deleteById(id);
+    }
 }
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricTagDService.java
 
b/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricTagDService.java
new file mode 100644
index 00000000..94270fe0
--- /dev/null
+++ 
b/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricTagDService.java
@@ -0,0 +1,26 @@
+package org.apache.griffin.metric.service;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.griffin.metric.dao.MetricTagDDao;
+import org.apache.griffin.metric.entity.MetricTagD;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@Slf4j
+public class MetricTagDService {
+    private final MetricTagDDao metricTagDDao;
+
+    public MetricTagDService(MetricTagDDao metricTagDDao) {
+        this.metricTagDDao = metricTagDDao;
+    }
+
+    @PutMapping(value = "/metricTagD",consumes = 
MediaType.APPLICATION_JSON_VALUE,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    public MetricTagD createMetricTagD(@RequestBody MetricTagD metricTagD) {
+        int i = metricTagDDao.addMetricTagD(metricTagD);
+        return metricTagD;
+    }
+}
diff --git 
a/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricVService.java
 
b/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricVService.java
new file mode 100644
index 00000000..f7344a2c
--- /dev/null
+++ 
b/griffin-metric/src/main/java/org/apache/griffin/metric/service/MetricVService.java
@@ -0,0 +1,26 @@
+package org.apache.griffin.metric.service;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.griffin.metric.dao.MetricVDao;
+import org.apache.griffin.metric.entity.MetricV;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@Slf4j
+public class MetricVService {
+    private final MetricVDao metricVDao;
+
+    public MetricVService(MetricVDao metricVDao) {
+        this.metricVDao = metricVDao;
+    }
+
+    @PutMapping(value = "/metricV",consumes = MediaType.APPLICATION_JSON_VALUE,
+            produces = MediaType.APPLICATION_JSON_VALUE)
+    public MetricV createMetricV(@RequestBody MetricV metricV) {
+        int id = metricVDao.addMetricV(metricV);
+        return metricV;
+    }
+}
diff --git a/griffin-metric/src/main/resources/sql/create_h2.sql 
b/griffin-metric/src/main/resources/sql/create_h2.sql
index a8d0f69e..be65820b 100644
--- a/griffin-metric/src/main/resources/sql/create_h2.sql
+++ b/griffin-metric/src/main/resources/sql/create_h2.sql
@@ -7,9 +7,21 @@ CREATE TABLE t_metric_d (
     mtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
 );
 
-CREATE TABLE t_metric_v (
+CREATE TABLE t_tag_d (
     mid BIGINT PRIMARY KEY AUTO_INCREMENT,
+    name VARCHAR(255) NOT NULL,
+    val DOUBLE NOT NULL
+);
+
+CREATE TABLE t_metric_tag (
+    tid BIGINT PRIMARY KEY references t_metric_d(mid),
+    mtid BIGINT references t_tag_d(mid)
+);
+
+CREATE TABLE t_metric_v (
+    mid BIGINT PRIMARY KEY references t_metric_d(mid),
     val DOUBLE NOT NULL,
+    tid BIGINT references t_metric_tag(tid),
     ctime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
     mtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
 );
diff --git 
a/griffin-metric/src/test/java/org/apache/griffin/metric/entity/MetricTest.java 
b/griffin-metric/src/test/java/org/apache/griffin/metric/entity/MetricTest.java
index 5bf091b3..74de5eca 100644
--- 
a/griffin-metric/src/test/java/org/apache/griffin/metric/entity/MetricTest.java
+++ 
b/griffin-metric/src/test/java/org/apache/griffin/metric/entity/MetricTest.java
@@ -103,10 +103,10 @@ public class MetricTest {
         assertEquals(2, fetchedTags.getMetricTags().size());
     }
 
-    private List<MetricTag> createSampleTags() {
-        List<MetricTag> tags = new ArrayList<>();
-        tags.add(new MetricTag(1L, "key1", "value1"));
-        tags.add(new MetricTag(2L, "key2", "value2"));
+    private List<MetricTagD> createSampleTags() {
+        List<MetricTagD> tags = new ArrayList<>();
+        tags.add(new MetricTagD(1L, "key1", "value1"));
+        tags.add(new MetricTagD(2L, "key2", "value2"));
         return tags;
     }
 }

Reply via email to