This commit is contained in:
2021-09-02 19:30:03 +00:00
parent 7eaa9e5907
commit 5fd9ccb4ed

View File

@@ -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 '%");