|
@ -2,9 +2,9 @@ |
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
#include <stdio.h>
|
|
|
#include <stdio.h>
|
|
|
|
|
|
#include <time.h>
|
|
|
|
|
|
|
|
|
#include "db_service.hpp"
|
|
|
#include "db_service.hpp"
|
|
|
|
|
|
|
|
|
//
|
|
|
//
|
|
|
#include "iflytop/components/sqlite_orm/sqlite_orm.hpp"
|
|
|
#include "iflytop/components/sqlite_orm/sqlite_orm.hpp"
|
|
|
|
|
|
|
|
@ -37,48 +37,25 @@ using namespace nlohmann; |
|
|
make_column("permission_level", &Setting::permission_level), /**/ \ |
|
|
make_column("permission_level", &Setting::permission_level), /**/ \ |
|
|
make_column("val", &Setting::val)) |
|
|
make_column("val", &Setting::val)) |
|
|
|
|
|
|
|
|
// #define SETTING_DB_STRUCT \ |
|
|
|
|
|
// make_table("settings", /**/ \ |
|
|
|
|
|
// make_column("id", &PreSetting::id, primary_key()), /**/ \ |
|
|
|
|
|
// make_column("name", &PreSetting::group_id), /**/ \ |
|
|
|
|
|
// make_column("name", &PreSetting::name), /**/ \ |
|
|
|
|
|
// make_column("name_ch", &PreSetting::name_ch), /**/ \ |
|
|
|
|
|
// make_column("val_lower_limit", &PreSetting::val_lower_limit), /**/ \ |
|
|
|
|
|
// make_column("val_upper_limit", &PreSetting::val_upper_limit), /**/ \ |
|
|
|
|
|
// make_column("permission_level", &PreSetting::permission_level), /**/ \ |
|
|
|
|
|
// make_column("val", &PreSetting::val))
|
|
|
|
|
|
|
|
|
|
|
|
// // PreSetting
|
|
|
|
|
|
|
|
|
|
|
|
#define DISINFECTION_RECORD_DB_STRUCT \
|
|
|
|
|
|
DISINFECTION_RECORD_DB, \ |
|
|
|
|
|
make_table("disinfection_records", /**/ \ |
|
|
|
|
|
make_column("id", &DisinfectionRecord::id, primary_key().autoincrement()), /**/ \ |
|
|
|
|
|
make_column("uuid", &DisinfectionRecord::uuid), /**/ \ |
|
|
|
|
|
make_column("uid", &DisinfectionRecord::uid), /**/ \ |
|
|
|
|
|
make_column("date", &DisinfectionRecord::date), /**/ \ |
|
|
|
|
|
make_column("loglevel", &DisinfectionRecord::loglevel), /**/ \ |
|
|
|
|
|
make_column("duration", &DisinfectionRecord::duration)), /**/ \ |
|
|
|
|
|
make_table("sensor_records", /**/ \ |
|
|
|
|
|
make_column("id", &SensorRecord::id, primary_key().autoincrement()), /**/ \ |
|
|
|
|
|
make_column("disinfection_id", &SensorRecord::disinfection_id), /**/ \ |
|
|
|
|
|
make_column("date", &SensorRecord::date), /**/ \ |
|
|
|
|
|
make_column("heating_strip", &SensorRecord::heating_strip), /**/ \ |
|
|
|
|
|
make_column("air_compressor", &SensorRecord::air_compressor), /**/ \ |
|
|
|
|
|
make_column("sprinkler_pump", &SensorRecord::sprinkler_pump), /**/ \ |
|
|
|
|
|
make_column("disinfectant_volume", &SensorRecord::disinfectant_volume), /**/ \ |
|
|
|
|
|
make_column("h2o2_1", &SensorRecord::h2o2_1), /**/ \ |
|
|
|
|
|
make_column("temp_1", &SensorRecord::temp_1), /**/ \ |
|
|
|
|
|
make_column("humid_1", &SensorRecord::humid_1), /**/ \ |
|
|
|
|
|
make_column("saturation_1", &SensorRecord::saturation_1), /**/ \ |
|
|
|
|
|
make_column("h2o2_2", &SensorRecord::h2o2_2), /**/ \ |
|
|
|
|
|
make_column("temp_2", &SensorRecord::temp_2), /**/ \ |
|
|
|
|
|
make_column("humid_2", &SensorRecord::humid_2), /**/ \ |
|
|
|
|
|
make_column("saturation_2", &SensorRecord::saturation_2), /**/ \ |
|
|
|
|
|
make_column("h2o2_3", &SensorRecord::h2o2_3), /**/ \ |
|
|
|
|
|
make_column("temp_3", &SensorRecord::temp_3), /**/ \ |
|
|
|
|
|
make_column("humid_3", &SensorRecord::humid_3), /**/ \ |
|
|
|
|
|
make_column("saturation_3", &SensorRecord::saturation_3)) |
|
|
|
|
|
|
|
|
#define FORMULA_DB_STRUCT \
|
|
|
|
|
|
make_table("formulas", /**/ \ |
|
|
|
|
|
make_column("id", &Formula::id, primary_key()), /**/ \ |
|
|
|
|
|
make_column("formula_id", &Formula::formula_id), /**/ \ |
|
|
|
|
|
make_column("stoped_gs", &Formula::stoped_gs), /**/ \ |
|
|
|
|
|
make_column("continued_gs", &Formula::continued_gs), /**/ \ |
|
|
|
|
|
make_column("stoped_satur", &Formula::stoped_satur), /**/ \ |
|
|
|
|
|
make_column("continued_satur", &Formula::continued_satur), /**/ \ |
|
|
|
|
|
make_column("stoped_humi", &Formula::stoped_humi), /**/ \ |
|
|
|
|
|
make_column("continued_humi", &Formula::continued_humi), /**/ \ |
|
|
|
|
|
make_column("injection_pump_speed", &Formula::injection_pump_speed)) |
|
|
|
|
|
|
|
|
|
|
|
#define USER_BEHAVIOR_RECORD_STRUCT \
|
|
|
|
|
|
make_table("user_behavior_records", /**/ \ |
|
|
|
|
|
make_column("id", &UserBehaviorRecord::id, primary_key().autoincrement()), /**/ \ |
|
|
|
|
|
make_column("uid", &UserBehaviorRecord::uid), /**/ \ |
|
|
|
|
|
make_column("date", &UserBehaviorRecord::date), /**/ \ |
|
|
|
|
|
make_column("behavior", &UserBehaviorRecord::behavior), /**/ \ |
|
|
|
|
|
make_column("behaviorinfo", &UserBehaviorRecord::behaviorinfo)) |
|
|
|
|
|
|
|
|
DBService::DBService(/* args */) {} |
|
|
DBService::DBService(/* args */) {} |
|
|
|
|
|
|
|
@ -90,7 +67,6 @@ void DBService::initialize() { |
|
|
//
|
|
|
//
|
|
|
init_usr_db(); |
|
|
init_usr_db(); |
|
|
init_setting_db(); |
|
|
init_setting_db(); |
|
|
init_disinfection_record_db(); |
|
|
|
|
|
|
|
|
|
|
|
json settings = getAllSettingJson(); |
|
|
json settings = getAllSettingJson(); |
|
|
logger->info("settings: {}", settings.dump()); |
|
|
logger->info("settings: {}", settings.dump()); |
|
@ -177,17 +153,19 @@ id setting_name setting_name_ch val_upper_limit val_lower_limi |
|
|
} while (!suc); |
|
|
} while (!suc); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void DBService::init_disinfection_record_db() { |
|
|
|
|
|
|
|
|
void DBService::init_formula_db() { |
|
|
bool suc = false; |
|
|
bool suc = false; |
|
|
|
|
|
|
|
|
do { |
|
|
do { |
|
|
try { |
|
|
try { |
|
|
logger->info("init disinfection record db"); |
|
|
|
|
|
auto storage = make_storage(DISINFECTION_RECORD_DB_STRUCT); |
|
|
|
|
|
|
|
|
logger->info("init formula db"); |
|
|
|
|
|
auto storage = make_storage(FORMULA_DB, FORMULA_DB_STRUCT); |
|
|
storage.sync_schema(); |
|
|
storage.sync_schema(); |
|
|
|
|
|
|
|
|
suc = true; |
|
|
suc = true; |
|
|
} catch (const std::exception& e) { |
|
|
} catch (const std::exception& e) { |
|
|
logger->error("init disinfection record db failed: {}", e.what()); |
|
|
|
|
|
system("rm -rf disinfection_record.db"); |
|
|
|
|
|
|
|
|
logger->error("init setting db failed: {}", e.what()); |
|
|
|
|
|
system("rm -rf setting.db"); |
|
|
sleep(1); |
|
|
sleep(1); |
|
|
} |
|
|
} |
|
|
} while (!suc); |
|
|
} while (!suc); |
|
@ -380,83 +358,191 @@ int DBService::getSettingVal(string name) { |
|
|
return setting[0].val; |
|
|
return setting[0].val; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
json DBService::getAllRecords(string disinfection_id) { |
|
|
|
|
|
json j_records; |
|
|
|
|
|
auto recordtable = make_storage(DISINFECTION_RECORD_DB_STRUCT); |
|
|
|
|
|
|
|
|
|
|
|
// int id;
|
|
|
|
|
|
// string disinfection_id;
|
|
|
|
|
|
// string date;
|
|
|
|
|
|
// int heating_strip;
|
|
|
|
|
|
// int air_compressor;
|
|
|
|
|
|
// int sprinkler_pump;
|
|
|
|
|
|
// int disinfectant_volume;
|
|
|
|
|
|
// int h2o2_1;
|
|
|
|
|
|
// int temp_1;
|
|
|
|
|
|
// int humid_1;
|
|
|
|
|
|
// int saturation_1;
|
|
|
|
|
|
// int h2o2_2;
|
|
|
|
|
|
// int temp_2;
|
|
|
|
|
|
// int humid_2;
|
|
|
|
|
|
// int saturation_2;
|
|
|
|
|
|
// int h2o2_3;
|
|
|
|
|
|
// int temp_3;
|
|
|
|
|
|
// int humid_3;
|
|
|
|
|
|
// int saturation_3;
|
|
|
|
|
|
|
|
|
|
|
|
recordtable.sync_schema(); |
|
|
|
|
|
auto all = recordtable.get_all<SensorRecord>(where(c(&SensorRecord::disinfection_id) == disinfection_id)); |
|
|
|
|
|
for (auto& r : all) { |
|
|
|
|
|
json j_record; |
|
|
|
|
|
j_record["id"] = r.id; |
|
|
|
|
|
j_record["disinfection_id"] = r.disinfection_id; |
|
|
|
|
|
j_record["date"] = r.date; |
|
|
|
|
|
j_record["heating_strip"] = r.heating_strip; |
|
|
|
|
|
j_record["air_compressor"] = r.air_compressor; |
|
|
|
|
|
j_record["sprinkler_pump"] = r.sprinkler_pump; |
|
|
|
|
|
j_record["disinfectant_volume"] = r.disinfectant_volume; |
|
|
|
|
|
j_record["h2o2_1"] = r.h2o2_1; |
|
|
|
|
|
j_record["temp_1"] = r.temp_1; |
|
|
|
|
|
j_record["humid_1"] = r.humid_1; |
|
|
|
|
|
j_record["saturation_1"] = r.saturation_1; |
|
|
|
|
|
j_record["h2o2_2"] = r.h2o2_2; |
|
|
|
|
|
j_record["temp_2"] = r.temp_2; |
|
|
|
|
|
j_record["humid_2"] = r.humid_2; |
|
|
|
|
|
j_record["saturation_2"] = r.saturation_2; |
|
|
|
|
|
j_record["h2o2_3"] = r.h2o2_3; |
|
|
|
|
|
j_record["temp_3"] = r.temp_3; |
|
|
|
|
|
j_record["humid_3"] = r.humid_3; |
|
|
|
|
|
j_record["saturation_3"] = r.saturation_3; |
|
|
|
|
|
j_records.push_back(j_record); |
|
|
|
|
|
|
|
|
list<shared_ptr<db::Formula>> DBService::getAllFormula() { |
|
|
|
|
|
list<shared_ptr<db::Formula>> formulas; |
|
|
|
|
|
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT); |
|
|
|
|
|
formulatable.sync_schema(); |
|
|
|
|
|
auto all = formulatable.get_all<Formula>(); |
|
|
|
|
|
for (auto& f : all) { |
|
|
|
|
|
formulas.push_back(make_shared<Formula>(f)); |
|
|
} |
|
|
} |
|
|
return j_records; |
|
|
|
|
|
|
|
|
return formulas; |
|
|
} |
|
|
} |
|
|
void DBService::insertSensorRecord(shared_ptr<db::SensorRecord> record) { |
|
|
|
|
|
if (!record) { |
|
|
|
|
|
logger->error("insert sensor record failed: record is null"); |
|
|
|
|
|
return; |
|
|
|
|
|
|
|
|
shared_ptr<db::Formula> DBService::getFormula(int id) { |
|
|
|
|
|
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT); |
|
|
|
|
|
formulatable.sync_schema(); |
|
|
|
|
|
auto formula = formulatable.get_all<Formula>(where(c(&Formula::id) == id)); |
|
|
|
|
|
if (formula.size() == 0) { |
|
|
|
|
|
return nullptr; |
|
|
} |
|
|
} |
|
|
auto recordtable = make_storage(DISINFECTION_RECORD_DB_STRUCT); |
|
|
|
|
|
recordtable.sync_schema(); |
|
|
|
|
|
recordtable.insert(*record); |
|
|
|
|
|
|
|
|
return make_shared<Formula>(formula[0]); |
|
|
} |
|
|
} |
|
|
void DBService::insertDisinfectionRecord(shared_ptr<db::DisinfectionRecord> record) { |
|
|
|
|
|
if (!record) { |
|
|
|
|
|
logger->error("insert disinfection record failed: record is null"); |
|
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
json DBService::getAllFormulaJson() { |
|
|
|
|
|
json j_formulas; |
|
|
|
|
|
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT); |
|
|
|
|
|
formulatable.sync_schema(); |
|
|
|
|
|
auto all = formulatable.get_all<Formula>(); |
|
|
|
|
|
for (auto& f : all) { |
|
|
|
|
|
json j_formula; |
|
|
|
|
|
j_formula["id"] = f.id; |
|
|
|
|
|
j_formula["formula_id"] = f.formula_id; |
|
|
|
|
|
j_formula["stoped_gs"] = f.stoped_gs; |
|
|
|
|
|
j_formula["continued_gs"] = f.continued_gs; |
|
|
|
|
|
j_formula["stoped_satur"] = f.stoped_satur; |
|
|
|
|
|
j_formula["continued_satur"] = f.continued_satur; |
|
|
|
|
|
j_formula["stoped_humi"] = f.stoped_humi; |
|
|
|
|
|
j_formula["continued_humi"] = f.continued_humi; |
|
|
|
|
|
j_formula["injection_pump_speed"] = f.injection_pump_speed; |
|
|
|
|
|
j_formulas.push_back(j_formula); |
|
|
} |
|
|
} |
|
|
auto recordtable = make_storage(DISINFECTION_RECORD_DB_STRUCT); |
|
|
|
|
|
recordtable.sync_schema(); |
|
|
|
|
|
recordtable.insert(*record); |
|
|
|
|
|
|
|
|
return j_formulas; |
|
|
|
|
|
} |
|
|
|
|
|
void DBService::addFormula(string formula_id, string stoped_gs, string continued_gs, string stoped_satur, string continued_satur, string stoped_humi, |
|
|
|
|
|
string continued_humi, string injection_pump_speed) { |
|
|
|
|
|
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT); |
|
|
|
|
|
formulatable.sync_schema(); |
|
|
|
|
|
Formula f; |
|
|
|
|
|
f.formula_id = formula_id; |
|
|
|
|
|
f.stoped_gs = stoped_gs; |
|
|
|
|
|
f.continued_gs = continued_gs; |
|
|
|
|
|
f.stoped_satur = stoped_satur; |
|
|
|
|
|
f.continued_satur = continued_satur; |
|
|
|
|
|
f.stoped_humi = stoped_humi; |
|
|
|
|
|
f.continued_humi = continued_humi; |
|
|
|
|
|
f.injection_pump_speed = injection_pump_speed; |
|
|
|
|
|
formulatable.insert(f); |
|
|
|
|
|
|
|
|
|
|
|
formulatable.sync_schema(); |
|
|
} |
|
|
} |
|
|
void DBService::setDisinfectionRecordDuration(string disinfection_id, int duration) { |
|
|
|
|
|
auto recordtable = make_storage(DISINFECTION_RECORD_DB_STRUCT); |
|
|
|
|
|
recordtable.sync_schema(); |
|
|
|
|
|
auto record = recordtable.get_all<DisinfectionRecord>(where(c(&DisinfectionRecord::uuid) == disinfection_id)); |
|
|
|
|
|
if (record.size() == 0) { |
|
|
|
|
|
logger->error("set disinfection record duration failed: {} not found", disinfection_id); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DBService::addFormula(string formula_id, int stoped_gs, int continued_gs, int stoped_satur, int continued_satur, int stoped_humi, int continued_humi, |
|
|
|
|
|
int injection_pump_speed) { |
|
|
|
|
|
addFormula(formula_id, to_string(stoped_gs), to_string(continued_gs), to_string(stoped_satur), to_string(continued_satur), to_string(stoped_humi), |
|
|
|
|
|
to_string(continued_humi), to_string(injection_pump_speed)); |
|
|
|
|
|
} |
|
|
|
|
|
void DBService::delFormula(int id) { |
|
|
|
|
|
// remove_all
|
|
|
|
|
|
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT); |
|
|
|
|
|
formulatable.sync_schema(); |
|
|
|
|
|
formulatable.remove_all<Formula>(where(c(&Formula::id) == id)); |
|
|
|
|
|
formulatable.sync_schema(); |
|
|
|
|
|
} |
|
|
|
|
|
void DBService::updateFormula(int id, string column, string val) { |
|
|
|
|
|
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT); |
|
|
|
|
|
formulatable.sync_schema(); |
|
|
|
|
|
auto formula = formulatable.get_all<Formula>(where(c(&Formula::id) == id)); |
|
|
|
|
|
if (formula.size() == 0) { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
record[0].duration = duration; |
|
|
|
|
|
recordtable.update(record[0]); |
|
|
|
|
|
|
|
|
if (column == "formula_id") { |
|
|
|
|
|
formula[0].formula_id = val; |
|
|
|
|
|
} else if (column == "stoped_gs") { |
|
|
|
|
|
formula[0].stoped_gs = val; |
|
|
|
|
|
} else if (column == "continued_gs") { |
|
|
|
|
|
formula[0].continued_gs = val; |
|
|
|
|
|
} else if (column == "stoped_satur") { |
|
|
|
|
|
formula[0].stoped_satur = val; |
|
|
|
|
|
} else if (column == "continued_satur") { |
|
|
|
|
|
formula[0].continued_satur = val; |
|
|
|
|
|
} else if (column == "stoped_humi") { |
|
|
|
|
|
formula[0].stoped_humi = val; |
|
|
|
|
|
} else if (column == "continued_humi") { |
|
|
|
|
|
formula[0].continued_humi = val; |
|
|
|
|
|
} else if (column == "injection_pump_speed") { |
|
|
|
|
|
formula[0].injection_pump_speed = val; |
|
|
|
|
|
} |
|
|
|
|
|
formulatable.update(formula[0]); |
|
|
|
|
|
formulatable.sync_schema(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int DBService::getUserBehaviorRecordCount() { |
|
|
|
|
|
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT); |
|
|
|
|
|
user_behavior_record_table.sync_schema(); |
|
|
|
|
|
return user_behavior_record_table.count<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) > 0)); |
|
|
|
|
|
} |
|
|
|
|
|
int DBService::getUserBehaviorRecordTheFirstId() { |
|
|
|
|
|
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT); |
|
|
|
|
|
user_behavior_record_table.sync_schema(); |
|
|
|
|
|
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc()); |
|
|
|
|
|
if (all.size() == 0) { |
|
|
|
|
|
return -1; |
|
|
|
|
|
} |
|
|
|
|
|
return all[0].id; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
json DBService::getUserBehaviorRecordDescJson(int page, int page_size) { |
|
|
|
|
|
json j_user_behavior_records; |
|
|
|
|
|
|
|
|
|
|
|
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT); |
|
|
|
|
|
user_behavior_record_table.sync_schema(); |
|
|
|
|
|
|
|
|
|
|
|
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).desc()); |
|
|
|
|
|
|
|
|
|
|
|
int i = 0; |
|
|
|
|
|
|
|
|
|
|
|
int from = page * page_size; |
|
|
|
|
|
int to = (page + 1) * page_size; |
|
|
|
|
|
|
|
|
|
|
|
for (auto& u : all) { |
|
|
|
|
|
if (i >= from && i < to) { |
|
|
|
|
|
json j_user_behavior_record; |
|
|
|
|
|
j_user_behavior_record["id"] = u.id; |
|
|
|
|
|
j_user_behavior_record["uid"] = u.uid; |
|
|
|
|
|
j_user_behavior_record["behavior"] = u.behavior; |
|
|
|
|
|
j_user_behavior_record["behaviorZH"] = user_behavior_to_str((user_behavior_t)u.behavior); |
|
|
|
|
|
j_user_behavior_record["behaviorinfo"] = u.behaviorinfo; |
|
|
|
|
|
j_user_behavior_record["date"] = u.date; |
|
|
|
|
|
j_user_behavior_records["iterms"].push_back(j_user_behavior_record); |
|
|
|
|
|
} else if (i >= to) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
i++; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
j_user_behavior_records["total"] = all.size(); |
|
|
|
|
|
j_user_behavior_records["page"] = page; |
|
|
|
|
|
j_user_behavior_records["totalpage"] = all.size() / page_size + all.size() % page_size == 0 ? 0 : 1; |
|
|
|
|
|
|
|
|
|
|
|
return j_user_behavior_records; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static string getTime() { |
|
|
|
|
|
struct tm tm = {0}; |
|
|
|
|
|
|
|
|
|
|
|
time_t t = ::time(nullptr); |
|
|
|
|
|
struct tm* tmp = localtime_r(&t, &tm); |
|
|
|
|
|
return fmt::format("{:0>4}-{:0>2}{:0>2}-{:0>2}:{:0>2}:{:0>2}", tm.tm_year + 1900, //
|
|
|
|
|
|
tm.tm_mon + 1, //
|
|
|
|
|
|
tm.tm_mday, //
|
|
|
|
|
|
tm.tm_hour, //
|
|
|
|
|
|
tm.tm_min, tm.tm_sec); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void DBService::addUserBehaviorRecord(string uid, int behavior, string behaviorinfo) { |
|
|
|
|
|
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT); |
|
|
|
|
|
user_behavior_record_table.sync_schema(); |
|
|
|
|
|
UserBehaviorRecord u; |
|
|
|
|
|
u.uid = uid; |
|
|
|
|
|
u.behavior = behavior; |
|
|
|
|
|
u.behaviorinfo = behaviorinfo; |
|
|
|
|
|
u.date = getTime(); |
|
|
|
|
|
user_behavior_record_table.insert(u); |
|
|
|
|
|
user_behavior_record_table.sync_schema(); |
|
|
|
|
|
|
|
|
|
|
|
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc()); |
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 如果记录总数量大于5000条,删除第一条 |
|
|
|
|
|
*/ |
|
|
|
|
|
if (all.size() > USER_BEHAVIOR_RECORD_DB_MAX_RECORDS) { |
|
|
|
|
|
user_behavior_record_table.remove_all<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) == all[0].id)); |
|
|
|
|
|
user_behavior_record_table.sync_schema(); |
|
|
|
|
|
} |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
void DBService::cleanUserBehaviorRecord() { |
|
|
|
|
|
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT); |
|
|
|
|
|
user_behavior_record_table.sync_schema(); |
|
|
|
|
|
user_behavior_record_table.remove_all<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) > 0)); |
|
|
|
|
|
user_behavior_record_table.sync_schema(); |
|
|
} |
|
|
} |