From 6f0d69c060efcd37531ac316c2a0ff4ec7585087 Mon Sep 17 00:00:00 2001 From: j82w Date: Fri, 1 May 2020 14:14:25 -0700 Subject: [PATCH] Container: Add a database reference to the container (#1457) * Make database reference public * Adding client to the database * Updated contract --- .../src/Resource/Container/Container.cs | 5 +++++ .../Resource/Container/ContainerInternal.cs | 2 -- .../src/Resource/Database/Database.cs | 7 ++++++- .../src/Resource/Database/DatabaseCore.cs | 4 +++- .../CosmosItemTests.cs | 7 +++++++ .../DotNetSDKAPI.json | 20 +++++++++++++++++++ 6 files changed, 41 insertions(+), 4 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/Resource/Container/Container.cs b/Microsoft.Azure.Cosmos/src/Resource/Container/Container.cs index 93bfa0aade..b4383d8fb0 100644 --- a/Microsoft.Azure.Cosmos/src/Resource/Container/Container.cs +++ b/Microsoft.Azure.Cosmos/src/Resource/Container/Container.cs @@ -32,6 +32,11 @@ public abstract class Container /// public abstract string Id { get; } + /// + /// Returns the parent Database reference + /// + public abstract Database Database { get; } + /// /// Returns the conflicts /// diff --git a/Microsoft.Azure.Cosmos/src/Resource/Container/ContainerInternal.cs b/Microsoft.Azure.Cosmos/src/Resource/Container/ContainerInternal.cs index 2cda57c13a..fa5820e1a7 100644 --- a/Microsoft.Azure.Cosmos/src/Resource/Container/ContainerInternal.cs +++ b/Microsoft.Azure.Cosmos/src/Resource/Container/ContainerInternal.cs @@ -17,8 +17,6 @@ namespace Microsoft.Azure.Cosmos internal abstract class ContainerInternal : Container { - public abstract Database Database { get; } - internal abstract Uri LinkUri { get; } internal abstract CosmosClientContext ClientContext { get; } diff --git a/Microsoft.Azure.Cosmos/src/Resource/Database/Database.cs b/Microsoft.Azure.Cosmos/src/Resource/Database/Database.cs index efd1b06cce..82f0ff109b 100644 --- a/Microsoft.Azure.Cosmos/src/Resource/Database/Database.cs +++ b/Microsoft.Azure.Cosmos/src/Resource/Database/Database.cs @@ -12,7 +12,7 @@ namespace Microsoft.Azure.Cosmos /// /// Operations for reading or deleting an existing database. /// - /// See for creating new databases, and reading/querying all databases; use `client.Databases`. + /// See for creating new databases, and reading/querying all databases; use `client.Databases`. /// /// /// Note: all these operations make calls against a fixed budget. @@ -27,6 +27,11 @@ public abstract class Database /// public abstract string Id { get; } + /// + /// The parent Cosmos client instance related the database instance + /// + public abstract CosmosClient Client { get; } + /// /// Reads a from the Azure Cosmos service as an asynchronous operation. /// diff --git a/Microsoft.Azure.Cosmos/src/Resource/Database/DatabaseCore.cs b/Microsoft.Azure.Cosmos/src/Resource/Database/DatabaseCore.cs index 234f2465cd..0717edee54 100644 --- a/Microsoft.Azure.Cosmos/src/Resource/Database/DatabaseCore.cs +++ b/Microsoft.Azure.Cosmos/src/Resource/Database/DatabaseCore.cs @@ -16,7 +16,7 @@ namespace Microsoft.Azure.Cosmos /// /// Operations for reading or deleting an existing database. /// - /// for or creating new databases, and reading/querying all databases; use `client.Databases`. + /// for or creating new databases, and reading/querying all databases; use `client.Databases`. /// internal class DatabaseCore : DatabaseInternal { @@ -34,6 +34,8 @@ protected DatabaseCore( public override string Id { get; } + public override CosmosClient Client => this.ClientContext.Client; + internal override Uri LinkUri { get; } internal override CosmosClientContext ClientContext { get; } diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosItemTests.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosItemTests.cs index c70e3643ac..0de61a205c 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosItemTests.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosItemTests.cs @@ -57,6 +57,13 @@ public async Task Cleanup() await base.TestCleanup(); } + [TestMethod] + public void ParentResourceTest() + { + Assert.AreEqual(this.database, this.Container.Database); + Assert.AreEqual(this.cosmosClient, this.Container.Database.Client); + } + [TestMethod] public async Task CreateDropItemTest() { diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/DotNetSDKAPI.json b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/DotNetSDKAPI.json index a5b1ffb912..1c23f908ea 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/DotNetSDKAPI.json +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/DotNetSDKAPI.json @@ -677,6 +677,16 @@ "Attributes": [], "MethodInfo": null }, + "Microsoft.Azure.Cosmos.Database Database": { + "Type": "Property", + "Attributes": [], + "MethodInfo": null + }, + "Microsoft.Azure.Cosmos.Database get_Database()": { + "Type": "Method", + "Attributes": [], + "MethodInfo": "Microsoft.Azure.Cosmos.Database get_Database()" + }, "Microsoft.Azure.Cosmos.FeedIterator GetItemQueryStreamIterator(Microsoft.Azure.Cosmos.QueryDefinition, System.String, Microsoft.Azure.Cosmos.QueryRequestOptions)": { "Type": "Method", "Attributes": [], @@ -2015,6 +2025,16 @@ "Attributes": [], "MethodInfo": "Microsoft.Azure.Cosmos.Container GetContainer(System.String)" }, + "Microsoft.Azure.Cosmos.CosmosClient Client": { + "Type": "Property", + "Attributes": [], + "MethodInfo": null + }, + "Microsoft.Azure.Cosmos.CosmosClient get_Client()": { + "Type": "Method", + "Attributes": [], + "MethodInfo": "Microsoft.Azure.Cosmos.CosmosClient get_Client()" + }, "Microsoft.Azure.Cosmos.FeedIterator GetContainerQueryStreamIterator(Microsoft.Azure.Cosmos.QueryDefinition, System.String, Microsoft.Azure.Cosmos.QueryRequestOptions)": { "Type": "Method", "Attributes": [],