Skip to content

Commit c080193

Browse files
committed
Use an std::map to convert queryable to column name for sql converter
Signed-off-by: Kunlin Yu <yukunlin@syriusrobotics.com>
1 parent 7331c03 commit c080193

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

include/cql2cpp/sql_converter.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,12 @@ class SqlConverter {
2424
private:
2525
std::map<NodeType, std::map<Operator, NodeConv>> converters;
2626
mutable std::string error_msg_;
27+
std::map<std::string, std::string> queryable_column_;
2728

2829
public:
29-
SqlConverter() {
30+
SqlConverter() : SqlConverter(std::map<std::string, std::string>()) {}
31+
SqlConverter(const std::map<std::string, std::string>& queryable_column)
32+
: queryable_column_(queryable_column) {
3033
converters[BoolExpr][And] = [](auto n, auto c) -> std::string {
3134
return c.at(0) + " AND " + c.at(1);
3235
};
@@ -124,14 +127,19 @@ class SqlConverter {
124127
}
125128
};
126129

127-
converters[PropertyName][NullOp] = [](auto n, auto c) -> std::string {
130+
converters[PropertyName][NullOp] = [this](auto n, auto c) -> std::string {
128131
// TODO: this is database related. We should add an option for dialects
129132
// sqlite: "" / []
130133
// Oracle: ""
131134
// PostgreSQL: ""
132135
// MySQL: ``
133136
// SQL Server: []
134-
return "\"" + std::get<std::string>(n->origin_value()) + "\"";
137+
138+
std::string property_name = std::get<std::string>(n->origin_value());
139+
std::string column_name = property_name;
140+
if (queryable_column_.find(property_name) != queryable_column_.end())
141+
column_name = queryable_column_[property_name];
142+
return "\"" + column_name + "\"";
135143
};
136144
converters[SpatialPred][S_Contains] = [](auto n, auto c) -> std::string {
137145
return "ST_Contains(" + c.at(0) + "," + c.at(1) + ")";

0 commit comments

Comments
 (0)