This commit is contained in:
@@ -8,6 +8,15 @@ namespace AyaNova.PickList
|
|||||||
|
|
||||||
internal static class PickListSqlBuilder
|
internal static class PickListSqlBuilder
|
||||||
{
|
{
|
||||||
|
/*Example
|
||||||
|
select awidget.id as plId, awidget.active as plActive, awidget.name || ' ' || awidget.serial || ' ' || auser.name as plname, awidget.tags
|
||||||
|
from awidget left outer join auser on (awidget.userid=auser.id)
|
||||||
|
where array_to_string(awidget.tags,',') like '%zone-8%'
|
||||||
|
and awidget.active = true
|
||||||
|
and ((awidget.name like '%we%') or (cast (awidget.serial as text) like '%we%') or (auser.name like '%we%'))
|
||||||
|
order by awidget.name,awidget.serial,auser.name limit 100
|
||||||
|
*/
|
||||||
|
|
||||||
//Maximum number of results to return at any given time
|
//Maximum number of results to return at any given time
|
||||||
//did a little research and may adjust this but it can be fairly girthy in this day and age
|
//did a little research and may adjust this but it can be fairly girthy in this day and age
|
||||||
//and many people might not want or need to autocomplete type if we provide enough leeway.
|
//and many people might not want or need to autocomplete type if we provide enough leeway.
|
||||||
@@ -188,32 +197,39 @@ namespace AyaNova.PickList
|
|||||||
if (HasTagSpecificQuery)
|
if (HasTagSpecificQuery)
|
||||||
{
|
{
|
||||||
sb.Append(TagSpecificWhereFragment);
|
sb.Append(TagSpecificWhereFragment);
|
||||||
sb.Append(" and (");
|
sb.Append(" and ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IncludeInactive)
|
if (!IncludeInactive)
|
||||||
{
|
{
|
||||||
sb.Append(ActiveWhereFragment);
|
sb.Append(ActiveWhereFragment);
|
||||||
sb.Append(" and (");
|
sb.Append(" and ");
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (string s in lWhere)
|
if (lWhere.Count > 0)
|
||||||
{
|
{
|
||||||
sb.Append(s);
|
//Put all the regular query terms in parenthesis to ensure it's all treated as one criteria
|
||||||
sb.Append(" or ");
|
|
||||||
}
|
sb.Append("(");
|
||||||
//clear trailing or
|
foreach (string s in lWhere)
|
||||||
sb.Length -= 4;
|
{
|
||||||
//enclosing parenthesis
|
sb.Append(s);
|
||||||
|
sb.Append(" or ");
|
||||||
|
}
|
||||||
|
//clear trailing or
|
||||||
|
|
||||||
|
sb.Length -= 4;
|
||||||
|
//enclosing parenthesis
|
||||||
|
|
||||||
|
|
||||||
if (HasTagSpecificQuery)
|
|
||||||
{
|
|
||||||
sb.Append(")");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!IncludeInactive)
|
|
||||||
{
|
|
||||||
sb.Append(")");
|
sb.Append(")");
|
||||||
|
}else{
|
||||||
|
//we might have a trailing and to remove
|
||||||
|
//jesus this stuff sucks, there must be a better way, it seems so fragile
|
||||||
|
if(!IncludeInactive || HasTagSpecificQuery){
|
||||||
|
//trailing " and " to remove
|
||||||
|
sb.Length-=5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//ORDER BY
|
//ORDER BY
|
||||||
|
|||||||
Reference in New Issue
Block a user