From e52dbd2cfdd74040c012c70a1253b9031a085662 Mon Sep 17 00:00:00 2001
From: cheliequan <liequanche@126.com>
Date: 星期一, 16 一月 2023 19:49:33 +0800
Subject: [PATCH] 优化接口支持json是数组格式

---
 rule.cpp |    8 +++-----
 util.cpp |   11 ++++++++++-
 util.h   |   18 ++++++++++++++++++
 3 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/rule.cpp b/rule.cpp
index 9215e4a..060cc21 100644
--- a/rule.cpp
+++ b/rule.cpp
@@ -14,11 +14,9 @@
 
 bool dbapi_get_dayctls(char *timeRules, std::vector<protomsg::DayCtl> & list)
 {
-    const char * flag_key = NULL;
+    bool is_array = true;
 
-    const char * data_key = "time_rule";
-
-	bool ret = bus_dbapi_get_list(timeRules, flag_key, data_key, list);
+	bool ret = bus_dbapi_get_list(timeRules, is_array, list);
 
     return ret;
 
@@ -28,7 +26,7 @@
 {
     const char * flag_key = NULL;
 
-    const char * data_key = "time_range";
+    const char * data_key = NULL;
 
 	bool ret = bus_dbapi_get_list(datactls, flag_key, data_key, list);
 
diff --git a/util.cpp b/util.cpp
index 42e8db7..26a0dda 100644
--- a/util.cpp
+++ b/util.cpp
@@ -125,7 +125,16 @@
 
     // Get root["data"]
     //yyjson_val *msg = yyjson_obj_get(root, "data");
-    yyjson_val *data = yyjson_obj_get(root, data_name);
+    yyjson_val *data;
+    if ( NULL != data_name )
+    {
+        data = yyjson_obj_get(root, data_name);        
+    }
+	else
+	{
+        data = root;     	    
+	}
+
 
     *ptr_type = yyjson_get_type(data);
     ptr_value = yyjson_val_write(data, YYJSON_WRITE_NOFLAG, &data_len);
diff --git a/util.h b/util.h
index 3cd6741..5539387 100644
--- a/util.h
+++ b/util.h
@@ -105,6 +105,24 @@
 }
 
 template <class T>
+bool bus_dbapi_get_list(char *json, bool is_array, T &list) {
+    char *success_name = NULL;
+    char *data_name = NULL;   
+    if ( is_array )
+    {
+	    success_name = NULL;
+	    data_name = NULL;        
+    }
+	else
+	{
+	    success_name = "success";
+	    data_name = "data";   	    
+	}
+
+    return bus_dbapi_get_list(json, (const char *)success_name, (const char *)data_name, list);
+}
+
+template <class T>
 bool bus_dbapi_get_list(void *handle, const char *topic, T &list) {
     crepmsg *repmsg = NULL;
     size_t len = 0;

--
Gitblit v1.8.0