src/hg/inc/metaTbl.h 1.3

1.3 2010/03/19 17:34:42 tdreszer
The most useful query yet: all objs that contain every var=val pair provided.
Index: src/hg/inc/metaTbl.h
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/inc/metaTbl.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -b -B -U 4 -r1.2 -r1.3
--- src/hg/inc/metaTbl.h	18 Mar 2010 23:36:18 -0000	1.2
+++ src/hg/inc/metaTbl.h	19 Mar 2010 17:34:42 -0000	1.3
@@ -153,8 +153,9 @@
     struct metaLimbVal* vals; // list of values associated with this var
     struct hash* valHash;     // if NOT NULL: hash of vals  (val str to limbVal struct)
     };
 
+// -------------- Enum to Strings --------------
 enum metaObjType metaObjTypeStringToEnum(char *objType);
 // Convert metadata objType string to enum
 
 char *metaObjTypeEnumToString(enum metaObjType objType);
@@ -166,8 +167,9 @@
 char *metaVarTypeEnumToString(enum metaVarType varType);
 // Convert metadata varType enum string
 
 
+// ------ Loading files and parsing lines ------
 struct metaObj *metadataLineParse(char *line);
 /* Parses a single formatted metadata line into metaObj for updates or queries. */
 
 struct metaObj *metaObjCreate(char *obj,char *type,char *var, char *varType,char *val);
@@ -178,19 +180,21 @@
 
 struct metaByVar*metaByVarCreate(char *var, char *varType,char *val);
 /* Creates a singular var=val pair struct for metadata queries. */
 
-
 struct metaObj *metaObjsLoadFromFormattedFile(char *fileName);
 // Load all metaObjs from a file containing metadata formatted lines
 
+
+// -------------- Updating the DB --------------
 int metaObjsSetToDb(struct sqlConnection *conn,char *tableName,struct metaObj *metaObjs,boolean replace);
 // Adds or updates metadata obj/var pairs into the named table.  Returns total rows affected
 
 
+// ------------------ Querys -------------------
 struct metaObj *metaObjQuery(struct sqlConnection *conn,char *table,struct metaObj *metaObj);
 // Query the metadata table by obj and optional vars and vals in metaObj struct.  If metaObj is NULL query all.
-// Retruns new metaObj struct fully populated and sorted in obj,var order.
+// Returns new metaObj struct fully populated and sorted in obj,var order.
 #define metaObjsQueryAll(conn,table) metaObjQuery((conn),(table),NULL)
 
 struct metaObj *metaObjQueryByObj(struct sqlConnection *conn,char *table,char *objName,char *varName);
 // Query a single metadata object and optional var from a table (default metaTbl).
@@ -194,31 +198,36 @@
 
 struct metaObj *metaObjQueryByObj(struct sqlConnection *conn,char *table,char *objName,char *varName);
 // Query a single metadata object and optional var from a table (default metaTbl).
 
-
 struct metaByVar *metaByVarsQuery(struct sqlConnection *conn,char *table,struct metaByVar *metaByVars);
-// Query the metadata table by vars and vals in metaByVar struct.  If metaByVar is NULL query all.
-// Retruns new metaByVar struct fully populated and sorted in var,val,obj order.
+// Query the metadata table by one or more var=val pairs to find the distinct set of objs that satisfy ANY conditions.
+// Returns new metaByVar struct fully populated and sorted in var,val,obj order.
 #define metaByVarsQueryAll(conn,table) metaByVarsQuery((conn),(table),NULL)
 
 struct metaByVar *metaByVarQueryByVar(struct sqlConnection *conn,char *table,char *varName,char *val);
 // Query a single metadata variable and optional val from a table (default metaTbl) for searching val->obj.
 
+struct metaObj *metaObjsQueryByVars(struct sqlConnection *conn,char *table,struct metaByVar *metaByVars);
+// Query the metadata table by one or more var=val pairs to find the distinct set of objs that satisfy ALL conditions.
+// Returns new metaObj struct fully populated and sorted in obj,var order.
+
 
+// ----------- Printing and Counting -----------
 void metaObjPrint(struct metaObj *metaObjs,boolean printLong);
 // prints objs and var=val pairs as formatted metadata lines or long view
 
 void metaByVarPrint(struct metaByVar *metaByVars,boolean printLong);
 // prints var=val pairs and objs that go with them single lines or long view
 
-int metaObjCount(struct metaObj *metaObjs);
+int metaObjCount(struct metaObj *metaObjs, boolean objs);
 // returns the count of vars belonging to this obj or objs;
 
-int metaByVarCount(struct metaByVar *metaByVars);
+int metaByVarCount(struct metaByVar *metaByVars,boolean vars, boolean vals);
 // returns the count of objs belonging to this set of vars;
 
 
+// --------------- Free at last ----------------
 void metaObjsFree(struct metaObj **metaObjsPtr);
 // Frees one or more metadata objects and any contained metaVars.  Will free any hashes as well.
 
 void metaByVarsFree(struct metaByVar **metaByVarsPtr);