Przeglądaj źródła

添加数据库导入导出接口

guohui 1 rok temu
rodzic
commit
80da8cd4cc
3 zmienionych plików z 362 dodań i 80 usunięć
  1. 331 77
      pro/src/sqlite_handle.c
  2. 10 3
      pro/src/sqlite_handle.h
  3. 21 0
      pro/src/sys.c

+ 331 - 77
pro/src/sqlite_handle.c

@@ -4198,45 +4198,23 @@ int dev_switch_update_all(sqlite3 *db, netswitch_info_t *sw)
 ////////////////MAIL/////////////////////////////////////////////
 #define MAIL_MANAGER_TABLE   "Table_MAILManage"
 #define MAIL_RECVEIVE_TABLE  "Table_MAILReceive"
-int dev_mail_init(sqlite3 *db, mail_info_t *info)
+static int dev_mail_get(sqlite3 *db, mail_info_t *info)
 {
     int i,r=-1;
-
-#ifdef USE_MAIL
     char temp[1024];
     char *err_msg=NULL;
     char *table=NULL;
     int nrow,ncol;
     char** pResult = NULL;
-    
-    table = MAIL_MANAGER_TABLE;
-    if(!tab_exists(db, table)) {
-        sprintf(temp, "CREATE TABLE IF NOT EXISTS %s("
-                            "id INTEGER PRIMARY KEY,"
-                            "mode INTEGER,"
-                            "account TEXT,"
-                            "password TEXT,"
-                            "server TEXT,"
-                            "port TEXT,"
-                            "auth TEXT,"
-                            "ca TEXT);", table);
-        r = sqlite3_exec(db, temp, 0, 0, &err_msg);
-        if(r!=SQLITE_OK) {
-            log_e("___ %s create failed, %s\n%s\n", table, temp, err_msg); sqlite3_free(err_msg);
-            return -1;
-        }
 
-#ifdef MAIL_SEND_BUILTIN
-        extern mail_send_t DFLT_MAIL_SEND;
-        dev_mail_update_send(db, &DFLT_MAIL_SEND);
-#endif
-    }
-
-    if(info) {
-        memset(info, 0, sizeof(mail_info_t));
+    if(!info) {
+        return -1;
     }
 
+    memset(info, 0, sizeof(mail_info_t));
     nrow = ncol = 0;
+
+    table = MAIL_MANAGER_TABLE;
     sprintf(temp, "SELECT * FROM %s;", table);
     r = sqlite3_get_table(db, temp, &pResult, &nrow, &ncol, &err_msg);
     if(r != SQLITE_OK) {
@@ -4292,9 +4270,47 @@ int dev_mail_init(sqlite3 *db, mail_info_t *info)
         }
     }
     sqlite3_free_table(pResult);
+
+    return 0;
+}
+int dev_mail_init(sqlite3 *db, mail_info_t *info)
+{
+    int i,r=-1;
+
+#ifdef USE_MAIL
+    char temp[1024];
+    char *err_msg=NULL;
+    char *table=NULL;
+    int nrow,ncol;
+    char** pResult = NULL;
+    
+    table = MAIL_MANAGER_TABLE;
+    if(!tab_exists(db, table)) {
+        sprintf(temp, "CREATE TABLE IF NOT EXISTS %s("
+                            "id INTEGER PRIMARY KEY,"
+                            "mode INTEGER,"
+                            "account TEXT,"
+                            "password TEXT,"
+                            "server TEXT,"
+                            "port TEXT,"
+                            "auth TEXT,"
+                            "ca TEXT);", table);
+        r = sqlite3_exec(db, temp, 0, 0, &err_msg);
+        if(r!=SQLITE_OK) {
+            log_e("___ %s create failed, %s\n%s\n", table, temp, err_msg); sqlite3_free(err_msg);
+            return -1;
+        }
+
+#ifdef MAIL_SEND_BUILTIN
+        extern mail_send_t DFLT_MAIL_SEND;
+        dev_mail_update_send(db, &DFLT_MAIL_SEND);
+#endif
+    }
+
+    r = dev_mail_get(db, info);
 #endif
     
-    return 0;
+    return r;
 }
 
 
