From 0380d646c7338ac25bfbbbaf49ce9e2745eff57f Mon Sep 17 00:00:00 2001 From: pansen <pansen626@sina.com> Date: 星期四, 24 一月 2019 13:40:45 +0800 Subject: [PATCH] 布控相关接口,表结构变更。 --- syncDBTool/ErlangDbTool.cpp | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 105 insertions(+), 1 deletions(-) diff --git a/syncDBTool/ErlangDbTool.cpp b/syncDBTool/ErlangDbTool.cpp index 8c3e12a..75280bc 100755 --- a/syncDBTool/ErlangDbTool.cpp +++ b/syncDBTool/ErlangDbTool.cpp @@ -639,6 +639,14 @@ return false; } +bool ErlangTool::ErlangDbTool::createDatabase(std::string t_tableName, FieldValues &fieldValues) { +// #todo 璁板緱娴嬭瘯涓枃 + std::string strSql = getCreateFaceTableSql(t_tableName); + strSql.append(getInsertSql("sys_o_tables", fieldValues)); + getExecSqlResult(strSql); +} + + bool ErlangTool::ErlangDbTool::updateDatabase(std::string UUID, std::string TableType, std::string TableName, bool SyncType, std::string BwType, std::string StartTime, std::string EndTime) { @@ -722,6 +730,86 @@ return false; } +bool ErlangTool::ErlangDbTool::updateDatabase(std::string t_tableName, FieldValues &fieldValues) { + // #todo 璁板緱娴嬭瘯涓枃 + std::string strSql = getUpdateFaceTableSql(t_tableName, fieldValues); + return getExecSqlResult(strSql); + +} + +bool ErlangTool::ErlangDbTool::getExecSqlResult(const std::string &strSql) { + ErlangTool::LockG lock(m_mutex); +// m_mutex.lock(); + m_ret = resetConn(); + if (!m_ret) { + //#todo error message + std::cout << __FILE__ << __FUNCTION__ << __LINE__ << " error " << this->m_ret << " " << this->m_fd + << std::endl; + return false; + } + + ErlMessage emsg; /* Incoming message */ + int ret = -1; + ETERM *arrlist[7]; + arrlist[0] = erl_mk_atom(strSql.c_str()); + ETERM *list = erl_mk_list(arrlist, 1); + + ret = erl_rpc_to(m_fd, "syncDB", "exeSomeSql", list); + if (ret == ERL_TICK) { + ret = erl_rpc_from(m_fd, TIMEOUT, &emsg); + //erl_close_connection(m_fd); +// m_mutex.unlock(); + if (ret == ERL_MSG) { + std::map<std::__cxx11::string, std::__cxx11::string> t_results; + + ETERM *tail_list; + ETERM *list_ret[1000], *arr_ret[2]; + ETERM *key, *value; + ETERM *tuplep[6]; + + arr_ret[0] = erl_element(2, emsg.msg); + int erlLength = erl_length(arr_ret[0]); + printf("arr_ret[0]:%d\n", erlLength); + list_ret[0] = erl_hd(arr_ret[0]); + tail_list = erl_tl(arr_ret[0]); + for (int i = 0; i < erlLength; i++) { + if (i > 0) { + list_ret[i] = erl_hd(tail_list); + tail_list = erl_tl(tail_list); + } +// printf("list_ret[%d]:%d\n", i, erl_length(list_ret[i])); + tuplep[0] = erl_hd(list_ret[i]); + key = erl_element(1, list_ret[i]); + value = erl_element(2, list_ret[i]); +// printf("key:%s\n", ERL_ATOM_PTR(key)); + + switch (ErlangTool::checkETERMType(value)) { + case ERL_ATOM: { +// int atomSize = ERL_ATOM_SIZE(value); + char *atomValue = ERL_ATOM_PTR(value); +// printf("value is a atom: atomSize:%d, atomValue:%s \n\r", atomSize, atomValue); + t_results.insert(std::make_pair(ERL_ATOM_PTR(key), atomValue)); + break; + } + default: + printf("error add case todo \n\r"); + } + ErlangTool::erlangFreeEterm(4, key, value, tuplep[0], list_ret[i]); + } + ErlangTool::erlangFreeEterm(2, tail_list, arr_ret[0]); + erl_eterm_release(); + auto it = t_results.find("atomic"); + if (t_results.size() > 0 && t_results.end() != it && it->second == "ok") { + return true; + } + } + } + erl_free_array(arrlist, 1); +// erlangFreeEterm(4, emsg.to, emsg.msg, emsg.from, list); + erl_eterm_release(); + return false; +} + bool ErlangTool::ErlangDbTool::deleteDatabase(std::string TableType, std::string TableName, bool SyncType) { LockG lock(m_mutex); // m_mutex.lock(); @@ -791,6 +879,19 @@ erl_free_array(arrlist, 2); erlangFreeEterm(4, emsg.to, emsg.msg, emsg.from, list); return false; +} + + +bool ErlangTool::ErlangDbTool::deleteDatabase(std::string t_tableName) { + + FieldValues fieldValues; + fieldValues.insert(std::make_pair("uuid", t_tableName)); + fieldValues.insert(std::make_pair("del_flag", "1")); + std::string strSql = getUpdateFaceTableSql("sys_o_tables", fieldValues); + strSql.append("DROP TABLE '" + t_tableName + "';DROP TABLE '" + t_tableName + "_fea';"); + // #todo 璁板緱娴嬭瘯涓枃 + return getExecSqlResult(strSql); + } // 鍜宔rlang浜や簰 @@ -894,7 +995,7 @@ map_TabDataCache tabDataCache; QString sql = QString::fromStdString( - "SELECT uuid,tableName,tableType,bwType,startTime,endTime FROM sys_o_tables where del_flag=0;"); + "SELECT uuid,tableName,tableType,bwType,startTime,endTime,uploadFlag,cmpThreshold,enabled FROM sys_o_tables where del_flag=0;"); QSqlQuery query(g_syncDbFile); query.prepare(sql); if (!query.exec()) { @@ -908,6 +1009,9 @@ t_table_info.bwType = query.value(3).toString().toStdString(); t_table_info.startTime = query.value(4).toString().toStdString(); t_table_info.endTime = query.value(5).toString().toStdString(); + t_table_info.uploadFlag = query.value(6).toString().toStdString(); + t_table_info.cmpThreshold = query.value(7).toString().toStdString(); + t_table_info.enabled = query.value(8).toString().toStdString(); tabDataCache.insert(std::make_pair(t_table_info.uuid, t_table_info)); } -- Gitblit v1.8.0