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

View File

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