diff --git a/DeepDrftModels/DTOs/TrackDto.cs b/DeepDrftModels/DTOs/TrackDto.cs new file mode 100644 index 0000000..211fd0d --- /dev/null +++ b/DeepDrftModels/DTOs/TrackDto.cs @@ -0,0 +1,13 @@ +namespace DeepDrftModels.DTOs; + +public class TrackDto +{ + public long Id { get; set; } + public string MediaPath { get; set; } + public string TrackName { get; set; } + public string Artist { get; set; } + public string? Album { get; set; } + public string? Genre { get; set; } + public DateOnly? ReleaseDate { get; set; } + public string? ImagePath { get; set; } +} \ No newline at end of file diff --git a/DeepDrftModels/DeepDrftModels.csproj b/DeepDrftModels/DeepDrftModels.csproj new file mode 100644 index 0000000..a8fcc32 --- /dev/null +++ b/DeepDrftModels/DeepDrftModels.csproj @@ -0,0 +1,13 @@ + + + + net9.0 + enable + enable + + + + + + + diff --git a/DeepDrftModels/Entities/TrackEntity.cs b/DeepDrftModels/Entities/TrackEntity.cs new file mode 100644 index 0000000..ee82ef7 --- /dev/null +++ b/DeepDrftModels/Entities/TrackEntity.cs @@ -0,0 +1,13 @@ +namespace DeepDrftModels.Entities; + +public class TrackEntity +{ + public long Id { get; set; } + public string MediaPath { get; set; } + public string TrackName { get; set; } + public string Artist { get; set; } + public string? Album { get; set; } + public string? Genre { get; set; } + public DateOnly? ReleaseDate { get; set; } + public string? ImagePath { get; set; } +} \ No newline at end of file diff --git a/DeepDrftModels/Models/PagedResult.cs b/DeepDrftModels/Models/PagedResult.cs new file mode 100644 index 0000000..39a20ec --- /dev/null +++ b/DeepDrftModels/Models/PagedResult.cs @@ -0,0 +1,35 @@ +namespace DeepDrftModels.Models; + +public class PagedResult +{ + public IEnumerable Items { get; set; } = new List(); + public int TotalCount { get; set; } + public int Page { get; set; } + public int PageSize { get; set; } + public int TotalPages => (int)Math.Ceiling((double)TotalCount / PageSize); + public bool HasNextPage => Page < TotalPages; + public bool HasPreviousPage => Page > 1; + + public PagedResult() + { + } + + public static PagedResult From(PagedResult other, IEnumerable items) + { + return new PagedResult() + { + Items = items.ToList(), + Page = other.Page, + PageSize = other.PageSize, + TotalCount = other.TotalCount, + }; + } + + public PagedResult(IEnumerable items, int totalCount, int page, int pageSize) + { + Items = items.ToList() ?? new List(); + TotalCount = totalCount; + Page = page; + PageSize = pageSize; + } +} \ No newline at end of file diff --git a/DeepDrftModels/Models/PagingParameters.cs b/DeepDrftModels/Models/PagingParameters.cs new file mode 100644 index 0000000..55c2dd0 --- /dev/null +++ b/DeepDrftModels/Models/PagingParameters.cs @@ -0,0 +1,25 @@ +using System.Linq.Expressions; + +namespace DeepDrftModels.Models; + +public class PagingParameters +{ + private const int _maxPageSize = 100; + private int _pageSize = 20; + + public int Page { get; set; } = 1; + + public int PageSize + { + get => _pageSize; + set => _pageSize = value > _maxPageSize ? _maxPageSize : value; + } +} + +public class PagingParameters : PagingParameters +{ + public Expression>? OrderBy { get; set; } + public bool IsDescending { get; set; } = false; + + public int Skip => (Page - 1) * PageSize; +} \ No newline at end of file