mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-07 10:14:13 -04:00
Adding documentations to the repository interface
This commit is contained in:
parent
ecb728bd56
commit
f937d2f308
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@ -21,8 +21,8 @@ jobs:
|
|||||||
artifact: macos
|
artifact: macos
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
- name: Checkout submodules
|
with:
|
||||||
run: git submodule update --init --recursive
|
submodules: recursive
|
||||||
- name: Setup .NET
|
- name: Setup .NET
|
||||||
uses: actions/setup-dotnet@v1
|
uses: actions/setup-dotnet@v1
|
||||||
with:
|
with:
|
||||||
|
@ -9,25 +9,60 @@ using Kyoo.Models;
|
|||||||
|
|
||||||
namespace Kyoo.Controllers
|
namespace Kyoo.Controllers
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Informations about the pagination. How many items should be displayed and where to start.
|
||||||
|
/// </summary>
|
||||||
public readonly struct Pagination
|
public readonly struct Pagination
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The count of items to return.
|
||||||
|
/// </summary>
|
||||||
public int Count { get; }
|
public int Count { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// Where to start? Using the given sort
|
||||||
|
/// </summary>
|
||||||
public int AfterID { get; }
|
public int AfterID { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create a new <see cref="Pagination"/> instance.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="count">Set the <see cref="Count"/> value</param>
|
||||||
|
/// <param name="afterID">Set the <see cref="AfterID"/> value. If not specified, it will start from the start</param>
|
||||||
public Pagination(int count, int afterID = 0)
|
public Pagination(int count, int afterID = 0)
|
||||||
{
|
{
|
||||||
Count = count;
|
Count = count;
|
||||||
AfterID = afterID;
|
AfterID = afterID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Implicitly create a new pagination from a limit number.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="limit">Set the <see cref="Count"/> value</param>
|
||||||
|
/// <returns>A new <see cref="Pagination"/> instance</returns>
|
||||||
public static implicit operator Pagination(int limit) => new(limit);
|
public static implicit operator Pagination(int limit) => new(limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Informations about how a query should be sorted. What factor should decide the sort and in which order.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">For witch type this sort applies</typeparam>
|
||||||
public readonly struct Sort<T>
|
public readonly struct Sort<T>
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The sort key. This member will be used to sort the results.
|
||||||
|
/// </summary>
|
||||||
public Expression<Func<T, object>> Key { get; }
|
public Expression<Func<T, object>> Key { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// If this is set to true, items will be sorted in descend order else, they will be sorted in ascendent order.
|
||||||
|
/// </summary>
|
||||||
public bool Descendant { get; }
|
public bool Descendant { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create a new <see cref="Sort{T}"/> instance.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="key">The sort key given. It is assigned to <see cref="Key"/>.</param>
|
||||||
|
/// <param name="descendant">Should this be in descendant order? The default is false.</param>
|
||||||
|
/// <exception cref="ArgumentException">If the given key is not a member.</exception>
|
||||||
public Sort(Expression<Func<T, object>> key, bool descendant = false)
|
public Sort(Expression<Func<T, object>> key, bool descendant = false)
|
||||||
{
|
{
|
||||||
Key = key;
|
Key = key;
|
||||||
@ -37,6 +72,11 @@ namespace Kyoo.Controllers
|
|||||||
throw new ArgumentException("The given sort key is not valid.");
|
throw new ArgumentException("The given sort key is not valid.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create a new <see cref="Sort{T}"/> instance from a key's name (case insensitive).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sortBy">A key name with an optional order specifier. Format: "key:asc", "key:desc" or "key".</param>
|
||||||
|
/// <exception cref="ArgumentException">An invalid key or sort specifier as been given.</exception>
|
||||||
public Sort(string sortBy)
|
public Sort(string sortBy)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(sortBy))
|
if (string.IsNullOrEmpty(sortBy))
|
||||||
@ -65,8 +105,14 @@ namespace Kyoo.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A base class for repositories. Every service implementing this will be handled by the <see cref="LibraryManager"/>.
|
||||||
|
/// </summary>
|
||||||
public interface IBaseRepository : IDisposable, IAsyncDisposable
|
public interface IBaseRepository : IDisposable, IAsyncDisposable
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The type for witch this repository is responsible.
|
||||||
|
/// </summary>
|
||||||
Type RepositoryType { get; }
|
Type RepositoryType { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,10 @@ namespace Kyoo.Controllers
|
|||||||
private readonly IBaseRepository[] _repositories;
|
private readonly IBaseRepository[] _repositories;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create a new <see cref="LibraryManager"/> instancce with every repository available.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="repositories">The list of repositories that this library manager should manage. If a repository for every base type is not available, this instance won't be stable.</param>
|
||||||
public LibraryManager(IEnumerable<IBaseRepository> repositories)
|
public LibraryManager(IEnumerable<IBaseRepository> repositories)
|
||||||
{
|
{
|
||||||
_repositories = repositories.ToArray();
|
_repositories = repositories.ToArray();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user