libdballe  9.14
station.h
1 #ifndef DBALLE_DB_V7_STATION_H
2 #define DBALLE_DB_V7_STATION_H
3 
4 #include <cstdio>
5 #include <dballe/core/fwd.h>
6 #include <dballe/db/v7/cache.h>
7 #include <dballe/db/v7/fwd.h>
8 #include <dballe/fwd.h>
9 #include <dballe/sql/fwd.h>
10 #include <functional>
11 #include <memory>
12 #include <unordered_map>
13 #include <unordered_set>
14 #include <vector>
15 
16 namespace wreport {
17 struct Var;
18 }
19 
20 namespace dballe {
21 namespace db {
22 namespace v7 {
23 
24 struct Station
25 {
26 protected:
27  v7::Transaction& tr;
28  virtual void
29  _dump(std::function<void(int, int, const Coords& coords, const char* ident)>
30  out) = 0;
31 
32 public:
34  virtual ~Station();
35 
37  virtual DBStation lookup(Tracer<>& trc, int id_station) = 0;
38 
44  virtual int maybe_get_id(Tracer<>& trc, const dballe::DBStation& st) = 0;
45 
52  virtual int insert_new(Tracer<>& trc, const dballe::DBStation& desc) = 0;
53 
57  virtual void run_station_query(
58  Tracer<>& trc, const v7::StationQueryBuilder& qb,
59  std::function<void(const dballe::DBStation& station)>) = 0;
60 
64  virtual void get_station_vars(
65  Tracer<>& trc, int id_station,
66  std::function<void(std::unique_ptr<wreport::Var>)> dest) = 0;
67 
74  virtual void add_station_vars(Tracer<>& trc, int id_station,
75  DBValues& values) = 0;
76 
80  void dump(FILE* out);
81 };
82 
83 } // namespace v7
84 } // namespace db
85 } // namespace dballe
86 #endif
Definition: qbuilder.h:82
virtual DBStation lookup(Tracer<> &trc, int id_station)=0
Lookup station data by ID.
Forward declarations for public dballe/sql names.
virtual void run_station_query(Tracer<> &trc, const v7::StationQueryBuilder &qb, std::function< void(const dballe::DBStation &station)>)=0
Run a station query, iterating on the resulting stations.
Coordinates.
Definition: types.h:371
Definition: cmdline.h:18
Definition: station.h:24
Collection of DBValue objects, indexed by wreport::Varcode.
Definition: values.h:229
virtual int maybe_get_id(Tracer<> &trc, const dballe::DBStation &st)=0
Get the station ID given latitude, longitude and mobile identifier.
virtual void add_station_vars(Tracer<> &trc, int id_station, DBValues &values)=0
Add all station variables (without attributes) to values.
void dump(FILE *out)
Dump the entire contents of the table to an output stream.
virtual int insert_new(Tracer<> &trc, const dballe::DBStation &desc)=0
Insert a new station in the database, without checking if it already exists.
Definition: transaction.h:15
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:44
Definition: types.h:939
virtual void get_station_vars(Tracer<> &trc, int id_station, std::function< void(std::unique_ptr< wreport::Var >)> dest)=0
Export station variables.