f20f28b07df4e9738560a839a7636a7708d64969
kate
  Mon Oct 31 20:23:33 2011 -0700
Add filtering by assembly
diff --git src/hg/hgApi/hgApi.c src/hg/hgApi/hgApi.c
index 900371d..cfeffb1 100644
--- src/hg/hgApi/hgApi.c
+++ src/hg/hgApi/hgApi.c
@@ -343,30 +343,51 @@
     // e.g. http://genome.ucsc.edu/cgi-bin/hgApi?db=hg18&cmd=encodeExperiments
     struct sqlConnection *connExp = sqlConnect(ENCODE_EXP_DATABASE);
     /* TODO: any need to use connection pool ? */
     struct encodeExp *exp = NULL, *exps = encodeExpLoadAllFromTable(connExp, ENCODE_EXP_TABLE);
     dyStringPrintf(output, "[\n");
     while ((exp = slPopHead(&exps)) != NULL)
         {
         encodeExpJson(output, exp);
         dyStringAppend(output,",\n");
         }
     output->string[dyStringLen(output)-2] = '\n';
     output->string[dyStringLen(output)-1] = ']';
     dyStringPrintf(output, "\n");
     sqlDisconnect(&connExp);
     }
+else if (!strcmp(cmd, "encodeExpId"))
+    {
+    // Return list of ENCODE expID's found in a database 
+    struct sqlResult *sr;
+    char **row;
+    char query[256];
+    struct sqlConnection *conn = hAllocConn(database);
+    safef(query, sizeof(query), "select distinct(%s) from %s where %s='%s' order by (%s + 0)",
+                        MDB_VAL, MDB_DEFAULT_NAME, MDB_VAR, MDB_VAR_ENCODE_EXP_ID, MDB_VAL);
+    sr = sqlGetResult(conn, query);
+    dyStringPrintf(output, "[\n");
+    while ((row = sqlNextRow(sr)) != NULL)
+        {
+        dyStringPrintf(output, "{\"expId\": \"%s\"},\n", row[0]);
+        }
+    output->string[dyStringLen(output)-2] = '\n';
+    output->string[dyStringLen(output)-1] = ']';
+    dyStringPrintf(output, "\n");
+    sqlFreeResult(&sr);
+    hFreeConn(&conn);
+    }
 else if (!strcmp(cmd, "cv"))
     {
     // Return list of CV terms for the specified term type
     // Just supporting cellType, dataType, and antibody initially
     // TODO: retire db=
     // e.g. http://genome.ucsc.edu/cgi-bin/hgApi?db=hg19&cmd=cv&file=cv.ra&type=dataType
     char *type = cgiString("type");
     char *cvFile = cgiOptionalString("file");
     if (cvFile != NULL)
         cvFileDeclare(cvFile);
     if (differentString(type, "dataType") &&
         differentString(type, "cellType") &&
         differentString(type, "antibody"))
             {
             warn("Unsupported CV type %s (must be dataType, cellType, antibody)", type);