@@ -4372,7 +4388,7 @@ int dev_mail_update_recv(sqlite3 *db, mail_recv_t *recv)
                 table, recv->idx, recv->use, recv->account, recv->idx);
         r = sqlite3_exec(db, temp, NULL, 0, &err_msg);
         if(r != SQLITE_OK) {
-            log_e("___sw_update_port failed, %s, %s\n\n", temp, err_msg);
+            log_e("___dev_mail_update_recv failed, %s, %s\n", temp, err_msg);
             sqlite3_free(err_msg);
         }
         else {
@@ -4397,7 +4413,7 @@ int dev_mail_update_recv(sqlite3 *db, mail_recv_t *recv)
         sqlite3_finalize(stmt);
 
         if (r != SQLITE_DONE) {
-            log_e("___sw_update_all, sqlite3_step failed\n");
+            log_e("___dev_mail_update_recv, sqlite3_step failed\n");
             r = -1;
         }
     }
@@ -4410,45 +4426,18 @@ quit:
 
 ////////////////mqtt/////////////////////////////////////////////
 #define MQTT_MANAGER_TABLE   "Table_MQTTManage"
-int dev_mqtt_init(sqlite3 *db, mqtt_info_t *info)
+int dev_mqtt_get(sqlite3 *db, mqtt_info_t *info)
 {
-    int i,r;
-
-#ifdef USE_MQTT
-    int idx=0;
+    int i,r,idx=0;
     char temp[1024];
-    char *errmsg=NULL;
-    char *table=NULL;
-    char** pResult=NULL;
-    int nrow,ncol;
     sqlite3_stmt *stmt=NULL;
     mqtt_server_t *ser=info->ser;
-    
-    table = MQTT_MANAGER_TABLE;
-    if(!tab_exists(db, table)) {
-        sprintf(temp, "CREATE TABLE IF NOT EXISTS %s("
-                            "id INTEGER PRIMARY KEY,"
-                            "mode INTEGER,"
-                            "name TEXT,"
-                            "server TEXT,"
-                            "port TEXT,"
-                            "cid TEXT,"
-                            "user TEXT,"
-                            "password TEXT,"
-                            "cert TEXT);", table);
-        r = sqlite3_exec(db, temp, 0, 0, &errmsg);
-        if(r!=SQLITE_OK) {
-            log_e("___ %s create failed, %s\n%s\n", table, temp, errmsg); sqlite3_free(errmsg);
-            return -1;
-        }
+    char *table = MQTT_MANAGER_TABLE;
 
-#ifdef MQTT_SERVER_BUILTIN
-        extern mqtt_info_t DFLT_MQTT;
-        dev_mqtt_update_info(db, &DFLT_MQTT);
-#endif
+    if(!info) {
+        return -1;
     }
 
-    
     sprintf(temp, "SELECT * FROM %s;", table);
     r = sqlite3_prepare_v2(db, temp, -1, &stmt, 0);
     if (r != SQLITE_OK) {
@@ -4489,11 +4478,52 @@ int dev_mqtt_init(sqlite3 *db, mqtt_info_t *info)
         }
     }
     sqlite3_finalize(stmt);
-#endif
 
     return 0;
 }
 
