libdballe 9.6
db/v7/postgresql/data.h
1#ifndef DBALLE_DB_V7_POSTGRESQL_DATA_H
2#define DBALLE_DB_V7_POSTGRESQL_DATA_H
3
4#include <dballe/db/v7/data.h>
5#include <dballe/db/v7/cache.h>
6#include <dballe/sql/fwd.h>
7
8namespace dballe {
9namespace db {
10namespace v7 {
11namespace postgresql {
12struct DB;
13
14template<typename Parent>
15class PostgreSQLDataCommon : public Parent
16{
17protected:
20 std::string select_attrs_query_name;
21 std::string write_attrs_query_name;
22 std::string remove_attrs_query_name;
23 std::string remove_data_query_name;
24
25public:
29 PostgreSQLDataCommon& operator=(const PostgreSQLDataCommon&) = delete;
30
31 void update(Tracer<>& trc, std::vector<typename Parent::BatchValue>& vars, bool with_attrs) override;
32 void read_attrs(Tracer<>& trc, int id_data, std::function<void(std::unique_ptr<wreport::Var>)> dest) override;
33 void write_attrs(Tracer<>& trc, int id_data, const Values& values) override;
34 void remove_all_attrs(Tracer<>& trc, int id_data) override;
35 void remove(Tracer<>& trc, const v7::IdQueryBuilder& qb) override;
36 void remove_by_id(Tracer<>& trc, int id) override;
37};
38
39extern template class PostgreSQLDataCommon<StationData>;
40extern template class PostgreSQLDataCommon<Data>;
41
42
44{
45public:
46 using PostgreSQLDataCommon::PostgreSQLDataCommon;
47
49
50 void query(Tracer<>& trc, int id_station, std::function<void(int id, wreport::Varcode code)> dest) override;
51 void insert(Tracer<>& trc, int id_station, std::vector<batch::StationDatum>& vars, bool with_attrs) override;
52 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;
53 void dump(FILE* out) override;
54 void clear_cache() override {}
55};
56
58{
59public:
60 using PostgreSQLDataCommon::PostgreSQLDataCommon;
61
63
64 void query(Tracer<>& trc, int id_station, const Datetime& datetime, std::function<void(int id, int id_levtr, wreport::Varcode code)> dest) override;
65 void insert(Tracer<>& trc, int id_station, const Datetime& datetime, std::vector<batch::MeasuredDatum>& vars, bool with_attrs) override;
66 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;
67 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;
68 void dump(FILE* out) override;
69 void clear_cache() override {}
70};
71
72}
73}
74}
75}
76#endif
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:46
Definition: db/v7/postgresql/data.h:16
dballe::sql::PostgreSQLConnection & conn
DB connection.
Definition: db/v7/postgresql/data.h:19
Definition: db/v7/postgresql/data.h:58
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 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 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.
Definition: db/v7/postgresql/data.h:44
void dump(FILE *out) override
Dump the entire contents of the table to an output stream.
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 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: postgresql.h:242
uint16_t Varcode
Forward declarations for public dballe/sql names.
Definition: types.h:851
Range of datetimes.
Definition: types.h:295
Date and time.
Definition: types.h:165
Collection of Value objects, indexed by wreport::Varcode.
Definition: values.h:177
Definition: qbuilder.h:92
Definition: qbuilder.h:116
Definition: qbuilder.h:125
Definition: transaction.h:16