teach json_query in cstore about parameterized transforms (at least for output field...
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 8 Nov 2007 15:20:48 +0000 (15:20 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 8 Nov 2007 15:20:48 +0000 (15:20 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@8040 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/c-apps/oils_cstore.c

index 486c0b6..dfbbc64 100644 (file)
@@ -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);