From: miker Date: Thu, 8 Nov 2007 15:20:48 +0000 (+0000) Subject: teach json_query in cstore about parameterized transforms (at least for output field... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=1d21691c53b8a500b0a173e9cfd6d711b34ec6f5;p=Evergreen.git teach json_query in cstore about parameterized transforms (at least for output field transforms) git-svn-id: svn://svn.open-ils.org/ILS/trunk@8040 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/c-apps/oils_cstore.c b/Open-ILS/src/c-apps/oils_cstore.c index 486c0b6684..dfbbc64315 100644 --- a/Open-ILS/src/c-apps/oils_cstore.c +++ b/Open-ILS/src/c-apps/oils_cstore.c @@ -1140,10 +1140,37 @@ char* searchFieldTransform (const char* class, osrfHash* field, jsonObject* node char* field_transform = jsonObjectToSimpleString( jsonObjectGetKey( node, "transform" ) ); - if (field_transform) - buffer_fadd( sql_buf, "%s(\"%s\".%s)", field_transform, class, osrfHashGet(field, "name")); - else + if (field_transform) { + buffer_fadd( sql_buf, "%s(\"%s\".%s", field_transform, class, osrfHashGet(field, "name")); + jsonObject* array = jsonObjectGetKey( node, "params" ); + + if (array) { + jsonObject* func_item; + while ( (func_item = jsonObjectGetIndex(array, func_item_index++)) ) { + + val = jsonObjectToSimpleString(func_item); + + if ( dbi_conn_quote_string(dbhandle, &val) ) { + buffer_fadd( sql_buf, ",%s", val ); + free(val); + } else { + osrfLogError(OSRF_LOG_MARK, "%s: Error quoting key string [%s]", MODULENAME, val); + free(val); + free(field_transform); + buffer_free(sql_buf); + return NULL; + } + } + + buffer_add( + sql_buf, + " )" + ); + } + + } else { buffer_fadd( sql_buf, "\"%s\".%s", class, osrfHashGet(field, "name")); + } char* pred = buffer_data(sql_buf); buffer_free(sql_buf);