using Raven.Client.Documents; using Raven.Client.Documents.BulkInsert; using Raven.Client.Documents.Session; using System.Threading; namespace zero.Core.Database { public interface IZeroStore { IDocumentStore Store { get; } BulkInsertOperation BulkInsert(CancellationToken token = default); BulkInsertOperation BulkInsert(string database, CancellationToken token = default); IAsyncDocumentSession OpenAsyncSession(); IAsyncDocumentSession OpenAsyncSession(SessionOptions options); IAsyncDocumentSession OpenAsyncSession(string database); IDocumentSession OpenSession(); IDocumentSession OpenSession(SessionOptions options); IDocumentSession OpenSession(string database); } public class ZeroStore : DocumentStore, IZeroStore { public ZeroStore() : base() { } /// /// Get underlying raven document store /// public IDocumentStore Store => this; /// public override IAsyncDocumentSession OpenAsyncSession(string database) { return base.OpenAsyncSession(database); } /// public override IAsyncDocumentSession OpenAsyncSession(SessionOptions options) { return base.OpenAsyncSession(options); } /// public override IAsyncDocumentSession OpenAsyncSession() { return base.OpenAsyncSession(); } /// public override IDocumentSession OpenSession(SessionOptions options) { return base.OpenSession(options); } /// public override IDocumentSession OpenSession(string database) { return base.OpenSession(database); } /// public override IDocumentSession OpenSession() { return base.OpenSession(); } /// public override BulkInsertOperation BulkInsert(string database, CancellationToken token = default) { return base.BulkInsert(database, token); } /// /// Create a bulk insert operation for the resolved database /// public BulkInsertOperation BulkInsert(CancellationToken token = default) { return base.BulkInsert(null, token); } } }