This commit is contained in:
@@ -966,9 +966,9 @@ namespace AyaNova.DataList
|
|||||||
StringBuilder sbTemp = new StringBuilder();
|
StringBuilder sbTemp = new StringBuilder();
|
||||||
sbTemp = sbTemp.Append("ARRAY[");
|
sbTemp = sbTemp.Append("ARRAY[");
|
||||||
List<string> normalizedTags = TagBiz.NormalizeTags(sValue.Split(',').ToList<string>());
|
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");
|
throw new System.ArgumentNullException("DataListSqlFilterCriteriaBuilder::TagDataFilterToColumnCriteria - NO tags were provided for filtering");
|
||||||
|
|
||||||
foreach (string s in normalizedTags)
|
foreach (string s in normalizedTags)
|
||||||
sbTemp.Append($"'{s}',");
|
sbTemp.Append($"'{s}',");
|
||||||
PostgresTagArrayFragment = sbTemp.ToString().TrimEnd(',');
|
PostgresTagArrayFragment = sbTemp.ToString().TrimEnd(',');
|
||||||
@@ -977,26 +977,12 @@ namespace AyaNova.DataList
|
|||||||
switch (sOperator)
|
switch (sOperator)
|
||||||
{
|
{
|
||||||
case DataListFilterComparisonOperator.Equality:
|
case DataListFilterComparisonOperator.Equality:
|
||||||
{
|
//ARRAY['green'::varchar(255)] <@ tags and array_length(tags,1) = 1
|
||||||
//WHERE ARRAY['green'::varchar(255)] <@ tags and array_length(tags,1) = 1
|
return $"{PostgresTagArrayFragment} <@ {SqlColumnNameToFilter} AND ARRAY_LENGTH({SqlColumnNameToFilter},1) = {normalizedTags.Count}";
|
||||||
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;
|
|
||||||
case DataListFilterComparisonOperator.NotEqual:
|
case DataListFilterComparisonOperator.NotEqual:
|
||||||
sb.Append("<>'");
|
//NOT (ARRAY['green'::varchar(255)] <@ tags and array_length(tags,1) = 1)
|
||||||
sb.Append(sValue);
|
return $"NOT ({PostgresTagArrayFragment} <@ {SqlColumnNameToFilter} AND ARRAY_LENGTH({SqlColumnNameToFilter},1) = {normalizedTags.Count})";
|
||||||
sb.Append("'");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DataListFilterComparisonOperator.NotContains:
|
case DataListFilterComparisonOperator.NotContains:
|
||||||
sb.Append("Not Like '%");
|
sb.Append("Not Like '%");
|
||||||
|
|||||||
Reference in New Issue
Block a user