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