Files
Store.Management/Source/Store.Management.Api/Users/UserApi.cs
T
2026-10-27 14:35:03 +08:00

39 lines
1.9 KiB
C#

using RestSharp;
using Store.Management.Api.Models;
using Store.Management.Api.Transport;
namespace Store.Management.Api.Users;
public interface IUserApi
{
Task<PageResult<UserInfo>> SearchAsync(UserSearchRequest request, CancellationToken cancellationToken = default);
Task<UserInfo> GetAsync(string? userName = null, CancellationToken cancellationToken = default);
Task<UserInfo> CreateAsync(UserCreateRequest request, CancellationToken cancellationToken = default);
Task<UserInfo> UpdateAsync(UserUpdateRequest request, CancellationToken cancellationToken = default);
}
internal sealed class UserApi(ApiTransport transport) : IUserApi
{
public Task<PageResult<UserInfo>> SearchAsync(UserSearchRequest request, CancellationToken cancellationToken = default)
{
ArgumentNullException.ThrowIfNull(request);
return transport.GetRequiredAsync<PageResult<UserInfo>>("user/GetAllUser", Method.Post, request, cancellationToken: cancellationToken);
}
public Task<UserInfo> GetAsync(string? userName = null, CancellationToken cancellationToken = default)
=> transport.GetRequiredAsync<UserInfo>("user/GetUser", Method.Post,
query: new Dictionary<string, string?> { ["userName"] = userName }, cancellationToken: cancellationToken);
public Task<UserInfo> CreateAsync(UserCreateRequest request, CancellationToken cancellationToken = default)
{
ArgumentNullException.ThrowIfNull(request);
return transport.GetRequiredAsync<UserInfo>("user/AddUser", Method.Post, request, cancellationToken: cancellationToken);
}
public Task<UserInfo> UpdateAsync(UserUpdateRequest request, CancellationToken cancellationToken = default)
{
ArgumentNullException.ThrowIfNull(request);
return transport.GetRequiredAsync<UserInfo>("user/UpdateUser", Method.Post, request, cancellationToken: cancellationToken);
}
}