Skip to content

Commit 8de6482

Browse files
committed
Fix for issue #85. Modified Postgrest.Table<TModel>.GenerateUrl() to produce a single order query parameter with comma-separated expressions for each chained .Order() method rather than producing a separate order query parameter for each.
1 parent 20240e6 commit 8de6482

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

Postgrest/Table.cs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -655,18 +655,26 @@ public string GenerateUrl()
655655
foreach (var parsedFilter in _filters.Select(PrepareFilter))
656656
query.Add(parsedFilter.Key, parsedFilter.Value);
657657

658-
foreach (var orderer in _orderers)
658+
if (_orderers.Count > 0)
659659
{
660-
var nullPosAttr = orderer.NullPosition.GetAttribute<MapToAttribute>();
661-
var orderingAttr = orderer.Ordering.GetAttribute<MapToAttribute>();
660+
var order = new StringBuilder();
662661

663-
if (nullPosAttr == null || orderingAttr == null) continue;
662+
foreach (var orderer in _orderers)
663+
{
664+
var nullPosAttr = orderer.NullPosition.GetAttribute<MapToAttribute>();
665+
var orderingAttr = orderer.Ordering.GetAttribute<MapToAttribute>();
664666

665-
var key = !string.IsNullOrEmpty(orderer.ForeignTable) ? $"{orderer.ForeignTable}.order" : "order";
666-
query.Add(key, $"{orderer.Column}.{orderingAttr.Mapping}.{nullPosAttr.Mapping}");
667-
}
667+
if (nullPosAttr == null || orderingAttr == null) continue;
668+
669+
if (order.Length > 0)
670+
order.Append(",");
671+
order.Append($"{(!string.IsNullOrEmpty(orderer.ForeignTable) ? orderer.ForeignTable + "(" + orderer.Column + ")" : orderer.Column)}.{orderingAttr.Mapping}.{nullPosAttr.Mapping}");
672+
}
673+
674+
query.Add("order", order.ToString());
675+
}
668676

669-
if (!string.IsNullOrEmpty(_columnQuery))
677+
if (!string.IsNullOrEmpty(_columnQuery))
670678
query["select"] = Regex.Replace(_columnQuery!, @"\s", "");
671679

672680
if (_references.Count > 0)

0 commit comments

Comments
 (0)