- //z_searchRequest->databaseNames = (char**)
- // odr_malloc(m_s2z_odr_search, sizeof(char *));
- //z_searchRequest->databaseNames[0] = odr_strdup(m_s2z_odr_search,
-
- // TODO query transformation
- Z_Query *query = (Z_Query *) odr_malloc(odr_en, sizeof(Z_Query));
- z_searchRequest->query = query;
-
-// if (srw_req->query_type == Z_SRW_query_type_cql)
-// {
-// Z_External *ext = (Z_External *)
-// odr_malloc(m_s2z_odr_search, sizeof(*ext));
-// ext->direct_reference =
-// odr_getoidbystr(m_s2z_odr_search, "1.2.840.10003.16.2");
-// ext->indirect_reference = 0;
-// ext->descriptor = 0;
-// ext->which = Z_External_CQL;
-// ext->u.cql = srw_req->query.cql;
-
-// query->which = Z_Query_type_104;
-// query->u.type_104 = ext;
-// }
-// else if (srw_req->query_type == Z_SRW_query_type_pqf)
-// Z_RPNQuery *RPNquery;
-// YAZ_PQF_Parser pqf_parser;
-
-// pqf_parser = yaz_pqf_create ();
-
-// RPNquery = yaz_pqf_parse (pqf_parser, m_s2z_odr_search,
-// srw_req->query.pqf);
-// if (!RPNquery)
-// {
-// const char *pqf_msg;
-// size_t off;
-// int code = yaz_pqf_error (pqf_parser, &pqf_msg, &off);
-// int ioff = off;
-// yaz_log(YLOG_LOG, "%*s^\n", ioff+4, "");
-// yaz_log(YLOG_LOG, "Bad PQF: %s (code %d)\n", pqf_msg, code);
-
-// send_to_srw_client_error(10, 0);
-// return;
-// }
-// query->which = Z_Query_type_1;
-// query->u.type_1 = RPNquery;
-
-// yaz_pqf_destroy (pqf_parser);
-// }
-// else
-// {
-// send_to_srw_client_error(7, "query");
-// return;
-// }
+ z_searchRequest->databaseNames = (char**)
+ odr_malloc(odr_en, sizeof(char *));
+ z_searchRequest->databaseNames[0] = odr_strdup(odr_en, database.c_str());
+
+ // TODO query repackaging
+ Z_Query *z_query = (Z_Query *) odr_malloc(odr_en, sizeof(Z_Query));
+ z_searchRequest->query = z_query;
+
+
+ if (!z3950_build_query(odr_en, z_query, query, query_type))
+ {
+ //send_to_srw_client_error(7, "query");
+ return false;
+ }