+int dev_mqtt_init(sqlite3 *db, mqtt_info_t *info)
+{
+    int i,r=-1;
+
+#ifdef USE_MQTT
+    int idx=0;
+    char temp[1024];
+    char *errmsg=NULL;
+    char *table=NULL;
+    sqlite3_stmt *stmt=NULL;
+    mqtt_server_t *ser=info->ser;
+    
+    table = MQTT_MANAGER_TABLE;
+    if(!tab_exists(db, table)) {
+        sprintf(temp, "CREATE TABLE IF NOT EXISTS %s("
+                            "id INTEGER PRIMARY KEY,"
+                            "mode INTEGER,"
+                            "name TEXT,"
+                            "server TEXT,"
+                            "port TEXT,"
+                            "cid TEXT,"
+                            "user TEXT,"
+                            "password TEXT,"
+                            "cert TEXT);", table);
+        r = sqlite3_exec(db, temp, 0, 0, &errmsg);
+        if(r!=SQLITE_OK) {
+            log_e("___ %s create failed, %s\n%s\n", table, temp, errmsg); sqlite3_free(errmsg);
+            return -1;
+        }
+
+#ifdef MQTT_SERVER_BUILTIN
+        extern mqtt_info_t DFLT_MQTT;
+        dev_mqtt_update_info(db, &DFLT_MQTT);
+#endif
+    }
+
+    r = dev_mqtt_get(db, info);
+#endif
+
+    return r;
+}
+
 
 int dev_mqtt_update_ser(sqlite3 *db, mqtt_server_t *ser)
 {
@@ -4610,14 +4640,14 @@ int dev_sql_set_overwrite(int flag)
 
 ///////////////////////////////////////////////////////////////////////////////
 
-const char *tabName[TAB_ID_MAX]={
+const char *tabNamePool[TAB_ID_MAX]={
     "Table_NTPManage",
     "Table_Userinfo",
     "Table_AlarmManage",
     "Table_RoleInfo",
     "Table_GroupManage",
     "Table_SNMPManage",
-    "Table_SMTPManage",
+    "Table_MAILManage",
     "Table_MQTTManage",
     "Table_ChnTimerManage",
     "Table_PowerManage"
@@ -4633,38 +4663,263 @@ const char *tabName[TAB_ID_MAX]={
 
 };
 
-
-void* dev_sql_export(int tab_id, void *data, uint32_t time_s, uint32_t time_e, int *cnt)
+static int sql_requery(sqlite3 *db, int tab_id, char *condition, void *data, int *cnt)
 {
-    char temp[1024];
+    int r=-1;
+    char *p,temp[1024];
+    sqlite3_stmt *stmt=NULL;
+
+    if(tab_id==TAB_ID_POWER_INFO) {
+        snprintf(temp, sizeof(temp), "SELECT * FROM %s %s;", tabNamePool[tab_id], product_ch_id, start_time, end_time);
+
+        r = sqlite3_prepare_v2(db, temp, -1, &stmt, 0);
+        if (r != SQLITE_OK) {
+            log_e("___mqtt_load, sqlite3_prepare_v2 failed\n");
+            return -1;
+        }
     
+        while (sqlite3_step(stmt) == SQLITE_ROW) {
+            ser[idx].id = sqlite3_column_int(stmt, 0);
+            ser[idx].mode = sqlite3_column_int(stmt, 1);
+
+            p = (char*)sqlite3_column_text(stmt, 2);
+            if(p) strcpy(ser[idx].name, p);
+
+            p = (char*)sqlite3_column_text(stmt, 3);
+            if(p) strcpy(ser[idx].server, p);
+
+            p = (char*)sqlite3_column_text(stmt, 4);
+            if(p) strcpy(ser[idx].port, p);
+
+            p = (char*)sqlite3_column_text(stmt, 5);
+            if(p) strcpy(ser[idx].cid, p);
+
+            p = (char*)sqlite3_column_text(stmt, 6);
+            if(p) strcpy(ser[idx].user, p);
+
+            p = (char*)sqlite3_column_text(stmt, 7);
+            if(p) strcpy(ser[idx].password, p);
+
+            p = (char*)sqlite3_column_text(stmt, 8);
+            if(p) strcpy(ser[idx].cert, p);
+
+            idx++;
+            if(idx>=MQTT_SER_MAX) {
+                break;
+            }
+        }
+        sqlite3_finalize(stmt);
+
+    }
+    else if(tab_id==TAB_ID_POWER3_INFO) {
+        //
+    }
+    
+    return r;
+}
+int dev_data_xport(sqlite3 *db, int tab_id, int io_type, uint32_t time_s, uint32_t time_e, void *data, int *cnt)
+{
+    int i,r=-1;
+
+    if(tab_id<TAB_ID_NTP || tab_id>=TAB_ID_MAX || io_type<0 || io_type>=IO_MAX || !data || !cnt) {
+        return -1;
+    }
+
+    *cnt = 1;
     switch(tab_id) {
+        case TAB_ID_NTP:
+        {
+            if(io_type==IO_IMPORT) {
+                r = dev_update_ntp_info(db, 0, (NTPManager*)data);
+            }
+            else {
+                r = dev_get_ntp_info(db, (NTPManager*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_USER:
+        {
+            if(io_type==IO_IMPORT) {
+                r = dev_update_user_info(db, (UserInfo*)data);
+            }
+            else {
+                r = dev_get_user_info(db, (UserInfo*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_ROLE:
+        {
+            if(io_type==IO_IMPORT) {
+                r = dev_update_role_info(db, (RoleInfo*)data);
+            }
+            else {
+                r = dev_get_role_info(db, (RoleInfo*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_GROUP:
+        {
+            if(io_type==IO_IMPORT) {
+                r = dev_update_group_info(db, (GroupInfo*)data);
+            }
+            else {
+                r = dev_get_group_info(db, (GroupInfo*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_SNMP:
+        {
+            if(io_type==IO_IMPORT) {
+                r = dev_update_snmp_info(db, 0, (SNMPManager*)data);
+            }
+            else {
+                r = dev_get_snmp_info(db, (SNMPManager*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_MAIL:
+        {
+            mail_recv_t recv;
+            mail_info_t *info=(mail_info_t*)data;
+            if(io_type==IO_IMPORT) {
+                r = dev_mail_update_send(db, info->send);
+
+                for(i=0; i<MAIL_RECV_MAX; i++) {
+                    recv.idx = i;
+                    if(info->recvAccount[i]) {
+                        recv.use = 1;
+                        strcpy(recv.account, info->recvAccount[i]);
+                    }
+                    else{
+                        recv.use = 0;
+                        strcpy(recv.account,"");
+                    }
+                    r = dev_mail_update_recv(db, &recv);
+                }
+            }
+            else {
+                r = dev_mail_get(db, info);
+            }
+        }
+        break;
+
+        case TAB_ID_MQTT:
+        {
+            if(io_type==IO_IMPORT) {
+                r = dev_mqtt_update_info(db, (mqtt_info_t*)data);
+            }
+            else {
+                r = dev_mqtt_get(db, (mqtt_info_t*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_TIMER:
+        {
+            if(io_type==IO_IMPORT) {
+                r = dev_update_ntp_info(db, 0, (NTPManager*)data);
+            }
+            else {
+                r = dev_get_ntp_info(db, (NTPManager*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_POWER:
+        {
+            if(io_type==IO_IMPORT) {
+                //r = dev_update_t_ac_power_manage_info(db, 0, (NTPManager*)data);
+                //dev_update_t_ac_power_manage_over_info(db, 0, (NTPManager*)data);
+            }
+            else {
+                //r = dev_get_power_manage_info(db, (NTPManager*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_POWER3:
+        {
+            if(io_type==IO_IMPORT) {
+                //r = dev_update_t_ac_power_manage_info(db, 0, (NTPManager*)data);
+                //dev_update_t_ac_power_manage_over_info(db, 0, (NTPManager*)data);
+            }
+            else {
+                //r = dev_get_t_ac_power_manage_info(db, (NTPManager*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_SENSOR:
+        {
+            if(io_type==IO_IMPORT) {
+                //r = dev_update_sensor_genera_manage(db, 0, sensor_id, (NTPManager*)data);
+                //r = dev_update_sensor_over_manage(db, 0, sensor_id, (NTPManager*)data);
+            }
+            else {
+                r = dev_get_sensor_manage_info(db, 0, (GlobalSensorManger*)data);
+            }
+        }
+        break;
+
+        case TAB_ID_SENSOR_INFO:
+        {
+            if(io_type==IO_IMPORT) {
+                //r = dev_delete_sensor_info_all();
+                //r = dev_insert_sensor_info(db, );
+            }
+            else {
+                //r = dev_search_sensor_info(db, 0, sensor_id, );
+            }
+        }
+        break;
+
+        case TAB_ID_BREAKER:
+        {
+            if(io_type==IO_IMPORT) {
+                r = dev_update_breaker_genera_manage(db, 0, (GlobalBreakerManager)data);
+            }
+            else {
+                r = dev_get_breaker_manage_info(db, 0, (GlobalBreakerManager)data);
+            }
+        }
+        break;
+
         case TAB_ID_LOG_INFO:
         {
-            //
+            if(io_type==IO_EXPORT) {
+                //r = dev_get_ntp_info(db, (NTPManager*)data);
+            }
         }
         break;
 
         case TAB_ID_ALARM_INFO:
         {
-            //
+            if(io_type==IO_EXPORT) {
+                //r = dev_search_alarm_info(db, (NTPManager*)data);
+            }
         }
         break;
 
         case TAB_ID_POWER_INFO:
         {
-            //
+            if(io_type==IO_EXPORT) {
+                //r = dev_search_time_power_info(db, 0, ch_id, 00, (GlobalPowerInfo*)data, "start", "end");
+            }
         }
         break;
 
         case TAB_ID_POWER3_INFO:
         {
-            //
+            if(io_type==IO_EXPORT) {
+                //r = dev_search_time_t_ac_power_info(db, 0, ch_id, 00, (GlobalPowerInfo*)data, "start", "end");
+            }
         }
         break;
-
-        default:
-        return NULL;
     }
 
     return 0;
@@ -4672,4 +4927,3 @@ void* dev_sql_export(int tab_id, void *data, uint32_t time_s, uint32_t time_e, i
 
 
 
-

+ 10 - 3
pro/src/sqlite_handle.h

@@ -155,10 +155,12 @@ int dev_switch_update_port(sqlite3 *db, port_info_t *pt);
 int dev_switch_update_all(sqlite3 *db, netswitch_info_t *sw);
 
 int dev_mail_init(sqlite3 *db, mail_info_t *info);
+int dev_mail_get(sqlite3 *db, mail_info_t *info);
 int dev_mail_update_send(sqlite3 *db, mail_send_t *send);
 int dev_mail_update_recv(sqlite3 *db, mail_recv_t *recv);
 
 int dev_mqtt_init(sqlite3 *db, mqtt_info_t *info);
+int dev_mqtt_get(sqlite3 *db, mqtt_info_t *info);
 int dev_mqtt_update_ser(sqlite3 *db, mqtt_server_t *ser);
 int dev_mqtt_update_info(sqlite3 *db, mqtt_info_t *info);
 
@@ -166,13 +168,19 @@ int dev_sql_VACCUM(sqlite3 *db);
 int dev_sql_set_overwrite(int flag);
 
 
+enum {
+    IO_IMPORT=0,
+    IO_EXPORT,
+
+    IO_MAX,
+};
 enum {
     TAB_ID_NTP=0,
     TAB_ID_USER,
     TAB_ID_ROLE,
     TAB_ID_GROUP,
     TAB_ID_SNMP,
-    TAB_ID_SMTP,
+    TAB_ID_MAIL,
     TAB_ID_MQTT,
     TAB_ID_TIMER,
     TAB_ID_POWER,
@@ -188,8 +196,7 @@ enum {
     
     TAB_ID_MAX
 };
-
-
+int dev_sql_xport(sqlite3 *db, int tab_id, int io_type, uint32_t time_s, uint32_t time_e, void *data, int *cnt);
 
 
 

+ 21 - 0
pro/src/sys.c

@@ -1202,6 +1202,27 @@ static void mem_check(void)
     }
 }
 
+#define SEND_PERIOD       (24*3600)
+static void send_file(void)
+{
+    int r,cnt;
+    static uint32_t send_cnt=0;
+    GlobalDeviceManager *dm=&__globalDeviceManage;
+
+    send_cnt++;
+    if(send_cnt%SEND_PERIOD==0) {
+
+        r = dev_sql_xport(dm->db, TAB_ID_POWER_INFO, IO_EXPORT, 0, 0, NULL, &cnt);
+        r = dev_sql_xport(dm->db, TAB_ID_POWER3_INFO, IO_EXPORT, 0, 0, NULL, &cnt);
+        r = dev_sql_xport(dm->db, TAB_ID_POWER_INFO, IO_EXPORT, 0, 0, NULL, &cnt);
+        r = dev_sql_xport(dm->db, TAB_ID_POWER_INFO, IO_EXPORT, 0, 0, NULL, &cnt);
+    }
+}
+
+
+
+
+
 static void* polling_thread(void *arg)
 {
     thread_handle_t *h=(thread_handle_t*)arg;