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
{
///
sealed class JobsClient : PaginatedClient, IJobsClient
{
///
/// The for the
///
readonly Instance instance;
///
/// Construct a
///
/// The for the .
/// The value of
public JobsClient(IApiClient apiClient, Instance instance)
: base(apiClient)
{
this.instance = instance ?? throw new ArgumentNullException(nameof(instance));
}
///
public Task Cancel(Job job, CancellationToken cancellationToken) => ApiClient.Delete(Routes.SetID(Routes.Jobs, job?.Id ?? throw new ArgumentNullException(nameof(job))), instance.Id, cancellationToken);
///
public Task> List(PaginationSettings? paginationSettings, CancellationToken cancellationToken)
=> ReadPaged(paginationSettings, Routes.ListRoute(Routes.Jobs), instance.Id, cancellationToken);
///
public Task> ListActive(PaginationSettings? paginationSettings, CancellationToken cancellationToken)
=> ReadPaged(paginationSettings, Routes.Jobs, instance.Id, cancellationToken);
///
public Task GetId(EntityId job, CancellationToken cancellationToken) => ApiClient.Read(Routes.SetID(Routes.Jobs, job?.Id ?? throw new ArgumentNullException(nameof(job))), instance.Id, cancellationToken);
}
}