libdballe  9.14
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/cache.h>
5 #include <dballe/db/v7/data.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> class PostgreSQLDataCommon : public Parent
15 {
16 protected:
19  std::string select_attrs_query_name;
20  std::string write_attrs_query_name;
21  std::string remove_attrs_query_name;
22  std::string remove_data_query_name;
23 
24 public:
29  PostgreSQLDataCommon& operator=(const PostgreSQLDataCommon&) = delete;
30 
31  void update(Tracer<>& trc, std::vector<typename Parent::BatchValue>& vars,
32  bool with_attrs) override;
33  void read_attrs(
34  Tracer<>& trc, int id_data,
35  std::function<void(std::unique_ptr<wreport::Var>)> dest) override;
36  void write_attrs(Tracer<>& trc, int id_data, const Values& values) override;
37  void remove_all_attrs(Tracer<>& trc, int id_data) override;
38  void remove(Tracer<>& trc, const v7::IdQueryBuilder& qb) override;
39  void remove_by_id(Tracer<>& trc, int id) override;
40 };
41 
42 extern template class PostgreSQLDataCommon<StationData>;
43 extern template class PostgreSQLDataCommon<Data>;
44 
46 {
47 public:
48  using PostgreSQLDataCommon::PostgreSQLDataCommon;
49 
52 
53  void
54  query(Tracer<>& trc, int id_station,
55  std::function<void(int id, wreport::Varcode code)> dest) override;
56  void insert(Tracer<>& trc, int id_station,
57  std::vector<batch::StationDatum>& vars,
58  bool with_attrs) override;
59  void run_station_data_query(
60  Tracer<>& trc, const v7::DataQueryBuilder& qb,
61  std::function<void(const dballe::DBStation& station, int id_data,
62  std::unique_ptr<wreport::Var> var)>) override;
63  void dump(FILE* out) override;
64  void clear_cache() override {}
65 };
66 
68 {
69 public:
70  using PostgreSQLDataCommon::PostgreSQLDataCommon;
71 
74 
75  void query(Tracer<>& trc, int id_station, const Datetime& datetime,
76  std::function<void(int id, int id_levtr, wreport::Varcode code)>
77  dest) override;
78  void insert(Tracer<>& trc, int id_station, const Datetime& datetime,
79  std::vector<batch::MeasuredDatum>& vars,
80  bool with_attrs) override;
81  void run_data_query(
82  Tracer<>& trc, const v7::DataQueryBuilder& qb,
83  std::function<void(const dballe::DBStation& station, int id_levtr,
84  const Datetime& datetime, int id_data,
85  std::unique_ptr<wreport::Var> var)>) override;
86  void run_summary_query(
87  Tracer<>& trc, const v7::SummaryQueryBuilder& qb,
88  std::function<void(const dballe::DBStation& station, int id_levtr,
89  wreport::Varcode code, const DatetimeRange& datetime,
90  size_t size)>) override;
91  void dump(FILE* out) override;
92  void clear_cache() override {}
93 };
94 
95 } // namespace postgresql
96 } // namespace v7
97 } // namespace db
98 } // namespace dballe
99 #endif
Forward declarations for public dballe/sql names.
Database connection.
Definition: postgresql.h:239
Definition: qbuilder.h:134
Definition: qbuilder.h:121
Definition: db/v7/postgresql/data.h:14
Definition: db/v7/postgresql/data.h:67
Definition: cmdline.h:18
Definition: db/v7/postgresql/data.h:45
Range of datetimes.
Definition: types.h:296
Definition: transaction.h:15
dballe::sql::PostgreSQLConnection & conn
DB connection.
Definition: db/v7/postgresql/data.h:18
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:44
Date and time.
Definition: types.h:163
Definition: types.h:939
Collection of Value objects, indexed by wreport::Varcode.
Definition: values.h:215
Definition: qbuilder.h:95