using Raven.Client.Documents; using System.Linq.Expressions; using Finch.Numbers; namespace Finch.Raven; public class RavenNumberStoreDbProvider : IFinchNumberStoreDbProvider { protected IRavenOperations Ops { get; set; } public RavenNumberStoreDbProvider(IRavenOperations ops) { Ops = ops; } public Task Load(string id, CancellationToken ct = default) where T : FinchEntity, new() => Ops.Load(id); public Task Find(Expression> expression, CancellationToken ct = default) where T : FinchEntity => Ops.Session.Query().FirstOrDefaultAsync(expression, ct); public async Task> FindAll(Expression> expression, CancellationToken ct = default) where T : FinchEntity => await Ops.Session.Query().Where(expression).ToListAsync(ct); public Task> Create(T model, CancellationToken ct = default) where T : FinchEntity, new() => Ops.Create(model); public Task> Update(T model, CancellationToken ct = default) where T : FinchEntity, new() => Ops.Update(model); public Task> Delete(T model, CancellationToken ct = default) where T : FinchEntity, new() => Ops.Delete(model); }