libdballe  9.14
db/v7/data.h
1 #ifndef DBALLE_DB_V7_DATAV7_H
2 #define DBALLE_DB_V7_DATAV7_H
3 
4 #include <cstdio>
5 #include <dballe/core/defs.h>
6 #include <dballe/core/fwd.h>
7 #include <dballe/db/defs.h>
8 #include <dballe/db/v7/fwd.h>
9 #include <dballe/fwd.h>
10 #include <dballe/sql/fwd.h>
11 #include <dballe/values.h>
12 #include <functional>
13 #include <list>
14 #include <memory>
15 #include <vector>
16 #include <wreport/var.h>
17 
18 namespace dballe {
19 namespace db {
20 namespace v7 {
21 
22 template <typename Traits> class DataCommon
23 {
24 protected:
25  typedef typename Traits::BatchValue BatchValue;
26  static const char* table_name;
27 
28  v7::Transaction& tr;
29 
33  void read_attrs_into_values(Tracer<>& trc, int id_data, Values& values);
34 
39  void read_attrs_into_values(Tracer<>& trc, int id_data, Values& values,
40  const db::AttrList& exclude);
41 
45  virtual void write_attrs(Tracer<>& trc, int id_data,
46  const Values& values) = 0;
47 
51  virtual void remove_all_attrs(Tracer<>& trc, int id_data) = 0;
52 
53 public:
54  DataCommon(v7::Transaction& tr) : tr(tr) {}
55  virtual ~DataCommon() {}
56 
68  virtual void
69  read_attrs(Tracer<>& trc, int id_data,
70  std::function<void(std::unique_ptr<wreport::Var>)> dest) = 0;
71 
80  void merge_attrs(Tracer<>& trc, int id_data, const Values& attrs);
81 
85  void remove_attrs(Tracer<>& trc, int data_id, const db::AttrList& attrs);
86 
88  virtual void update(Tracer<>& trc,
89  std::vector<typename Traits::BatchValue>& vars,
90  bool with_attrs) = 0;
91 
93  virtual void remove(Tracer<>& trc, const v7::IdQueryBuilder& qb) = 0;
94 
96  virtual void remove_by_id(Tracer<>& trc, int id) = 0;
97 
99  virtual void dump(FILE* out) = 0;
100 
101  virtual void clear_cache() = 0;
102 };
103 
105 {
106  unsigned count = 0;
107  FILE* out;
108 
109  StationDataDumper(FILE* out);
110 
111  void print_head();
112  void print_row(int id, int id_station, wreport::Varcode code,
113  const char* val, const std::vector<uint8_t>& attrs);
114  void print_tail();
115 };
116 
118 {
119  unsigned count = 0;
120  FILE* out;
121 
122  DataDumper(FILE* out);
123 
124  void print_head();
125  void print_row(int id, int id_station, int id_levtr, const Datetime& dt,
126  wreport::Varcode code, const char* val,
127  const std::vector<uint8_t>& attrs);
128  void print_tail();
129 };
130 
132 {
134  static const char* table_name;
135 };
136 
138 {
140  static const char* table_name;
141 };
142 
143 extern template class DataCommon<StationDataTraits>;
144 extern template class DataCommon<DataTraits>;
145 
147 {
149 
151  virtual void insert(Tracer<>& trc, int id_station,
152  std::vector<batch::StationDatum>& vars,
153  bool with_attrs) = 0;
154 
156  virtual void
157  query(Tracer<>& trc, int id_station,
158  std::function<void(int id, wreport::Varcode code)> dest) = 0;
159 
163  virtual void run_station_data_query(
164  Tracer<>& trc, const v7::DataQueryBuilder& qb,
165  std::function<void(const dballe::DBStation& station, int id_data,
166  std::unique_ptr<wreport::Var> var)>) = 0;
167 };
168 
170 {
172 
174  virtual void insert(Tracer<>& trc, int id_station, const Datetime& datetime,
175  std::vector<batch::MeasuredDatum>& vars,
176  bool with_attrs) = 0;
177 
179  virtual void
180  query(Tracer<>& trc, int id_station, const Datetime& datetime,
181  std::function<void(int id, int id_levtr, wreport::Varcode code)>
182  dest) = 0;
183 
187  virtual void run_data_query(
188  Tracer<>& trc, const v7::DataQueryBuilder& qb,
189  std::function<void(const dballe::DBStation& station, int id_levtr,
190  const Datetime& datetime, int id_data,
191  std::unique_ptr<wreport::Var> var)>) = 0;
192 
196  virtual void run_summary_query(
197  Tracer<>& trc, const v7::SummaryQueryBuilder& qb,
198  std::function<void(const dballe::DBStation& station, int id_levtr,
199  wreport::Varcode code, const DatetimeRange& datetime,
200  size_t size)>) = 0;
201 };
202 
203 } // namespace v7
204 } // namespace db
205 } // namespace dballe
206 #endif
Forward declarations for public dballe/sql names.
Definition: qbuilder.h:134
virtual void dump(FILE *out)=0
Dump the entire contents of the table to an output stream.
Definition: db/v7/data.h:117
Definition: qbuilder.h:121
void remove_attrs(Tracer<> &trc, int data_id, const db::AttrList &attrs)
Remove the given attributes from the given variable, if they exist.
Definition: db/v7/data.h:22
virtual void remove_all_attrs(Tracer<> &trc, int id_data)=0
Remove all attributes from a variable.
Definition: cmdline.h:18
virtual void read_attrs(Tracer<> &trc, int id_data, std::function< void(std::unique_ptr< wreport::Var >)> dest)=0
Load from the database all the attributes for var.
Range of datetimes.
Definition: types.h:296
virtual void write_attrs(Tracer<> &trc, int id_data, const Values &values)=0
Replace the attributes of a variable with those in Values.
Definition: transaction.h:15
Definition: db/v7/data.h:131
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:44
Definition: db/v7/data.h:146
Date and time.
Definition: types.h:163
virtual void remove_by_id(Tracer<> &trc, int id)=0
Run the query to delete the record with the given ID.
Definition: db/v7/data.h:137
virtual void update(Tracer<> &trc, std::vector< typename Traits::BatchValue > &vars, bool with_attrs)=0
Bulk variable update.
void merge_attrs(Tracer<> &trc, int id_data, const Values &attrs)
Merge the given attributes with the existing attributes of the given variable:
Definition: types.h:939
Common definitions.
Structures used as input to database insert functions.
Definition: db/v7/data.h:104
void read_attrs_into_values(Tracer<> &trc, int id_data, Values &values)
Load attributes from the database into a Values.
Collection of Value objects, indexed by wreport::Varcode.
Definition: values.h:215
Definition: db/v7/data.h:169
Definition: qbuilder.h:95