2025-05-19 09:54:33 +08:00
|
|
|
|
#include "DataFields.h"
|
|
|
|
|
|
#include "common/Utils.h"
|
|
|
|
|
|
|
|
|
|
|
|
void DataFields::set(string key, string val)
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
mapFields_[key] = val;
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
void DataFields::set(string key, float val)
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
mapFields_[key] = std::to_string(val);
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
void DataFields::set(string key, int val)
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
mapFields_[key] = std::to_string(val);
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
void DataFields::set(string key, int64_t val)
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
mapFields_[key] = std::to_string(val);
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
2025-07-18 09:08:09 +08:00
|
|
|
|
string DataFields::getStr(string key)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
if (mapFields_.count(key) > 0)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
return mapFields_[key];
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return "";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-07-18 09:08:09 +08:00
|
|
|
|
int DataFields::getInt(string key)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
return mapFields_.count(key) > 0 ? Utils::toInt(mapFields_[key]) : 0;
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
2025-07-18 09:08:09 +08:00
|
|
|
|
float DataFields::getFloat(string key)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
return mapFields_.count(key) > 0 ? Utils::toFloat(mapFields_[key]) : 0.0f;
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
void DataFields::remove(string key)
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
auto it = mapFields_.find(key);
|
|
|
|
|
|
if (it != mapFields_.end())
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
mapFields_.erase(it);
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
void DataFields::append(DataFields& datafield)
|
|
|
|
|
|
{
|
|
|
|
|
|
auto& map_f = datafield.fields();
|
|
|
|
|
|
for (auto it = map_f.begin(); it != map_f.end(); it++)
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
mapFields_[it->first] = it->second;
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
map<string, string>& DataFields::fields()
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
return mapFields_;
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DataFields::check(string key, string val, string d)
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
if (mapFields_.count(key) > 0 && mapFields_[key] == val)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
mapFields_[key] = d;
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string DataFields::get_insert_sql(string tbname)
|
|
|
|
|
|
{
|
|
|
|
|
|
string key;
|
|
|
|
|
|
string val;
|
2025-07-18 09:08:09 +08:00
|
|
|
|
for (auto it = mapFields_.begin(); it != mapFields_.end(); it++)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (!key.empty())
|
|
|
|
|
|
{
|
|
|
|
|
|
key += ",";
|
|
|
|
|
|
val += ",";
|
|
|
|
|
|
}
|
|
|
|
|
|
key += ("`" + it->first + "`");
|
|
|
|
|
|
if (it->second == "null" || it->second == "NULL")
|
|
|
|
|
|
{
|
|
|
|
|
|
val += "NULL";
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
val += ("'" + it->second + "'");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return "INSERT INTO `" + tbname + "` (" + key + ") VALUES(" + val + ");";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string DataFields::get_update_sql(string tbname, string sql_c)
|
|
|
|
|
|
{
|
|
|
|
|
|
ostringstream oss;
|
|
|
|
|
|
oss << "update " << tbname << " set ";
|
2025-07-18 09:08:09 +08:00
|
|
|
|
for (auto iter = mapFields_.begin(); iter != mapFields_.end(); iter++)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
if (iter != mapFields_.begin())
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
|
|
|
|
|
oss << ",";
|
|
|
|
|
|
};
|
|
|
|
|
|
oss << "`" << iter->first << "`=";
|
|
|
|
|
|
if (iter->second == "null" || iter->second == "NULL")
|
|
|
|
|
|
{
|
|
|
|
|
|
oss << "NULL";
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
oss << "'" << iter->second << "'";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
oss << " " << sql_c << ";";
|
|
|
|
|
|
return oss.str();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string DataFields::get_update_sql(string tbname, std::vector<std::string> vec_keys, string sql_c)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::map<std::string, bool> map_keys;
|
|
|
|
|
|
for (auto& k : vec_keys) { map_keys[k] = true; }
|
|
|
|
|
|
|
|
|
|
|
|
ostringstream oss;
|
|
|
|
|
|
oss << "update " << tbname << " set ";
|
2025-07-18 09:08:09 +08:00
|
|
|
|
for (auto iter = mapFields_.begin(); iter != mapFields_.end(); iter++)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
|
|
|
|
|
auto& k = iter->first;
|
|
|
|
|
|
auto& v = iter->second;
|
|
|
|
|
|
if (!map_keys[k]) { continue; }
|
2025-07-18 09:08:09 +08:00
|
|
|
|
if (iter != mapFields_.begin())
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
|
|
|
|
|
oss << ",";
|
|
|
|
|
|
};
|
|
|
|
|
|
oss << "`" << k << "`=";
|
|
|
|
|
|
if (v == "null" || v == "NULL")
|
|
|
|
|
|
{
|
|
|
|
|
|
oss << "NULL";
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
oss << "'" << v << "'";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
oss << " " << sql_c << ";";
|
|
|
|
|
|
return oss.str();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DataFields::foreach_item(function<void(string key, string val)> on_foraach)
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
for (auto it = mapFields_.begin(); it != mapFields_.end(); it++)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (on_foraach)
|
|
|
|
|
|
{
|
|
|
|
|
|
on_foraach(it->first, it->second);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-07-18 09:08:09 +08:00
|
|
|
|
bool DataFields::isEmpty(string key)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
auto& s = mapFields_[key];
|
2025-05-19 09:54:33 +08:00
|
|
|
|
return s.empty();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool DataFields::is_float_number(string key)
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
auto& s = mapFields_[key];
|
2025-05-19 09:54:33 +08:00
|
|
|
|
if (s.empty())
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
for (auto& c : s)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (std::isdigit(c) == 0 && c != '.')
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string DataFields::to_str()
|
|
|
|
|
|
{
|
|
|
|
|
|
string s;
|
2025-07-18 09:08:09 +08:00
|
|
|
|
for (auto it = mapFields_.begin(); it != mapFields_.end(); it++)
|
2025-05-19 09:54:33 +08:00
|
|
|
|
{
|
|
|
|
|
|
s += ("[" + it->first + ":" + it->second + "] ");
|
|
|
|
|
|
}
|
|
|
|
|
|
return s;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int DataFields::size()
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
return mapFields_.size();
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DataFields::clear()
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
mapFields_.clear();
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|