You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
4.2 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #pragma once
  2. #include <sqlite3.h>
  3. #include <stdio.h>
  4. #include <fstream>
  5. #include <functional>
  6. #include <iostream>
  7. #include <list>
  8. #include <map>
  9. #include <memory>
  10. #include <set>
  11. #include <sstream>
  12. #include <string>
  13. #include <vector>
  14. #include "iflytop/core/spdlogfactory/logger.hpp"
  15. #include "iflytop/core/thread/thread.hpp"
  16. #define USER_DB "user.db"
  17. #define SETTING_DB "setting.db"
  18. #define DISINFECTION_RECORD_DB "disinfection_record.db"
  19. /**
  20. * @brief
  21. *
  22. * USER_DB
  23. * table: user
  24. * id uid passwd permission_level
  25. *
  26. *
  27. * SETTING_DB
  28. * table: setting
  29. * id setting_name setting_name_ch val_upper_limit val_lower_limit permission_level val
  30. *
  31. * DISINFECTION_RECORD_DB
  32. * table: disinfection_record
  33. * id uuid uid date loglevel duration
  34. *
  35. *
  36. * table: sensor_record
  37. * id disinfection_id date heating_strip air_compressor sprinkler_pump disinfectant_volume h2o2_1 temp_1 humid_1 saturation_1 h2o2_2 temp_2 humid_2
  38. * saturation_2 h2o2_3 temp_3 humid_3 saturation_3
  39. *
  40. */
  41. namespace iflytop {
  42. using namespace std;
  43. using namespace std;
  44. using namespace core;
  45. using namespace nlohmann;
  46. namespace db {
  47. struct User {
  48. public:
  49. int id;
  50. string uid;
  51. string passwd;
  52. int permission_level;
  53. int visible;
  54. };
  55. struct Setting {
  56. public:
  57. int id;
  58. string name;
  59. string name_ch;
  60. int val_lower_limit;
  61. int val_upper_limit;
  62. int permission_level;
  63. int val;
  64. };
  65. struct PreSetting {
  66. public:
  67. int id;
  68. int group_id;
  69. int stoped_gs;
  70. int continued_gs;
  71. int stoped_satur;
  72. int continued_satur;
  73. int stoped_humi;
  74. int continued_humi;
  75. int injection_pump_speed;
  76. };
  77. struct DisinfectionRecord {
  78. public:
  79. int id;
  80. string uuid;
  81. string uid;
  82. string date;
  83. string loglevel;
  84. int duration;
  85. };
  86. struct SensorRecord {
  87. public:
  88. int id;
  89. string disinfection_id;
  90. string date;
  91. int heating_strip;
  92. int air_compressor;
  93. int sprinkler_pump;
  94. int disinfectant_volume;
  95. int h2o2_1;
  96. int temp_1;
  97. int humid_1;
  98. int saturation_1;
  99. int h2o2_2;
  100. int temp_2;
  101. int humid_2;
  102. int saturation_2;
  103. int h2o2_3;
  104. int temp_3;
  105. int humid_3;
  106. int saturation_3;
  107. };
  108. } // namespace db
  109. using namespace db;
  110. class DBService : public enable_shared_from_this<DBService> {
  111. ENABLE_LOGGER(DBService);
  112. public:
  113. DBService();
  114. void initialize();
  115. public:
  116. /*******************************************************************************
  117. * USER_DB *
  118. *******************************************************************************/
  119. list<shared_ptr<db::User>> getAllUser();
  120. json getAllUserJson();
  121. shared_ptr<db::User> getUser(string uid);
  122. vector<string> getUserNames();
  123. /**
  124. * @brief
  125. *
  126. * @param uid
  127. * @param passwd
  128. * @param permission_level ,0 3
  129. */
  130. void addUser(string uid, string passwd, int permission_level);
  131. void delUser(int id);
  132. void updateUserPermissionLevel(int id, int permission_level);
  133. public:
  134. /*******************************************************************************
  135. * SETTING_DB *
  136. *******************************************************************************/
  137. list<shared_ptr<db::Setting>> getAllSetting();
  138. json getAllSettingJson();
  139. bool setSettingVal(int id, int val);
  140. bool setSettingVal(string name, int val);
  141. int getSettingVal(string name);
  142. public:
  143. /*******************************************************************************
  144. * SensorRecord_operation *
  145. *******************************************************************************/
  146. json getAllRecords(string disinfection_id);
  147. void insertSensorRecord(shared_ptr<db::SensorRecord> record);
  148. void insertDisinfectionRecord(shared_ptr<db::DisinfectionRecord> record);
  149. void setDisinfectionRecordDuration(string disinfection_id, int duration);
  150. private:
  151. void init_usr_db();
  152. void init_setting_db();
  153. void init_disinfection_record_db();
  154. };
  155. }; // namespace iflytop