using EntKube.Provisioning.Domain;
namespace EntKube.Provisioning.Infrastructure;
///
/// In-memory implementation of the service instance repository for local development.
/// Production will use EF Core with PostgreSQL.
///
public class InMemoryServiceInstanceRepository : IServiceInstanceRepository
{
private readonly List instances = new();
public Task GetByIdAsync(Guid id, CancellationToken ct = default)
{
ServiceInstance? instance = instances.FirstOrDefault(i => i.Id == id);
return Task.FromResult(instance);
}
public Task> GetByClusterIdAsync(Guid clusterId, CancellationToken ct = default)
{
IReadOnlyList result = instances.Where(i => i.ClusterId == clusterId).ToList().AsReadOnly();
return Task.FromResult(result);
}
public Task> GetAllAsync(CancellationToken ct = default)
{
IReadOnlyList result = instances.AsReadOnly();
return Task.FromResult(result);
}
public Task AddAsync(ServiceInstance instance, CancellationToken ct = default)
{
instances.Add(instance);
return Task.CompletedTask;
}
public Task UpdateAsync(ServiceInstance instance, CancellationToken ct = default)
{
return Task.CompletedTask;
}
}