Files
tgstation-server/src/Tgstation.Server.Client/Components/JobsClient.cs
T
Jordan Brown eb709d136b Adds pagination
- Add generic Paginated<TModel> for pagination responses.
- Added pagination helper to ApiController.
- Implemented pagination for all previously IEnumerable<T> response endpoints.
- Added IApiTransformable<TApiModel> for host models finally.
- Added PaginationSettings to client List endpoints.
- Use two deprecated ErrorCodes for page parameter validation.
- Re-enabled to OpenAPI root array response lint.
- Add some integration tests with users.
2020-12-17 23:49:06 -05:00

44 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Api;
using Tgstation.Server.Api.Models;
namespace Tgstation.Server.Client.Components
{
/// <inheritdoc />
sealed class JobsClient : PaginatedClient, IJobsClient
{
/// <summary>
/// The <see cref="Instance"/> for the <see cref="JobsClient"/>
/// </summary>
readonly Instance instance;
/// <summary>
/// Construct a <see cref="JobsClient"/>
/// </summary>
/// <param name="apiClient">The <see cref="IApiClient"/> for the <see cref="PaginatedClient"/>.</param>
/// <param name="instance">The value of <see cref="Instance"/></param>
public JobsClient(IApiClient apiClient, Instance instance)
: base(apiClient)
{
this.instance = instance ?? throw new ArgumentNullException(nameof(instance));
}
/// <inheritdoc />
public Task Cancel(Job job, CancellationToken cancellationToken) => ApiClient.Delete(Routes.SetID(Routes.Jobs, job?.Id ?? throw new ArgumentNullException(nameof(job))), instance.Id, cancellationToken);
/// <inheritdoc />
public Task<IReadOnlyList<Job>> List(PaginationSettings? paginationSettings, CancellationToken cancellationToken)
=> ReadPaged<Job>(paginationSettings, Routes.ListRoute(Routes.Jobs), instance.Id, cancellationToken);
/// <inheritdoc />
public Task<IReadOnlyList<Job>> ListActive(PaginationSettings? paginationSettings, CancellationToken cancellationToken)
=> ReadPaged<Job>(paginationSettings, Routes.Jobs, instance.Id, cancellationToken);
/// <inheritdoc />
public Task<Job> GetId(EntityId job, CancellationToken cancellationToken) => ApiClient.Read<Job>(Routes.SetID(Routes.Jobs, job?.Id ?? throw new ArgumentNullException(nameof(job))), instance.Id, cancellationToken);
}
}