libdballe  8.6
transaction.h
1 #ifndef DBALLE_DB_V7_TRANSACTION_H
2 #define DBALLE_DB_V7_TRANSACTION_H
3 
4 #include <dballe/db/db.h>
5 #include <dballe/db/v7/fwd.h>
6 #include <dballe/db/v7/data.h>
7 #include <dballe/db/v7/batch.h>
8 #include <dballe/sql/fwd.h>
9 #include <memory>
10 
11 namespace dballe {
12 namespace db {
13 namespace v7 {
14 
16 {
17 protected:
19  v7::Repinfo* m_repinfo = nullptr;
21  v7::Station* m_station = nullptr;
23  v7::LevTr* m_levtr = nullptr;
27  v7::Data* m_data = nullptr;
28 
29  void add_msg_to_batch(Tracer<>& trc, const Message& message, const dballe::DBImportOptions& opts);
30 
31 public:
32  typedef v7::DB DB;
33 
34  std::shared_ptr<v7::DB> db;
38  bool fired = false;
43 
44  Transaction(std::shared_ptr<v7::DB> db, std::unique_ptr<dballe::sql::Transaction> sql_transaction);
45  Transaction(const Transaction&) = delete;
46  Transaction(Transaction&&) = delete;
47  Transaction& operator=(const Transaction&) = delete;
48  Transaction& operator=(Transaction&&) = delete;
49  ~Transaction();
50 
56  v7::LevTr& levtr();
60  v7::Data& data();
61 
62  void commit() override;
63  void rollback() override;
64  void rollback_nothrow() noexcept override;
65  void clear_cached_state() override;
66 
67  std::unique_ptr<dballe::CursorStation> query_stations(const Query& query);
68  std::unique_ptr<dballe::CursorStationData> query_station_data(const Query& query) override;
69  std::unique_ptr<dballe::CursorData> query_data(const Query& query);
70  std::unique_ptr<dballe::CursorSummary> query_summary(const Query& query);
71  std::unique_ptr<dballe::CursorMessage> query_messages(const Query& query);
72  void attr_query_station(int data_id, std::function<void(std::unique_ptr<wreport::Var>)> dest) override;
73  void attr_query_data(int data_id, std::function<void(std::unique_ptr<wreport::Var>)> dest) override;
74 
75  void insert_station_data(dballe::Data& vals, const dballe::DBInsertOptions& opts=dballe::DBInsertOptions::defaults) override;
76  void insert_data(dballe::Data& vals, const dballe::DBInsertOptions& opts=dballe::DBInsertOptions::defaults) override;
77  void remove_station_data(const Query& query) override;
78  void remove_data(const Query& query) override;
79  void remove_station_data_by_id(int id);
80  void remove_data_by_id(int id);
81  void remove_all() override;
82 
83  void attr_insert_station(int data_id, const Values& attrs) override;
84  void attr_insert_data(int data_id, const Values& attrs) override;
85  void attr_remove_station(int data_id, const db::AttrList& attrs) override;
86  void attr_remove_data(int data_id, const db::AttrList& attrs) override;
87  void import_message(const Message& message, const dballe::DBImportOptions& opts) override;
88  void import_messages(const std::vector<std::shared_ptr<Message>>& msgs, const dballe::DBImportOptions& opts) override;
89  void update_repinfo(const char* repinfo_file, int* added, int* deleted, int* updated) override;
90 
91  static Transaction& downcast(dballe::db::Transaction& transaction);
92 
93  void dump(FILE* out) override;
94 };
95 
97 {
98  using Transaction::Transaction;
99 
100  void commit() override;
101 };
102 
103 }
104 }
105 }
106 #endif
dballe::db::v7::Transaction::attr_remove_data
void attr_remove_data(int data_id, const db::AttrList &attrs) override
Delete attributes from a data value.
dballe::db::v7::Transaction::trc
v7::Tracer< v7::trace::Transaction > trc
Tracing system.
Definition: transaction.h:42
dballe::sql::Transaction
A RAII transaction interface for SQL transactions.
Definition: sql.h:121
dballe::db::v7::Transaction::import_message
void import_message(const Message &message, const dballe::DBImportOptions &opts) override
Import a Message into the DB-All.e database.
dballe::db::v7::Transaction::m_repinfo
v7::Repinfo * m_repinfo
Report information.
Definition: transaction.h:19
dballe::db::v7::Transaction::attr_query_data
void attr_query_data(int data_id, std::function< void(std::unique_ptr< wreport::Var >)> dest) override
Query attributes on a data value.
dballe::db::v7::Data
Definition: db/v7/data.h:155
dballe::db::v7::Transaction::batch
v7::Batch batch
Batch importer.
Definition: transaction.h:40
dballe::db::v7::Station
Definition: station.h:24
dballe::db::v7::Transaction::query_data
std::unique_ptr< dballe::CursorData > query_data(const Query &query)
Query the database.
dballe::db::v7::Transaction::dump
void dump(FILE *out) override
Dump the entire contents of the database to an output stream.
dballe::db::v7::Transaction::remove_data
void remove_data(const Query &query) override
Remove data from the database.
dballe::db::v7::Transaction::insert_station_data
void insert_station_data(dballe::Data &vals, const dballe::DBInsertOptions &opts=dballe::DBInsertOptions::defaults) override
Insert station values into the database.
dballe::db::CursorStationData
Definition: db/db.h:71
dballe::db::CursorSummary
Definition: db/db.h:137
dballe::Message
A bulletin that has been decoded and physically interpreted.
Definition: message.h:28
dballe::db::v7::Transaction::clear_cached_state
void clear_cached_state() override
Clear state information cached during the transaction.
dballe::db::v7::Tracer
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:45
fwd.h
dballe::db::v7::Transaction::repinfo
v7::Repinfo & repinfo()
Access the repinfo table.
dballe::db::v7::Repinfo
Fast cached access to the repinfo table.
Definition: repinfo.h:71
dballe::DBImportOptions
Options controlling how messages are imported in the database.
Definition: db.h:64
dballe::db::v7::Transaction::remove_all
void remove_all() override
Remove all data from the database.
dballe::db::v7::Transaction
Definition: transaction.h:15
dballe::db::v7::Transaction::commit
void commit() override
Commit this transaction.
dballe::db::v7::Transaction::import_messages
void import_messages(const std::vector< std::shared_ptr< Message >> &msgs, const dballe::DBImportOptions &opts) override
Import Messages into the DB-All.e database.
dballe::db::v7::Transaction::query_messages
std::unique_ptr< dballe::CursorMessage > query_messages(const Query &query)
Query the database returning the matching data as Message objects.
dballe::db::v7::Transaction::rollback
void rollback() override
Roll back this transaction.
dballe::db::v7::Transaction::remove_station_data
void remove_station_data(const Query &query) override
Remove data from the database.
dballe::db::v7::Transaction::m_station
v7::Station * m_station
Station information.
Definition: transaction.h:21
dballe::db::v7::Transaction::m_levtr
v7::LevTr * m_levtr
Level/timerange information.
Definition: transaction.h:23
dballe::db::v7::TestTransaction
Definition: transaction.h:96
dballe::db::v7::DB
DB-ALLe database connection for database format V7.
Definition: db/v7/db.h:20
dballe::db::v7::Transaction::m_station_data
v7::StationData * m_station_data
Station data.
Definition: transaction.h:25
db.h
dballe::db::Transaction
Definition: db/db.h:151
dballe::db::v7::Transaction::attr_insert_station
void attr_insert_station(int data_id, const Values &attrs) override
Insert new attributes on a station value.
dballe::db::v7::LevTr
Precompiled queries to manipulate the lev_tr table.
Definition: levtr.h:20
dballe::db::v7::Transaction::attr_insert_data
void attr_insert_data(int data_id, const Values &attrs) override
Insert new attributes on a data value.
dballe::db::CursorData
Definition: db/db.h:104
dballe::db::v7::Transaction::query_station_data
std::unique_ptr< dballe::CursorStationData > query_station_data(const Query &query) override
Query the station variables in the database.
dballe::db::v7::Transaction::m_data
v7::Data * m_data
Variable data.
Definition: transaction.h:27
dballe::db::v7::Transaction::station_data
v7::StationData & station_data()
Access the station_data table.
dballe::Values
Collection of Value objects, indexed by wreport::Varcode.
Definition: values.h:176
dballe::db::v7::Transaction::fired
bool fired
True if commit or rollback have already been called on this transaction.
Definition: transaction.h:38
dballe::DBInsertOptions
Options controlling how values are inserted in the database.
Definition: db.h:122
dballe::db::v7::Transaction::update_repinfo
void update_repinfo(const char *repinfo_file, int *added, int *deleted, int *updated) override
Update the repinfo table in the database, with the data found in the given file.
dballe::db::v7::StationData
Definition: db/v7/data.h:139
dballe::db::v7::Transaction::data
v7::Data & data()
Access the data table.
dballe::db::v7::Transaction::sql_transaction
dballe::sql::Transaction * sql_transaction
SQL-side transaction.
Definition: transaction.h:36
dballe::db::v7::Batch
Definition: batch.h:18
dballe::db::v7::Transaction::query_summary
std::unique_ptr< dballe::CursorSummary > query_summary(const Query &query)
Query a summary of what the result would be for a query.
dballe::db::v7::Transaction::attr_remove_station
void attr_remove_station(int data_id, const db::AttrList &attrs) override
Delete attributes from a station value.
dballe::db::v7::Transaction::query_stations
std::unique_ptr< dballe::CursorStation > query_stations(const Query &query)
Start a query on the station variables archive.
dballe::CursorMessage
Cursor iterating over messages.
Definition: cursor.h:117
dballe::db::CursorStation
Definition: db/db.h:58
dballe::db::v7::Transaction::insert_data
void insert_data(dballe::Data &vals, const dballe::DBInsertOptions &opts=dballe::DBInsertOptions::defaults) override
Insert data values into the database.
dballe::db::v7::Transaction::attr_query_station
void attr_query_station(int data_id, std::function< void(std::unique_ptr< wreport::Var >)> dest) override
Query attributes on a station value.
dballe::Query
Query used to filter DB-All.e data.
Definition: query.h:14
dballe::db::v7::Transaction::rollback_nothrow
void rollback_nothrow() noexcept override
Roll back this transaction.
dballe::db::v7::Transaction::levtr
v7::LevTr & levtr()
Access the levtr table.
dballe::db::v7::Transaction::station
v7::Station & station()
Access the station table.