lacteApp
C++17 service for Lacte hardware
Loading...
Searching...
No Matches
test_db.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <sqlite.hpp>
4
13struct Stat {
14 std::string m_id; // первичный ключ
15 std::string m_date;
16 int m_status{};
18 std::string m_n_RFID;
19 int m_mqtt_status{};
20};
21
22struct Info {
23 std::string m_id; // первичный ключ
24 std::string m_date;
25 std::string m_field;
26 std::string m_value;
28};
29
30struct Errors {
31 std::string m_id; // первичный ключ
32 std::string m_date;
33 int m_error{}; // underlying(BoardError)
34 bool m_value{}; // хранится как INTEGER 0/1
35 int m_mqtt_status{};
36};
37
38// Статическое словарное отображение: область ("error"/"status"), числовой
39// код, описание и версия набора данных
40struct Dictionary {
41 int m_id{};
42 std::string m_area; // например, "error" или "status"
43 int m_code{}; // числовой код (например, значение enum)
44 std::string m_description; // текст, понятный человеку
45 std::string m_version; // версия набора данных, для обновления при запуске
46 auto operator==(const Dictionary& other) const -> bool {
47 return m_area == other.m_area && m_code == other.m_code &&
48 m_version == other.m_version && m_description == other.m_description;
49 }
50
51 auto operator!=(const Dictionary& other) const -> bool {
52 return !(*this == other);
53 }
54};
55} // namespace insitech::database::models
56
57// ===== GENERATED CODE (DO NOT EDIT) =====
59
60struct StatMeta {
62 static constexpr auto K_TABLE_NAME = "stat";
63 static constexpr auto fields() {
64 return std::make_tuple(&Object::m_id, &Object::m_date, &Object::m_status,
67 }
68 static constexpr std::array<const char*, 6> K_FIELD_NAMES{
69 "id", "date", "status", "err_code", "n_RFID", "mqtt_status"};
70};
71
72struct InfoMeta {
74 static constexpr auto K_TABLE_NAME = "info";
75 static constexpr auto fields() {
76 return std::make_tuple(&Object::m_id, &Object::m_date, &Object::m_field,
78 }
79 static constexpr std::array<const char*, 5> K_FIELD_NAMES{
80 "id", "date", "field", "value", "mqtt_status"};
81};
82
83struct ErrorsMeta {
85 static constexpr auto K_TABLE_NAME = "errors";
86 static constexpr auto fields() {
87 return std::make_tuple(&Object::m_id, &Object::m_date, &Object::m_error,
89 }
90 static constexpr std::array<const char*, 5> K_FIELD_NAMES{
91 "id", "date", "error", "value", "mqtt_status"};
92};
93
94struct DictionaryMeta {
96 static constexpr auto K_TABLE_NAME = "dictionary";
97 static constexpr auto fields() {
98 return std::make_tuple(&Object::m_id, &Object::m_area, &Object::m_code,
100 }
101 static constexpr std::array<const char*, 5> K_FIELD_NAMES{
102 "id", "area", "code", "description", "version"};
103};
104
105} // namespace insitech::database::meta
106
107// ===== DATABASE WRAPPER =====
108
109class TestDb : public insitech::database::ThreadSafeDB<
110 insitech::database::meta::StatMeta,
111 insitech::database::meta::InfoMeta,
112 insitech::database::meta::ErrorsMeta,
113 insitech::database::meta::DictionaryMeta> {
114 public:
115 using Base = insitech::database::ThreadSafeDB<
119 explicit TestDb(const std::string& db_path) : Base(db_path) {}
120
127
129 this->write(input);
130 }
131
133 this->write(input);
134 }
135
137 this->write(input);
138 }
139
141 this->write(input);
142 }
143};
144
145// ===== END GENERATED CODE =====
void add_info(const insitech::database::models::Info &input)
Definition test_db.hpp:132
void reset_data_keep_schema() const
Definition test_db.hpp:121
void add_stat(const insitech::database::models::Stat &input)
Definition test_db.hpp:128
void add_dictionary(const insitech::database::models::Dictionary &input)
Definition test_db.hpp:140
void add_errors(const insitech::database::models::Errors &input)
Definition test_db.hpp:136
insitech::database::ThreadSafeDB< insitech::database::meta::StatMeta, insitech::database::meta::InfoMeta, insitech::database::meta::ErrorsMeta, insitech::database::meta::DictionaryMeta > Base
Definition test_db.hpp:115
TestDb(const std::string &db_path)
Definition test_db.hpp:119
static constexpr auto K_TABLE_NAME
Definition AppDb.hpp:98
static constexpr std::array< const char *, 4 > K_FIELD_NAMES
Definition AppDb.hpp:104
static constexpr auto K_TABLE_NAME
Definition AppDb.hpp:87
static constexpr auto fields()
Definition test_db.hpp:86
static constexpr std::array< const char *, 5 > K_FIELD_NAMES
Definition AppDb.hpp:92
static constexpr std::array< const char *, 5 > K_FIELD_NAMES
Definition test_db.hpp:79
static constexpr auto fields()
Definition test_db.hpp:75
static constexpr auto K_TABLE_NAME
Definition test_db.hpp:74
static constexpr auto fields()
Definition test_db.hpp:63
static constexpr std::array< const char *, 5 > K_FIELD_NAMES
Definition AppDb.hpp:70
static constexpr auto K_TABLE_NAME
Definition AppDb.hpp:65
auto operator!=(const Dictionary &other) const -> bool
Definition test_db.hpp:51
auto operator==(const Dictionary &other) const -> bool
Definition test_db.hpp:46