libdballe  9.11
station.h
1 #ifndef DBALLE_DB_V7_STATION_H
2 #define DBALLE_DB_V7_STATION_H
3 
4 #include <dballe/fwd.h>
5 #include <dballe/core/fwd.h>
6 #include <dballe/sql/fwd.h>
7 #include <dballe/db/v7/fwd.h>
8 #include <dballe/db/v7/cache.h>
9 #include <memory>
10 #include <cstdio>
11 #include <functional>
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 _dump(std::function<void(int, int, const Coords& coords, const char* ident)> out) = 0;
29 
30 public:
32  virtual ~Station();
33 
35  virtual DBStation lookup(Tracer<>& trc, int id_station) = 0;
36 
42  virtual int maybe_get_id(Tracer<>& trc, const dballe::DBStation& st) = 0;
43 
49  virtual int insert_new(Tracer<>& trc, const dballe::DBStation& desc) = 0;
50 
54  virtual void run_station_query(Tracer<>& trc, const v7::StationQueryBuilder& qb, std::function<void(const dballe::DBStation& station)>) = 0;
55 
59  virtual void get_station_vars(Tracer<>& trc, int id_station, std::function<void(std::unique_ptr<wreport::Var>)> dest) = 0;
60 
67  virtual void add_station_vars(Tracer<>& trc, int id_station, DBValues& values) = 0;
68 
72  void dump(FILE* out);
73 };
74 
75 }
76 }
77 }
78 #endif
79 
Definition: qbuilder.h:81
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:368
Definition: cmdline.h:18
Definition: station.h:24
Collection of DBValue objects, indexed by wreport::Varcode.
Definition: values.h:191
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:45
Definition: types.h:850
virtual void get_station_vars(Tracer<> &trc, int id_station, std::function< void(std::unique_ptr< wreport::Var >)> dest)=0
Export station variables.