static char* searchFieldTransform ( const char*, osrfHash*, const jsonObject* );
static char* searchFieldTransformPredicate ( const ClassInfo*, osrfHash*, const jsonObject*,
const char* );
+static char* searchBETWEENRange( osrfHash* field, const jsonObject* node );
static char* searchBETWEENPredicate ( const char*, osrfHash*, const jsonObject* );
static char* searchINPredicate ( const char*, osrfHash*,
jsonObject*, const char*, osrfMethodContext* );
}
extra_parens = 1;
} else if( value_obj->type == JSON_ARRAY ) {
- value = searchValueTransform( value_obj );
+ if ( !strcmp("between",op)) { // special case, for transforming the field and passing start/end to BETWEEN
+ value = searchBETWEENRange( field, value_obj );
+ } else {
+ value = searchValueTransform( value_obj );
+ }
if( !value ) {
osrfLogError( OSRF_LOG_MARK,
"%s: Error building value transform for field transform", modulename );
return pred;
}
-static char* searchBETWEENPredicate( const char* class_alias,
- osrfHash* field, const jsonObject* node ) {
+static char* searchBETWEENRange( osrfHash* field, const jsonObject* node ) {
const jsonObject* x_node = jsonObjectGetIndex( node, 0 );
const jsonObject* y_node = jsonObjectGetIndex( node, 1 );
}
growing_buffer* sql_buf = buffer_init( 32 );
- buffer_fadd( sql_buf, "\"%s\".%s BETWEEN %s AND %s",
- class_alias, osrfHashGet( field, "name" ), x_string, y_string );
+ buffer_fadd( sql_buf, "BETWEEN %s AND %s", x_string, y_string );
free( x_string );
free( y_string );
return buffer_release( sql_buf );
}
+static char* searchBETWEENPredicate( const char* class_alias,
+ osrfHash* field, const jsonObject* node ) {
+
+ char* between_range = searchBETWEENRange(field, node)
+
+ if( NULL == between_range )
+ return NULL;
+
+ growing_buffer* sql_buf = buffer_init( 32 );
+ buffer_fadd( sql_buf, "\"%s\".%s %s",
+ class_alias, osrfHashGet( field, "name" ), between_range);
+
+ return buffer_release( sql_buf );
+}
+
static char* searchPredicate( const ClassInfo* class_info, osrfHash* field,
jsonObject* node, osrfMethodContext* ctx ) {