libdballe 9.13
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
16namespace wreport {
17struct Var;
18}
19
20namespace dballe {
21namespace db {
22namespace v7 {
23
24struct Station
25{
26protected:
28 virtual void
29 _dump(std::function<void(int, int, const Coords& coords, const char* ident)>
30 out) = 0;
31
32public:
33 Station(v7::Transaction& tr);
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
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition db/v7/fwd.h:45
Forward declarations for public dballe/sql names.
Coordinates.
Definition types.h:372
Definition types.h:940
Collection of DBValue objects, indexed by wreport::Varcode.
Definition values.h:230
Definition qbuilder.h:83
virtual int insert_new(Tracer<> &trc, const dballe::DBStation &desc)=0
Insert a new station in the database, without checking if it already exists.
virtual int maybe_get_id(Tracer<> &trc, const dballe::DBStation &st)=0
Get the station ID given latitude, longitude and mobile identifier.
virtual void get_station_vars(Tracer<> &trc, int id_station, std::function< void(std::unique_ptr< wreport::Var >)> dest)=0
Export station variables.
virtual void add_station_vars(Tracer<> &trc, int id_station, DBValues &values)=0
Add all station variables (without attributes) to values.
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.
void dump(FILE *out)
Dump the entire contents of the table to an output stream.
virtual DBStation lookup(Tracer<> &trc, int id_station)=0
Lookup station data by ID.
Definition transaction.h:16