aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs
diff options
context:
space:
mode:
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs
new file mode 100644
index 0000000..bd4f300
--- /dev/null
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs
@@ -0,0 +1,41 @@
+namespace CrupestApi.Commons.Crud;
+
+public class OrderByItem
+{
+ public OrderByItem(string columnName, bool isAscending)
+ {
+ ColumnName = columnName;
+ IsAscending = isAscending;
+ }
+
+ public string ColumnName { get; }
+ public bool IsAscending { get; }
+
+ public string GenerateSql()
+ {
+ return $"{ColumnName} {(IsAscending ? "ASC" : "DESC")}";
+ }
+}
+
+public class OrderByClause : List<OrderByItem>
+{
+ public OrderByClause(IEnumerable<OrderByItem> items)
+ : base(items)
+ {
+ }
+
+ public OrderByClause(params OrderByItem[] items)
+ : base(items)
+ {
+ }
+
+ public static OrderByClause Create(params OrderByItem[] items)
+ {
+ return new OrderByClause(items);
+ }
+
+ public string GenerateSql()
+ {
+ return "ORDER BY " + string.Join(", ", this.Select(i => i.GenerateSql()));
+ }
+} \ No newline at end of file