From 8133aa118a68adffc417a105260962ec74a3b4e5 Mon Sep 17 00:00:00 2001 From: jmorris Date: Mon, 27 Jan 2025 14:58:24 -0800 Subject: [PATCH] Resolve IClusterProvider instead of IBucketProvider --- .../Internal/CouchbaseOptionsExtension.cs | 10 ++-------- .../Query/Internal/CouchbaseQueryEnumerable.cs | 14 ++++++++------ .../Storage/Internal/CouchbaseClientWrapper.cs | 7 +++---- .../Storage/Internal/CouchbaseConnection.cs | 10 ++++------ 4 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/Couchbase.EntityFrameworkCore/Infrastructure/Internal/CouchbaseOptionsExtension.cs b/src/Couchbase.EntityFrameworkCore/Infrastructure/Internal/CouchbaseOptionsExtension.cs index c850080..d7680f5 100644 --- a/src/Couchbase.EntityFrameworkCore/Infrastructure/Internal/CouchbaseOptionsExtension.cs +++ b/src/Couchbase.EntityFrameworkCore/Infrastructure/Internal/CouchbaseOptionsExtension.cs @@ -33,13 +33,7 @@ protected internal CouchbaseOptionsExtension(CouchbaseOptionsExtension copyFrom) public override void ApplyServices(IServiceCollection services) { - services.AddCouchbase(options => - { - options.WithConnectionString(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString); - options.WithCredentials(_couchbaseDbContextOptionsBuilder.ClusterOptions.UserName, _couchbaseDbContextOptionsBuilder.ClusterOptions.Password); - }); - - services.AddKeyedCouchbase(_couchbaseDbContextOptionsBuilder.ConnectionString, options => + services.AddKeyedCouchbase(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString, options => { options.WithLogging(_couchbaseDbContextOptionsBuilder.ClusterOptions.Logging); options.WithConnectionString(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString); @@ -66,7 +60,7 @@ public CouchbaseOptionsExtensionInfo(CouchbaseOptionsExtension extension) public override bool IsDatabaseProvider => true; - public override string LogFragment => $"Using Custom SQLite Provider - ConnectionString: {ConnectionString}"; + public override string LogFragment => $"Using Custom Couchbase Provider - ConnectionString: {ConnectionString}"; public override int GetServiceProviderHashCode() => ConnectionString.GetHashCode(); diff --git a/src/Couchbase.EntityFrameworkCore/Query/Internal/CouchbaseQueryEnumerable.cs b/src/Couchbase.EntityFrameworkCore/Query/Internal/CouchbaseQueryEnumerable.cs index 0416bcd..fd22223 100644 --- a/src/Couchbase.EntityFrameworkCore/Query/Internal/CouchbaseQueryEnumerable.cs +++ b/src/Couchbase.EntityFrameworkCore/Query/Internal/CouchbaseQueryEnumerable.cs @@ -45,9 +45,10 @@ public IEnumerator GetEnumerator() queryOptions.Parameter(parameter.Key, parameter.Value); } var command = _relationalCommandCache.RentAndPopulateRelationalCommand(_relationalQueryContext); - var bucketProvider = _serviceProvider.GetKeyedService(_couchbaseDbContextOptionsBuilder.ConnectionString); - var bucket = bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket).GetAwaiter().GetResult(); - var result = bucket.Cluster.QueryAsync(command.CommandText, queryOptions).GetAwaiter().GetResult(); + + var clusterProvider = _serviceProvider.GetKeyedService(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString); + var cluster = clusterProvider.GetClusterAsync().GetAwaiter().GetResult(); + var result = cluster.QueryAsync(command.CommandText, queryOptions).GetAwaiter().GetResult(); _relationalQueryContext.InitializeStateManager(_standAloneStateManager); @@ -83,9 +84,10 @@ IEnumerator IEnumerable.GetEnumerator() { var command = _relationalCommandCache.RentAndPopulateRelationalCommand(_relationalQueryContext); var queryOptions = GetParameters(command); - var bucketProvider = _serviceProvider.GetKeyedService(_couchbaseDbContextOptionsBuilder.ConnectionString); - var bucket = await bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket); - var result = await bucket.Cluster.QueryAsync(command.CommandText, queryOptions).ConfigureAwait(false); + + var clusterProvider = _serviceProvider.GetKeyedService(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString); + var cluster = await clusterProvider.GetClusterAsync(); + var result = await cluster.QueryAsync(command.CommandText, queryOptions).ConfigureAwait(false); _relationalQueryContext.InitializeStateManager(_standAloneStateManager); diff --git a/src/Couchbase.EntityFrameworkCore/Storage/Internal/CouchbaseClientWrapper.cs b/src/Couchbase.EntityFrameworkCore/Storage/Internal/CouchbaseClientWrapper.cs index ab0334e..1857f5f 100644 --- a/src/Couchbase.EntityFrameworkCore/Storage/Internal/CouchbaseClientWrapper.cs +++ b/src/Couchbase.EntityFrameworkCore/Storage/Internal/CouchbaseClientWrapper.cs @@ -87,10 +87,9 @@ private async Task GetCollection((string? scope, string? c { try { - var bucketProvider = _serviceProvider.GetRequiredKeyedService(_couchbaseDbContextOptionsBuilder - .ConnectionString); - - _bucket ??= await bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket).ConfigureAwait(false); + var clusterProvider = _serviceProvider.GetRequiredKeyedService(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString); + var cluster = await clusterProvider.GetClusterAsync().ConfigureAwait(false); + _bucket = await cluster.BucketAsync(_couchbaseDbContextOptionsBuilder.Bucket); } catch (Exception e) { diff --git a/src/Couchbase.EntityFrameworkCore/Storage/Internal/CouchbaseConnection.cs b/src/Couchbase.EntityFrameworkCore/Storage/Internal/CouchbaseConnection.cs index e17b775..579a091 100644 --- a/src/Couchbase.EntityFrameworkCore/Storage/Internal/CouchbaseConnection.cs +++ b/src/Couchbase.EntityFrameworkCore/Storage/Internal/CouchbaseConnection.cs @@ -40,9 +40,8 @@ public override void Open() return; } - var bucketProvider = _serviceProvider.GetRequiredKeyedService(_couchbaseDbContextOptionsBuilder.ConnectionString); - var bucket = bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket).GetAwaiter().GetResult(); - var cluster = bucket.Cluster; + var clusterProvider = _serviceProvider.GetRequiredKeyedService(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString); + var cluster = clusterProvider.GetClusterAsync().GetAwaiter().GetResult(); _clusters.TryAdd(ConnectionString, cluster); } @@ -61,9 +60,8 @@ protected override DbCommand CreateDbCommand() { var cluster = _clusters.GetOrAdd(ConnectionString, s => { - var bucketProvider = _serviceProvider.GetRequiredKeyedService(_couchbaseDbContextOptionsBuilder.ConnectionString); - var bucket = bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket).GetAwaiter().GetResult(); - return bucket.Cluster; + var clusterProvider = _serviceProvider.GetRequiredKeyedService(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString); + return clusterProvider.GetClusterAsync().GetAwaiter().GetResult(); }); return new CouchbaseCommand