libdballe 9.13
db/v7/sqlite/data.h
1#ifndef DBALLE_DB_V7_SQLITE_DATA_H
2#define DBALLE_DB_V7_SQLITE_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 sqlite {
12struct DB;
13
14// Partial implementation of the common parts of StationData and Data
15template <typename Parent> class SQLiteDataCommon : public Parent
16{
17protected:
20
33
34public:
36 SQLiteDataCommon(const SQLiteDataCommon&) = delete;
37 SQLiteDataCommon(const SQLiteDataCommon&&) = delete;
38 SQLiteDataCommon& operator=(const SQLiteDataCommon&) = delete;
39 ~SQLiteDataCommon();
40
41 void update(Tracer<>& trc, std::vector<typename Parent::BatchValue>& vars,
42 bool with_attrs) override;
43 void read_attrs(
44 Tracer<>& trc, int id_data,
45 std::function<void(std::unique_ptr<wreport::Var>)> dest) override;
46 void write_attrs(Tracer<>& trc, int id_data, const Values& values) override;
47 void remove_all_attrs(Tracer<>& trc, int id_data) override;
48 void remove(Tracer<>& trc, const v7::IdQueryBuilder& qb) override;
49 void remove_by_id(Tracer<>& trc, int id) override;
50};
51
52extern template class SQLiteDataCommon<StationData>;
53extern template class SQLiteDataCommon<Data>;
54
58class SQLiteStationData : public SQLiteDataCommon<StationData>
59{
60public:
61 using SQLiteDataCommon::SQLiteDataCommon;
62
63 SQLiteStationData(v7::Transaction& tr, dballe::sql::SQLiteConnection& conn);
64
65 void
66 query(Tracer<>& trc, int id_station,
67 std::function<void(int id, wreport::Varcode code)> dest) override;
68 void insert(Tracer<>& trc, int id_station,
69 std::vector<batch::StationDatum>& vars,
70 bool with_attrs) override;
72 Tracer<>& trc, const v7::DataQueryBuilder& qb,
73 std::function<void(const dballe::DBStation& station, int id_data,
74 std::unique_ptr<wreport::Var> var)>) override;
75 void dump(FILE* out) override;
76 void clear_cache() override {}
77};
78
82class SQLiteData : public SQLiteDataCommon<Data>
83{
84public:
85 using SQLiteDataCommon::SQLiteDataCommon;
86
88
89 void query(Tracer<>& trc, int id_station, const Datetime& datetime,
90 std::function<void(int id, int id_levtr, wreport::Varcode code)>
91 dest) override;
92 void insert(Tracer<>& trc, int id_station, const Datetime& datetime,
93 std::vector<batch::MeasuredDatum>& vars,
94 bool with_attrs) override;
96 Tracer<>& trc, const v7::DataQueryBuilder& qb,
97 std::function<void(const dballe::DBStation& station, int id_levtr,
98 const Datetime& datetime, int id_data,
99 std::unique_ptr<wreport::Var> var)>) override;
101 Tracer<>& trc, const v7::SummaryQueryBuilder& qb,
102 std::function<void(const dballe::DBStation& station, int id_levtr,
103 wreport::Varcode code, const DatetimeRange& datetime,
104 size_t size)>) override;
105 void dump(FILE* out) override;
106 void clear_cache() override {}
107};
108
109} // namespace sqlite
110} // namespace v7
111} // namespace db
112} // namespace dballe
113#endif
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition db/v7/fwd.h:45
Definition db/v7/sqlite/data.h:16
dballe::sql::SQLiteStatement * istm
Precompiled insert statement.
Definition db/v7/sqlite/data.h:30
dballe::sql::SQLiteStatement * remove_attrs_stm
Precompiled remove attributes statement.
Definition db/v7/sqlite/data.h:26
dballe::sql::SQLiteStatement * sstm
Precompiled select statement.
Definition db/v7/sqlite/data.h:28
dballe::sql::SQLiteStatement * read_attrs_stm
Precompiled read attributes statement.
Definition db/v7/sqlite/data.h:22
dballe::sql::SQLiteStatement * write_attrs_stm
Precompiled write attributes statement.
Definition db/v7/sqlite/data.h:24
dballe::sql::SQLiteStatement * ustm
Precompiled update statement.
Definition db/v7/sqlite/data.h:32
dballe::sql::SQLiteConnection & conn
DB connection.
Definition db/v7/sqlite/data.h:19
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 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 insert(Tracer<> &trc, int id_station, const Datetime &datetime, std::vector< batch::MeasuredDatum > &vars, bool with_attrs) override
Bulk variable insert.
void dump(FILE *out) override
Dump the entire contents of the table to an output stream.
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.
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.
Database connection.
Definition sqlite.h:36
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
SQLite statement.
Definition sqlite.h:120