libdballe 9.13
db/v7/mysql/data.h
1#ifndef DBALLE_DB_V7_MYSQL_DATA_H
2#define DBALLE_DB_V7_MYSQL_DATA_H
3
4#include <dballe/db/v7/cache.h>
5#include <dballe/db/v7/data.h>
6#include <dballe/sql/fwd.h>
7
8namespace dballe {
9namespace db {
10namespace v7 {
11namespace mysql {
12struct DB;
13
14template <typename Parent> class MySQLDataCommon : public Parent
15{
16protected:
19
20#if 0
22 dballe::sql::MySQLStatement* read_attrs_stm = nullptr;
24 dballe::sql::MySQLStatement* write_attrs_stm = nullptr;
26 dballe::sql::MySQLStatement* remove_attrs_stm = nullptr;
28 dballe::sql::MySQLStatement* sstm = nullptr;
30 dballe::sql::MySQLStatement* istm = nullptr;
32 dballe::sql::MySQLStatement* ustm = nullptr;
33#endif
34
35public:
37 MySQLDataCommon(const MySQLDataCommon&) = delete;
38 MySQLDataCommon(const MySQLDataCommon&&) = delete;
39 MySQLDataCommon& operator=(const MySQLDataCommon&) = delete;
40 ~MySQLDataCommon();
41
42 void update(Tracer<>& trc, std::vector<typename Parent::BatchValue>& vars,
43 bool with_attrs) override;
44 void read_attrs(
45 Tracer<>& trc, int id_data,
46 std::function<void(std::unique_ptr<wreport::Var>)> dest) override;
47 void write_attrs(Tracer<>& trc, int id_data, const Values& values) override;
48 void remove_all_attrs(Tracer<>& trc, int id_data) override;
49 void remove(Tracer<>& trc, const v7::IdQueryBuilder& qb) override;
50 void remove_by_id(Tracer<>& trc, int id) override;
51};
52
53extern template class MySQLDataCommon<StationData>;
54extern template class MySQLDataCommon<Data>;
55
59class MySQLStationData : public MySQLDataCommon<StationData>
60{
61public:
62 using MySQLDataCommon::MySQLDataCommon;
63
65
66 void
67 query(Tracer<>& trc, int id_station,
68 std::function<void(int id, wreport::Varcode code)> dest) override;
69 void insert(Tracer<>& trc, int id_station,
70 std::vector<batch::StationDatum>& vars,
71 bool with_attrs) override;
73 Tracer<>& trc, const v7::DataQueryBuilder& qb,
74 std::function<void(const dballe::DBStation& station, int id_data,
75 std::unique_ptr<wreport::Var> var)>) override;
76 void dump(FILE* out) override;
77 void clear_cache() override {}
78};
79
83class MySQLData : public MySQLDataCommon<Data>
84{
85public:
86 using MySQLDataCommon::MySQLDataCommon;
87
89
90 void query(Tracer<>& trc, int id_station, const Datetime& datetime,
91 std::function<void(int id, int id_levtr, wreport::Varcode code)>
92 dest) override;
93 void insert(Tracer<>& trc, int id_station, const Datetime& datetime,
94 std::vector<batch::MeasuredDatum>& vars,
95 bool with_attrs) override;
97 Tracer<>& trc, const v7::DataQueryBuilder& qb,
98 std::function<void(const dballe::DBStation& station, int id_levtr,
99 const Datetime& datetime, int id_data,
100 std::unique_ptr<wreport::Var> var)>) override;
102 Tracer<>& trc, const v7::SummaryQueryBuilder& qb,
103 std::function<void(const dballe::DBStation& station, int id_levtr,
104 wreport::Varcode code, const DatetimeRange& datetime,
105 size_t size)>) override;
106 void dump(FILE* out) override;
107 void clear_cache() override {}
108};
109
110} // namespace mysql
111} // namespace v7
112} // namespace db
113} // namespace dballe
114#endif
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition db/v7/fwd.h:45
Definition db/v7/mysql/data.h:15
dballe::sql::MySQLConnection & conn
DB connection.
Definition db/v7/mysql/data.h:18
void run_summary_query(Tracer<> &trc, const v7::SummaryQueryBuilder &qb, std::function< void(const dballe::DBStation &station, int id_levtr, wreport::Varcode code, const DatetimeRange &datetime, size_t size)>) override
Run a summary query, iterating on the resulting variables.
void query(Tracer<> &trc, int id_station, const Datetime &datetime, std::function< void(int id, int id_levtr, wreport::Varcode code)> dest) override
Query contents of the data table.
void run_data_query(Tracer<> &trc, const v7::DataQueryBuilder &qb, std::function< void(const dballe::DBStation &station, int id_levtr, const Datetime &datetime, int id_data, std::unique_ptr< wreport::Var > var)>) override
Run a data query, iterating on the resulting variables.
void dump(FILE *out) override
Dump the entire contents of the table to an output stream.
void insert(Tracer<> &trc, int id_station, const Datetime &datetime, std::vector< batch::MeasuredDatum > &vars, bool with_attrs) override
Bulk variable insert.
void insert(Tracer<> &trc, int id_station, std::vector< batch::StationDatum > &vars, bool with_attrs) override
Bulk variable insert.
void query(Tracer<> &trc, int id_station, std::function< void(int id, wreport::Varcode code)> dest) override
Query contents of the data table.
void dump(FILE *out) override
Dump the entire contents of the table to an output stream.
void run_station_data_query(Tracer<> &trc, const v7::DataQueryBuilder &qb, std::function< void(const dballe::DBStation &station, int id_data, std::unique_ptr< wreport::Var > var)>) override
Run a station data query, iterating on the resulting variables.
Database connection.
Definition mysql.h:141
Forward declarations for public dballe/sql names.
Definition types.h:940
Range of datetimes.
Definition types.h:297
Date and time.
Definition types.h:164
Collection of Value objects, indexed by wreport::Varcode.
Definition values.h:216
Definition qbuilder.h:96
Definition qbuilder.h:122
Definition qbuilder.h:135
Definition transaction.h:16