33 lines
783 B
C++
33 lines
783 B
C++
|
#include <precomp.h>
|
||
|
|
||
|
#include "queryline.h"
|
||
|
|
||
|
#include <api/api.h>
|
||
|
#include <api/db/metatags.h>
|
||
|
#include <bfc/string/string.h>
|
||
|
#include <bfc/parse/pathparse.h>
|
||
|
|
||
|
QueryLine::QueryLine(const char *query) : autoquery(FALSE), querytext(query), autofield(MT_NAME) {
|
||
|
}
|
||
|
|
||
|
void QueryLine::setQuery(const char *query) {
|
||
|
querytext = query;
|
||
|
String sp = querytext;
|
||
|
if (autoquery && !querytext.isempty()) {
|
||
|
sp = "";
|
||
|
PathParser pp(querytext, " ");
|
||
|
if (pp.getNumStrings() <= 0) return;
|
||
|
for (int i = 0; i < pp.getNumStrings(); i++) {
|
||
|
if (i != 0) sp += " and ";
|
||
|
sp += StringPrintf("(\"%s\" has \"%s\")", autofield.getValue(), pp.enumString(i));
|
||
|
}
|
||
|
}
|
||
|
sqs_setQuery(sp);
|
||
|
}
|
||
|
|
||
|
int QueryLine::setAuto(int bv) {
|
||
|
autoquery = !!bv;
|
||
|
setQuery(querytext);
|
||
|
return 1;
|
||
|
}
|