using Microsoft.AspNetCore.Identity;
using Fengling.Platform.Domain.AggregatesModel.GatewayAggregate;
namespace Fengling.Platform.Infrastructure;
///
/// 集群存储接口
///
public interface IClusterStore
{
Task FindByIdAsync(string? id, CancellationToken cancellationToken = default);
Task FindByClusterIdAsync(string clusterId, CancellationToken cancellationToken = default);
Task> GetAllAsync(CancellationToken cancellationToken = default);
Task> GetPagedAsync(int page, int pageSize, string? clusterId = null,
string? name = null, int? status = null, CancellationToken cancellationToken = default);
Task GetCountAsync(string? clusterId = null, string? name = null,
int? status = null, CancellationToken cancellationToken = default);
Task CreateAsync(GwCluster cluster, CancellationToken cancellationToken = default);
Task UpdateAsync(GwCluster cluster, CancellationToken cancellationToken = default);
Task DeleteAsync(GwCluster cluster, CancellationToken cancellationToken = default);
// Destination management
Task AddDestinationAsync(string clusterId, GwDestination destination, CancellationToken cancellationToken = default);
Task UpdateDestinationAsync(string clusterId, string destinationId, GwDestination destination, CancellationToken cancellationToken = default);
Task RemoveDestinationAsync(string clusterId, string destinationId, CancellationToken cancellationToken = default);
}