This commit is contained in:
@@ -966,9 +966,9 @@ namespace AyaNova.DataList
|
||||
StringBuilder sbTemp = new StringBuilder();
|
||||
sbTemp = sbTemp.Append("ARRAY[");
|
||||
List<string> normalizedTags = TagBiz.NormalizeTags(sValue.Split(',').ToList<string>());
|
||||
if (normalizedTags.Count == 0)
|
||||
if (normalizedTags.Count == 0)
|
||||
throw new System.ArgumentNullException("DataListSqlFilterCriteriaBuilder::TagDataFilterToColumnCriteria - NO tags were provided for filtering");
|
||||
|
||||
|
||||
foreach (string s in normalizedTags)
|
||||
sbTemp.Append($"'{s}',");
|
||||
PostgresTagArrayFragment = sbTemp.ToString().TrimEnd(',');
|
||||
@@ -977,26 +977,12 @@ namespace AyaNova.DataList
|
||||
switch (sOperator)
|
||||
{
|
||||
case DataListFilterComparisonOperator.Equality:
|
||||
{
|
||||
//WHERE ARRAY['green'::varchar(255)] <@ tags and array_length(tags,1) = 1
|
||||
StringBuilder sbTags = new StringBuilder();
|
||||
sbTags.Append("@> array[");
|
||||
//Note: with listOptions change to split filter and view the tags are now in sValue as a string of comma delimited strings so split them out here
|
||||
List<string> normalizedTags = TagBiz.NormalizeTags(sValue.Split(',').ToList<string>());
|
||||
foreach (string s in normalizedTags)
|
||||
{
|
||||
|
||||
sbTags.Append($"'{s}',");
|
||||
}
|
||||
sb.Append(sbTags.ToString().TrimEnd(','));
|
||||
sb.Append("::varchar(255)]");
|
||||
}
|
||||
break;
|
||||
//ARRAY['green'::varchar(255)] <@ tags and array_length(tags,1) = 1
|
||||
return $"{PostgresTagArrayFragment} <@ {SqlColumnNameToFilter} AND ARRAY_LENGTH({SqlColumnNameToFilter},1) = {normalizedTags.Count}";
|
||||
case DataListFilterComparisonOperator.NotEqual:
|
||||
sb.Append("<>'");
|
||||
sb.Append(sValue);
|
||||
sb.Append("'");
|
||||
break;
|
||||
//NOT (ARRAY['green'::varchar(255)] <@ tags and array_length(tags,1) = 1)
|
||||
return $"NOT ({PostgresTagArrayFragment} <@ {SqlColumnNameToFilter} AND ARRAY_LENGTH({SqlColumnNameToFilter},1) = {normalizedTags.Count})";
|
||||
|
||||
|
||||
case DataListFilterComparisonOperator.NotContains:
|
||||
sb.Append("Not Like '%");
|
||||
|
||||
Reference in New Issue
Block a user