libdballe  7.6
qbuilder.h
1 #ifndef DBA_DB_V6_QBUILDER_H
2 #define DBA_DB_V6_QBUILDER_H
3 
4 #include <dballe/db/querybuf.h>
5 #include <dballe/db/sql.h>
6 #include <dballe/db/v6/db.h>
7 #include <dballe/core/query.h>
8 #include <regex.h>
9 
10 namespace dballe {
11 namespace db {
12 namespace v6 {
13 
16 {
17  Connection& conn;
18 
20  DB& db;
21 
28  const char* bind_in_ident = nullptr;
29 
30  bool select_station = false; // ana_id, lat, lon, ident
31 
32  bool select_varinfo = false; // rep_cod, id_ltr, varcode
33 
34  // IdQuery
35  bool select_data_id = false; // id_data
36 
37  // DataQuery
38  bool select_data = false; // datetime, value
39 
40  // SummaryQuery
41  bool select_summary_details = false; // id_data, datetime, datetimemax
42 
45 
48 
51 
54 
56  const unsigned int modifiers;
57 
60 
61 
62  QueryBuilder(DB& db, const core::Query& query, unsigned int modifiers, bool query_station_vars);
63  virtual ~QueryBuilder() {}
64 
65  void build();
66 
67 protected:
68  // Add WHERE conditions
69  bool add_pa_where(const char* tbl);
70  bool add_dt_where(const char* tbl);
71  bool add_ltr_where(const char* tbl);
72  bool add_varcode_where(const char* tbl);
73  bool add_repinfo_where(const char* tbl);
74  bool add_datafilter_where(const char* tbl);
75  bool add_attrfilter_where(const char* tbl);
76 
77  virtual void build_select() = 0;
78  virtual bool build_where() = 0;
79  virtual void build_order_by() = 0;
80 };
81 
83 {
84  StationQueryBuilder(DB& db, const core::Query& query, unsigned int modifiers)
85  : QueryBuilder(db, query, modifiers, false) {}
86 
87  virtual void build_select();
88  virtual bool build_where();
89  virtual void build_order_by();
90 };
91 
93 {
94  DataQueryBuilder(DB& db, const core::Query& query, unsigned int modifiers, bool query_station_vars);
95 
96  virtual void build_select();
97  virtual bool build_where();
98  virtual void build_order_by();
99 };
100 
102 {
103  IdQueryBuilder(DB& db, const core::Query& query, unsigned int modifiers, bool query_station_vars)
104  : DataQueryBuilder(db, query, modifiers, query_station_vars) {}
105 
106  virtual void build_select();
107  virtual void build_order_by();
108 };
109 
111 {
113  : DataQueryBuilder(db, query, modifiers, query_station_vars) {}
114 
115  virtual void build_select();
116  virtual void build_order_by();
117 };
118 
119 }
120 }
121 }
122 
123 #endif
Functions used to connect to DB-All.e and insert, query and delete data.
Definition: qbuilder.h:110
const core::Query & query
Query object.
Definition: qbuilder.h:44
Standard dballe::Query implementation.
Definition: core/query.h:29
Copyright (C) 2008–2010 ARPA-SIM urpsim@smr.arpa.emr.it
Definition: cmdline.h:17
String buffer for composing database queries.
Definition: querybuf.h:37
Definition: qbuilder.h:82
Implementation of an efficient string buffer for composing database queries.
Querybuf sql_where
WHERE part of the SQL query.
Definition: qbuilder.h:53
const char * bind_in_ident
If defined, it need to point to the identifier to be used as the only bound input parameter...
Definition: qbuilder.h:28
bool query_station_vars
True if we are querying station information, rather than measured data.
Definition: qbuilder.h:59
DB & db
Database to operate on.
Definition: qbuilder.h:20
Querybuf sql_from
FROM part of the SQL query.
Definition: qbuilder.h:50
Querybuf sql_query
Dynamically generated SQL query.
Definition: qbuilder.h:47
Build SQL queries for V6 databases.
Definition: qbuilder.h:15
DB-ALLe database connection.
Definition: v6/db.h:87
Definition: qbuilder.h:101
Definition: sql.h:69
const unsigned int modifiers
Modifier flags to enable special query behaviours.
Definition: qbuilder.h:56
Definition: qbuilder.h:92