Skip to content

Commit

Permalink
Merge pull request #33 from couchbaselabs/di-cluster
Browse files Browse the repository at this point in the history
Resolve IClusterProvider instead of IBucketProvider
  • Loading branch information
jeffrymorris authored Jan 27, 2025
2 parents 2437b2b + 8133aa1 commit e0b7a3c
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ public IEnumerator<T> GetEnumerator()
queryOptions.Parameter(parameter.Key, parameter.Value);
}
var command = _relationalCommandCache.RentAndPopulateRelationalCommand(_relationalQueryContext);
var bucketProvider = _serviceProvider.GetKeyedService<IBucketProvider>(_couchbaseDbContextOptionsBuilder.ConnectionString);
var bucket = bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket).GetAwaiter().GetResult();
var result = bucket.Cluster.QueryAsync<T>(command.CommandText, queryOptions).GetAwaiter().GetResult();

var clusterProvider = _serviceProvider.GetKeyedService<IClusterProvider>(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString);
var cluster = clusterProvider.GetClusterAsync().GetAwaiter().GetResult();
var result = cluster.QueryAsync<T>(command.CommandText, queryOptions).GetAwaiter().GetResult();

_relationalQueryContext.InitializeStateManager(_standAloneStateManager);

Expand Down Expand Up @@ -83,9 +84,10 @@ IEnumerator IEnumerable.GetEnumerator()
{
var command = _relationalCommandCache.RentAndPopulateRelationalCommand(_relationalQueryContext);
var queryOptions = GetParameters(command);
var bucketProvider = _serviceProvider.GetKeyedService<IBucketProvider>(_couchbaseDbContextOptionsBuilder.ConnectionString);
var bucket = await bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket);
var result = await bucket.Cluster.QueryAsync<T>(command.CommandText, queryOptions).ConfigureAwait(false);

var clusterProvider = _serviceProvider.GetKeyedService<IClusterProvider>(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString);
var cluster = await clusterProvider.GetClusterAsync();
var result = await cluster.QueryAsync<T>(command.CommandText, queryOptions).ConfigureAwait(false);

_relationalQueryContext.InitializeStateManager(_standAloneStateManager);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,9 @@ private async Task<ICouchbaseCollection> GetCollection((string? scope, string? c
{
try
{
var bucketProvider = _serviceProvider.GetRequiredKeyedService<IBucketProvider>(_couchbaseDbContextOptionsBuilder
.ConnectionString);

_bucket ??= await bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket).ConfigureAwait(false);
var clusterProvider = _serviceProvider.GetRequiredKeyedService<IClusterProvider>(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString);
var cluster = await clusterProvider.GetClusterAsync().ConfigureAwait(false);
_bucket = await cluster.BucketAsync(_couchbaseDbContextOptionsBuilder.Bucket);
}
catch (Exception e)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,8 @@ public override void Open()
return;
}

var bucketProvider = _serviceProvider.GetRequiredKeyedService<IBucketProvider>(_couchbaseDbContextOptionsBuilder.ConnectionString);
var bucket = bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket).GetAwaiter().GetResult();
var cluster = bucket.Cluster;
var clusterProvider = _serviceProvider.GetRequiredKeyedService<IClusterProvider>(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString);
var cluster = clusterProvider.GetClusterAsync().GetAwaiter().GetResult();
_clusters.TryAdd(ConnectionString, cluster);
}

Expand All @@ -61,9 +60,8 @@ protected override DbCommand CreateDbCommand()
{
var cluster = _clusters.GetOrAdd(ConnectionString, s =>
{
var bucketProvider = _serviceProvider.GetRequiredKeyedService<IBucketProvider>(_couchbaseDbContextOptionsBuilder.ConnectionString);
var bucket = bucketProvider.GetBucketAsync(_couchbaseDbContextOptionsBuilder.Bucket).GetAwaiter().GetResult();
return bucket.Cluster;
var clusterProvider = _serviceProvider.GetRequiredKeyedService<IClusterProvider>(_couchbaseDbContextOptionsBuilder.ClusterOptions.ConnectionString);
return clusterProvider.GetClusterAsync().GetAwaiter().GetResult();
});

return new CouchbaseCommand
Expand Down

0 comments on commit e0b7a3c

Please sign in to comment.