diff options
author | crupest <crupest@outlook.com> | 2024-11-11 01:12:29 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2024-12-19 21:42:01 +0800 |
commit | a7fb0508867ee53934be18a6606aa8bc12c2645b (patch) | |
tree | 5994f0a62733b13f9f330e3515260ae20dc4a0bd /dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs | |
parent | 7692763f83ad1be735b0b9e9ab0af8ce666d8de8 (diff) | |
download | crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.tar.gz crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.tar.bz2 crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.zip |
HALF WORK: 2024.12.19
Re-organize file structure.
Diffstat (limited to 'dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs')
-rw-r--r-- | dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs b/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs new file mode 100644 index 0000000..734d044 --- /dev/null +++ b/dropped/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/OrderByClause.cs @@ -0,0 +1,50 @@ +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 interface IOrderByClause : IClause +{ + List<OrderByItem> Items { get; } + // Contains "ORDER BY" keyword! + string GenerateSql(string? dbProviderId = null); +} + +public class OrderByClause : IOrderByClause +{ + public List<OrderByItem> Items { get; } = new List<OrderByItem>(); + + public OrderByClause(params OrderByItem[] items) + { + Items.AddRange(items); + } + + public static OrderByClause Create(params OrderByItem[] items) + { + return new OrderByClause(items); + } + + public List<string> GetRelatedColumns() + { + return Items.Select(x => x.ColumnName).ToList(); + } + + public string GenerateSql(string? dbProviderId = null) + { + return "ORDER BY " + string.Join(", ", Items.Select(i => i.GenerateSql())); + } +} |