using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Api;
using Tgstation.Server.Api.Models;
using Tgstation.Server.Api.Models.Request;
using Tgstation.Server.Api.Models.Response;
namespace Tgstation.Server.Client
{
///
sealed class UserGroupsClient : PaginatedClient, IUserGroupsClient
{
///
/// Initializes a new instance of the class.
///
/// The for the .
public UserGroupsClient(IApiClient apiClient)
: base(apiClient)
{
}
///
public ValueTask Create(UserGroupCreateRequest group, CancellationToken cancellationToken) => ApiClient.Create(Routes.UserGroup, group ?? throw new ArgumentNullException(nameof(group)), cancellationToken);
///
public ValueTask GetId(EntityId group, CancellationToken cancellationToken) => ApiClient.Read(Routes.SetID(Routes.UserGroup, group?.Id ?? throw new ArgumentNullException(nameof(group))), cancellationToken);
///
public ValueTask> List(PaginationSettings? paginationSettings, CancellationToken cancellationToken)
=> ReadPaged(paginationSettings, Routes.ListRoute(Routes.UserGroup), null, cancellationToken);
///
public ValueTask Update(UserGroupUpdateRequest group, CancellationToken cancellationToken) => ApiClient.Update(Routes.UserGroup, group ?? throw new ArgumentNullException(nameof(group)), cancellationToken);
///
public ValueTask Delete(EntityId group, CancellationToken cancellationToken) => ApiClient.Delete(Routes.SetID(Routes.UserGroup, group?.Id ?? throw new ArgumentNullException(nameof(group))), cancellationToken);
}
}