libdballe  9.11
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 
8 namespace dballe {
9 namespace db {
10 namespace v7 {
11 namespace postgresql {
12 struct DB;
13 
14 template<typename Parent>
15 class PostgreSQLDataCommon : public Parent
16 {
17 protected:
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 
25 public:
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 
39 extern template class PostgreSQLDataCommon<StationData>;
40 extern template class PostgreSQLDataCommon<Data>;
41 
42 
44 {
45 public:
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 {
59 public:
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
Forward declarations for public dballe/sql names.
Database connection.
Definition: postgresql.h:241
Definition: qbuilder.h:124
Definition: qbuilder.h:115
Definition: db/v7/postgresql/data.h:15
Definition: db/v7/postgresql/data.h:57
Definition: cmdline.h:18
Definition: db/v7/postgresql/data.h:43
uint16_t Varcode
Range of datetimes.
Definition: types.h:294
Definition: transaction.h:15
dballe::sql::PostgreSQLConnection & conn
DB connection.
Definition: db/v7/postgresql/data.h:19
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:45
Date and time.
Definition: types.h:164
Definition: types.h:850
Collection of Value objects, indexed by wreport::Varcode.
Definition: values.h:176
Definition: qbuilder.h:91