1#ifndef DBALLE_DB_V7_BATCH_H
2#define DBALLE_DB_V7_BATCH_H
4#include <dballe/core/smallset.h>
5#include <dballe/db/v7/fwd.h>
6#include <dballe/db/v7/utils.h>
11#include <wreport/var.h>
21 bool write_attrs =
true;
24 bool have_station(
const std::string& report,
const Coords& coords,
26 void new_station(
Tracer<>& trc,
const std::string& report,
31 unsigned count_select_stations = 0;
32 unsigned count_select_station_data = 0;
33 unsigned count_select_data = 0;
35 Batch(
Transaction& transaction) : transaction(transaction) {}
38 void set_write_attrs(
bool write_attrs);
41 bool station_can_add);
47 void dump(FILE* out)
const;
64 StationDatum(
int id,
const wreport::Var* var) : id(
id), var(var) {}
66 void dump(FILE* out)
const;
67 bool operator<(
const StationDatum& o)
const
69 return var->code() < o.var->
code();
71 bool operator==(
const StationDatum& o)
const
73 return var->code() == o.var->
code();
77inline const wreport::Varcode& station_data_ids_get_value(
const IdVarcode& item)
83 station_data_ids_get_value>
90 std::vector<StationDatum> to_insert;
91 std::vector<StationDatum> to_update;
94 void add(
const wreport::Var* var, UpdateMode on_conflict);
101 int id = MISSING_INT;
106 : id_levtr(id_levtr), var(var)
109 MeasuredDatum(
int id,
int id_levtr,
const wreport::Var* var)
110 : id(
id), id_levtr(id_levtr), var(var)
114 void dump(FILE* out)
const;
115 bool operator<(
const MeasuredDatum& o)
const
117 return id_levtr < o.id_levtr ||
118 (id_levtr == o.id_levtr && var->code() < o.var->
code());
120 bool operator==(
const MeasuredDatum& o)
const
122 return id_levtr == o.id_levtr && var->code() == o.var->
code();
131 MeasuredDataID(
IdVarcode id_varcode,
int id)
132 : id_varcode(id_varcode), id(
id)
139 return item.id_varcode;
143 measured_data_ids_get_value>
151 std::vector<MeasuredDatum> to_insert;
152 std::vector<MeasuredDatum> to_update;
154 MeasuredData(
Datetime datetime) : datetime(datetime) {}
156 void add(
int id_levtr,
const wreport::Var* var, UpdateMode on_conflict);
163 return item->datetime;
166struct MeasuredDataVector
168 measured_data_vector_get_value>
170 MeasuredDataVector() {}
171 MeasuredDataVector(
const MeasuredDataVector&) =
delete;
172 MeasuredDataVector(MeasuredDataVector&&) =
default;
173 ~MeasuredDataVector();
174 MeasuredDataVector& operator=(
const MeasuredDataVector&) =
delete;
175 MeasuredDataVector& operator=(MeasuredDataVector&&) =
default;
185 Station(
Batch& batch) : batch(batch) {}
190 void write_pending(
Tracer<>& trc,
bool with_attrs);
191 void dump(FILE* out)
const;
A station identifier, that can be any string (including the empty string) or a missing value.
Definition types.h:751
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition db/v7/fwd.h:45
Coordinates.
Definition types.h:372
Date and time.
Definition types.h:164
Set structure optimized for a small number of items.
Definition smallset.h:21
Definition transaction.h:16
Common base types used by most of DB-All.e code.