Implement a NOT operator, expressed as "-not".
authorscottmk <scottmk@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 17 Mar 2009 15:36:42 +0000 (15:36 +0000)
committerscottmk <scottmk@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 17 Mar 2009 15:36:42 +0000 (15:36 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@12561 dcc99617-32d9-48b4-a31d-7c20da2025e4

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

index 7275679..90922ee 100644 (file)
@@ -2410,7 +2410,16 @@ static char* searchWHERE ( const jsonObject* search_hash, osrfHash* meta, int op
                                        buffer_free( sql_buf );
                                        return NULL;
                                }
-            } else if ( !strcasecmp("-exists",search_itr->key) ) {
+                       } else if ( !strcasecmp("-not",search_itr->key) ) {
+                               char* subpred = searchWHERE( node, meta, AND_OP_JOIN, ctx );
+                               if( subpred ) {
+                                       buffer_fadd(sql_buf, " NOT ( %s )", subpred);
+                                       free( subpred );
+                               } else {
+                                       buffer_free( sql_buf );
+                                       return NULL;
+                               }
+                       } else if ( !strcasecmp("-exists",search_itr->key) ) {
                 char* subpred = SELECT(
                     ctx,
                     jsonObjectGetKey( node, "select" ),