using Microsoft.AspNetCore.Identity;
using Fengling.Platform.Domain.AggregatesModel.GatewayAggregate;
namespace Fengling.Platform.Infrastructure;
///
/// 服务实例存储接口
///
public interface IInstanceStore
{
Task FindByIdAsync(string? id, CancellationToken cancellationToken = default);
Task FindByClusterIdAsync(string clusterId, CancellationToken cancellationToken = default);
Task FindByDestinationAsync(string clusterId, string destinationId, CancellationToken cancellationToken = default);
Task> GetAllAsync(CancellationToken cancellationToken = default);
Task> GetPagedAsync(int page, int pageSize, string? clusterId = null,
InstanceHealth? health = null, InstanceStatus? status = null, CancellationToken cancellationToken = default);
Task GetCountAsync(string? clusterId = null,
InstanceHealth? health = null, InstanceStatus? status = null, CancellationToken cancellationToken = default);
Task CreateAsync(GwServiceInstance instance, CancellationToken cancellationToken = default);
Task UpdateAsync(GwServiceInstance instance, CancellationToken cancellationToken = default);
Task DeleteAsync(GwServiceInstance instance, CancellationToken cancellationToken = default);
}