diff --git a/src/Cli/src/ConfigGenerator.cs b/src/Cli/src/ConfigGenerator.cs
index 3f2e690d94..70395344b5 100644
--- a/src/Cli/src/ConfigGenerator.cs
+++ b/src/Cli/src/ConfigGenerator.cs
@@ -53,59 +53,47 @@ public static bool TryCreateRuntimeConfig(InitOptions options, out string runtim
runtimeConfigJson = string.Empty;
DatabaseType dbType = options.DatabaseType;
- DataSource dataSource = new(dbType);
- // default value of connection-string should be used, i.e Empty-string
- // if not explicitly provided by the user
- if (options.ConnectionString is not null)
- {
- dataSource.ConnectionString = options.ConnectionString;
- }
-
- CosmosDbOptions? cosmosDbOptions = null;
- MsSqlOptions? msSqlOptions = null;
- MySqlOptions? mySqlOptions = null;
- PostgreSqlOptions? postgreSqlOptions = null;
+ CosmosDbOptions? cosmosDbNoSqlOptions = null;
switch (dbType)
{
case DatabaseType.cosmos:
+ case DatabaseType.cosmosdb_nosql:
string? cosmosDatabase = options.CosmosDatabase;
string? cosmosContainer = options.CosmosContainer;
string? graphQLSchemaPath = options.GraphQLSchemaPath;
if (string.IsNullOrEmpty(cosmosDatabase) || string.IsNullOrEmpty(graphQLSchemaPath))
{
- Console.WriteLine($"Provide all the mandatory options for CosmosDB: --cosmos-database, and --graphql-schema");
+ Console.WriteLine($"Provide all the mandatory options for CosmosDB_NoSql: --cosmos-database, and --graphql-schema");
return false;
}
- cosmosDbOptions = new CosmosDbOptions(cosmosDatabase, cosmosContainer, graphQLSchemaPath, GraphQLSchema: null);
+ cosmosDbNoSqlOptions = new CosmosDbOptions(cosmosDatabase, cosmosContainer, graphQLSchemaPath, GraphQLSchema: null);
break;
case DatabaseType.mssql:
- msSqlOptions = new MsSqlOptions();
- break;
-
case DatabaseType.mysql:
- mySqlOptions = new MySqlOptions();
- break;
-
case DatabaseType.postgresql:
- postgreSqlOptions = new PostgreSqlOptions();
+ case DatabaseType.cosmosdb_postgresql:
break;
-
default:
- Console.WriteLine($"DatabaseType: ${dbType} not supported.Please provide a valid database-type.");
- return false;
+ throw new Exception($"DatabaseType: ${dbType} not supported.Please provide a valid database-type.");
+ }
+
+ DataSource dataSource = new(dbType, DbOptions: cosmosDbNoSqlOptions);
+
+ // default value of connection-string should be used, i.e Empty-string
+ // if not explicitly provided by the user
+ if (options.ConnectionString is not null)
+ {
+ dataSource.ConnectionString = options.ConnectionString;
}
RuntimeConfig runtimeConfig = new(
Schema: RuntimeConfig.SCHEMA,
DataSource: dataSource,
- CosmosDb: cosmosDbOptions,
- MsSql: msSqlOptions,
- PostgreSql: postgreSqlOptions,
- MySql: mySqlOptions,
+ CosmosDb: cosmosDbNoSqlOptions,
RuntimeSettings: GetDefaultGlobalSettings(
options.HostMode,
options.CorsOrigin,
diff --git a/src/Cli/test/EndToEndTests.cs b/src/Cli/test/EndToEndTests.cs
index 4e33255949..ee301fba42 100644
--- a/src/Cli/test/EndToEndTests.cs
+++ b/src/Cli/test/EndToEndTests.cs
@@ -10,12 +10,12 @@ namespace Cli.Tests;
public class EndToEndTests
{
///
- /// Initializing config for cosmos DB.
+ /// Initializing config for cosmosdb_nosql.
///
[TestMethod]
- public void TestInitForCosmosDB()
+ public void TestInitForCosmosDBNoSql()
{
- string[] args = { "init", "-c", _testRuntimeConfig, "--database-type", "cosmos",
+ string[] args = { "init", "-c", _testRuntimeConfig, "--database-type", "cosmosdb_nosql",
"--connection-string", "localhost:5000", "--authenticate-devmode-requests", "True", "--cosmos-database",
"graphqldb", "--cosmos-container", "planet", "--graphql-schema", "schema.gql", "--cors-origin", "localhost:3000,www.nolocalhost.com:80" };
Program.Main(args);
@@ -24,11 +24,41 @@ public void TestInitForCosmosDB()
Assert.IsNotNull(runtimeConfig);
Assert.IsTrue(runtimeConfig.GraphQLGlobalSettings.AllowIntrospection);
- Assert.AreEqual(DatabaseType.cosmos, runtimeConfig.DatabaseType);
- Assert.IsNotNull(runtimeConfig.CosmosDb);
- Assert.AreEqual("graphqldb", runtimeConfig.CosmosDb.Database);
- Assert.AreEqual("planet", runtimeConfig.CosmosDb.Container);
- Assert.AreEqual("schema.gql", runtimeConfig.CosmosDb.GraphQLSchemaPath);
+ Assert.AreEqual(DatabaseType.cosmosdb_nosql, runtimeConfig.DatabaseType);
+ Assert.IsNotNull(runtimeConfig.DataSource.CosmosDbNoSql);
+ Assert.AreEqual("graphqldb", runtimeConfig.DataSource.CosmosDbNoSql.Database);
+ Assert.AreEqual("planet", runtimeConfig.DataSource.CosmosDbNoSql.Container);
+ Assert.AreEqual("schema.gql", runtimeConfig.DataSource.CosmosDbNoSql.GraphQLSchemaPath);
+ Assert.IsNotNull(runtimeConfig.RuntimeSettings);
+ Assert.AreEqual(true, runtimeConfig.HostGlobalSettings.IsDevModeDefaultRequestAuthenticated);
+ JsonElement jsonRestSettings = (JsonElement)runtimeConfig.RuntimeSettings[GlobalSettingsType.Rest];
+
+ RestGlobalSettings? restGlobalSettings = JsonSerializer.Deserialize(jsonRestSettings, RuntimeConfig.SerializerOptions);
+ Assert.IsNotNull(restGlobalSettings);
+ Assert.IsNotNull(runtimeConfig.HostGlobalSettings);
+
+ Assert.IsTrue(runtimeConfig.RuntimeSettings.ContainsKey(GlobalSettingsType.Host));
+ HostGlobalSettings? hostGlobalSettings = JsonSerializer.Deserialize((JsonElement)runtimeConfig.RuntimeSettings[GlobalSettingsType.Host], RuntimeConfig.SerializerOptions);
+ Assert.IsNotNull(hostGlobalSettings);
+ CollectionAssert.AreEqual(new string[] { "localhost:3000", "www.nolocalhost.com:80" }, hostGlobalSettings.Cors!.Origins);
+ }
+
+ ///
+ /// Initializing config for cosmosdb_postgresql.
+ ///
+ [TestMethod]
+ public void TestInitForCosmosDBPostgreSql()
+ {
+ string[] args = { "init", "-c", _testRuntimeConfig, "--database-type", "cosmosdb_postgresql",
+ "--connection-string", "localhost:5000", "--authenticate-devmode-requests", "True",
+ "--cors-origin", "localhost:3000,www.nolocalhost.com:80" };
+ Program.Main(args);
+
+ RuntimeConfig? runtimeConfig = TryGetRuntimeConfig(_testRuntimeConfig);
+
+ Assert.IsNotNull(runtimeConfig);
+ Assert.AreEqual(DatabaseType.cosmosdb_postgresql, runtimeConfig.DatabaseType);
+ Assert.IsNull(runtimeConfig.DataSource.CosmosDbPostgreSql);
Assert.IsNotNull(runtimeConfig.RuntimeSettings);
Assert.AreEqual(true, runtimeConfig.HostGlobalSettings.IsDevModeDefaultRequestAuthenticated);
JsonElement jsonRestSettings = (JsonElement)runtimeConfig.RuntimeSettings[GlobalSettingsType.Rest];
diff --git a/src/Cli/test/InitTests.cs b/src/Cli/test/InitTests.cs
index ddc9898b6c..2adeae853d 100644
--- a/src/Cli/test/InitTests.cs
+++ b/src/Cli/test/InitTests.cs
@@ -39,7 +39,46 @@ public void MssqlDatabase()
// Adding runtime settings to the above basic config
string expectedRuntimeConfig = AddPropertiesToJson(
_basicRuntimeConfig,
- GetDefaultTestRuntimeSettingString(DatabaseType.mssql,
+ GetDefaultTestRuntimeSettingString(
+ HostModeType.Development,
+ new List() { "http://localhost:3000", "http://nolocalhost:80" },
+ authenticateDevModeRequest: true)
+ );
+
+ RunTest(options, expectedRuntimeConfig);
+ }
+
+ ///
+ /// Test the simple init config for cosmosdb_postgresql database.
+ ///
+ [TestMethod]
+ public void CosmosDbPostgreSqlDatabase()
+ {
+ InitOptions options = new(
+ databaseType: DatabaseType.cosmosdb_postgresql,
+ connectionString: "testconnectionstring",
+ cosmosDatabase: null,
+ cosmosContainer: null,
+ graphQLSchemaPath: null,
+ hostMode: HostModeType.Development,
+ corsOrigin: new List() { "http://localhost:3000", "http://nolocalhost:80" },
+ config: _testRuntimeConfig,
+ devModeDefaultAuth: "true");
+
+ _basicRuntimeConfig =
+ @"{
+ ""$schema"": ""dab.draft.schema.json"",
+ ""data-source"": {
+ ""database-type"": ""cosmosdb_postgresql"",
+ ""connection-string"": ""testconnectionstring""
+ },
+ ""entities"": {}
+ }";
+
+ // Adding runtime settings to the above basic config
+ string expectedRuntimeConfig = AddPropertiesToJson(
+ _basicRuntimeConfig,
+ GetDefaultTestRuntimeSettingString(
HostModeType.Development,
new List() { "http://localhost:3000", "http://nolocalhost:80" },
authenticateDevModeRequest: true)
@@ -78,7 +117,7 @@ public void TestInitializingConfigWithoutConnectionString()
// Adding runtime settings to the above basic config
string expectedRuntimeConfig = AddPropertiesToJson(
_basicRuntimeConfig,
- GetDefaultTestRuntimeSettingString(DatabaseType.mssql,
+ GetDefaultTestRuntimeSettingString(
HostModeType.Development,
new List() { "http://localhost:3000", "http://nolocalhost:80" },
authenticateDevModeRequest: false)
@@ -87,13 +126,13 @@ public void TestInitializingConfigWithoutConnectionString()
}
///
- /// Test cosmos db specifc settings like cosmos-database, cosmos-container, cosmos-schema file.
+ /// Test cosmosdb_nosql specifc settings like cosmos-database, cosmos-container, cosmos-schema file.
///
[TestMethod]
- public void CosmosDatabase()
+ public void CosmosDbNoSqlDatabase()
{
InitOptions options = new(
- databaseType: DatabaseType.cosmos,
+ databaseType: DatabaseType.cosmosdb_nosql,
connectionString: "testconnectionstring",
cosmosDatabase: "testdb",
cosmosContainer: "testcontainer",
@@ -106,8 +145,13 @@ public void CosmosDatabase()
_basicRuntimeConfig = @"{
""$schema"": ""dab.draft.schema.json"",
""data-source"": {
- ""database-type"": ""cosmos"",
- ""connection-string"": ""testconnectionstring""
+ ""database-type"": ""cosmosdb_nosql"",
+ ""connection-string"": ""testconnectionstring"",
+ ""options"": {
+ ""database"": ""testdb"",
+ ""container"": ""testcontainer"",
+ ""schema"": ""schemafile""
+ }
},
""cosmos"": {
""database"": ""testdb"",
@@ -120,7 +164,7 @@ public void CosmosDatabase()
// Adding runtime settings to the above basic config
string expectedRuntimeConfig = AddPropertiesToJson(
_basicRuntimeConfig,
- GetDefaultTestRuntimeSettingString(DatabaseType.cosmos));
+ GetDefaultTestRuntimeSettingString());
RunTest(options, expectedRuntimeConfig);
}
@@ -133,14 +177,14 @@ public void CosmosDatabase()
[DataRow("testDatabase", null, "", false, DisplayName = "database is provided, container and Schema is null/empty.")]
[DataRow("testDatabase", null, "testSchema", true, DisplayName = "database and schema provided, container is null/empty.")]
[DataTestMethod]
- public void VerifyRequiredOptionsForCosmosDatabase(
+ public void VerifyRequiredOptionsForCosmosDbNoSqlDatabase(
string? cosmosDatabase,
string? cosmosContainer,
string? graphQLSchema,
bool expectedResult)
{
InitOptions options = new(
- databaseType: DatabaseType.cosmos,
+ databaseType: DatabaseType.cosmosdb_nosql,
connectionString: "testconnectionstring",
cosmosDatabase: cosmosDatabase,
cosmosContainer: cosmosContainer,
diff --git a/src/Cli/test/TestHelper.cs b/src/Cli/test/TestHelper.cs
index bbbd4e73a6..e782ee7821 100644
--- a/src/Cli/test/TestHelper.cs
+++ b/src/Cli/test/TestHelper.cs
@@ -417,7 +417,6 @@ public static Process StartDabProcess(string command, string flags)
/// for json comparison in tests.
///
public static string GetDefaultTestRuntimeSettingString(
- DatabaseType databaseType,
HostModeType hostModeType = HostModeType.Production,
IEnumerable? corsOrigins = null,
bool? authenticateDevModeRequest = null)
diff --git a/src/Cli/test/UpdateEntityTests.cs b/src/Cli/test/UpdateEntityTests.cs
index 307d6e38be..87123040b8 100644
--- a/src/Cli/test/UpdateEntityTests.cs
+++ b/src/Cli/test/UpdateEntityTests.cs
@@ -1585,10 +1585,6 @@ public void TestVerifyCanUpdateRelationshipInvalidOptions(string db, string card
RuntimeConfig runtimeConfig = new(
Schema: "schema",
DataSource: new DataSource(Enum.Parse(db)),
- CosmosDb: null,
- MsSql: null,
- PostgreSql: null,
- MySql: null,
RuntimeSettings: new Dictionary(),
Entities: new Dictionary()
);
@@ -1639,10 +1635,6 @@ public void EnsureFailure_AddRelationshipToEntityWithDisabledGraphQL()
RuntimeConfig runtimeConfig = new(
Schema: "schema",
DataSource: new DataSource(DatabaseType.mssql),
- CosmosDb: null,
- MsSql: null,
- PostgreSql: null,
- MySql: null,
RuntimeSettings: new Dictionary(),
Entities: entityMap
);
diff --git a/src/Config/DataSource.cs b/src/Config/DataSource.cs
index 7122edb688..00bd42b79b 100644
--- a/src/Config/DataSource.cs
+++ b/src/Config/DataSource.cs
@@ -1,3 +1,4 @@
+using System.Text.Json;
using System.Text.Json.Serialization;
namespace Azure.DataApiBuilder.Config
@@ -10,14 +11,56 @@ namespace Azure.DataApiBuilder.Config
/// will use to connect to the backend database.
public record DataSource(
[property: JsonPropertyName(DataSource.DATABASE_PROPERTY_NAME)]
- DatabaseType DatabaseType)
+ DatabaseType DatabaseType,
+ [property: JsonPropertyName(DataSource.OPTIONS_PROPERTY_NAME)]
+ object? DbOptions = null)
{
public const string JSON_PROPERTY_NAME = "data-source";
public const string DATABASE_PROPERTY_NAME = "database-type";
public const string CONNSTRING_PROPERTY_NAME = "connection-string";
+ public const string OPTIONS_PROPERTY_NAME = "options";
[property: JsonPropertyName(CONNSTRING_PROPERTY_NAME)]
public string ConnectionString { get; set; } = string.Empty;
+ public CosmosDbOptions? CosmosDbNoSql { get; set; }
+ public CosmosDbPostgreSqlOptions? CosmosDbPostgreSql { get; set; }
+ public MsSqlOptions? MsSql { get; set; }
+ public PostgreSqlOptions? PostgreSql { get; set; }
+ public MySqlOptions? MySql { get; set; }
+
+ ///
+ /// Method to populate the database specific options from the "options"
+ /// section in data-source.
+ ///
+ public void PopulateDbSpecificOptions()
+ {
+ if (DbOptions is null)
+ {
+ return;
+ }
+
+ switch (DatabaseType)
+ {
+ case DatabaseType.cosmos:
+ case DatabaseType.cosmosdb_nosql:
+ CosmosDbNoSql = ((JsonElement)DbOptions).Deserialize(RuntimeConfig.SerializerOptions)!;
+ break;
+ case DatabaseType.mssql:
+ MsSql = ((JsonElement)DbOptions).Deserialize(RuntimeConfig.SerializerOptions)!;
+ break;
+ case DatabaseType.mysql:
+ MySql = ((JsonElement)DbOptions).Deserialize(RuntimeConfig.SerializerOptions)!;
+ break;
+ case DatabaseType.postgresql:
+ PostgreSql = ((JsonElement)DbOptions).Deserialize(RuntimeConfig.SerializerOptions)!;
+ break;
+ case DatabaseType.cosmosdb_postgresql:
+ CosmosDbPostgreSql = ((JsonElement)DbOptions).Deserialize(RuntimeConfig.SerializerOptions)!;
+ break;
+ default:
+ throw new Exception($"DatabaseType: ${DatabaseType} not supported.");
+ }
+ }
}
///
@@ -32,6 +75,9 @@ public record CosmosDbOptions(
string? GraphQLSchema)
{
public const string GRAPHQL_SCHEMA_PATH_PROPERTY_NAME = "schema";
+
+ // Keeping the name as cosmos only to provide backwards compatibility.
+ // This property won't be needed going forward.
public const string JSON_PROPERTY_NAME = nameof(DatabaseType.cosmos);
}
@@ -40,6 +86,7 @@ public record CosmosDbOptions(
///
public record MsSqlOptions(
[property: JsonPropertyName("set-session-context")]
+ [property: JsonIgnore]
bool SetSessionContext = true)
{
public const string JSON_PROPERTY_NAME = nameof(DatabaseType.mssql);
@@ -56,6 +103,11 @@ public record PostgreSqlOptions
public const string JSON_PROPERTY_NAME = nameof(DatabaseType.postgresql);
}
+ ///
+ /// Options for CosmosDb_PostgresSql database.
+ ///
+ public record CosmosDbPostgreSqlOptions { }
+
///
/// Options for MySql database.
///
@@ -70,6 +122,8 @@ public record MySqlOptions
public enum DatabaseType
{
cosmos,
+ cosmosdb_postgresql,
+ cosmosdb_nosql,
mssql,
mysql,
postgresql
diff --git a/src/Config/RuntimeConfig.cs b/src/Config/RuntimeConfig.cs
index a51aa16332..702616c513 100644
--- a/src/Config/RuntimeConfig.cs
+++ b/src/Config/RuntimeConfig.cs
@@ -54,21 +54,12 @@ namespace Azure.DataApiBuilder.Config
public record RuntimeConfig(
[property: JsonPropertyName(RuntimeConfig.SCHEMA_PROPERTY_NAME)] string Schema,
[property: JsonPropertyName(DataSource.JSON_PROPERTY_NAME)] DataSource DataSource,
- [property: JsonPropertyName(CosmosDbOptions.JSON_PROPERTY_NAME)]
- CosmosDbOptions? CosmosDb,
- [property: JsonPropertyName(MsSqlOptions.JSON_PROPERTY_NAME)]
- [property: JsonIgnore]
- MsSqlOptions? MsSql,
- [property: JsonPropertyName(PostgreSqlOptions.JSON_PROPERTY_NAME)]
- [property: JsonIgnore]
- PostgreSqlOptions? PostgreSql,
- [property: JsonPropertyName(MySqlOptions.JSON_PROPERTY_NAME)]
- [property: JsonIgnore]
- MySqlOptions? MySql,
[property: JsonPropertyName(GlobalSettings.JSON_PROPERTY_NAME)]
Dictionary? RuntimeSettings,
[property: JsonPropertyName(Entity.JSON_PROPERTY_NAME)]
- Dictionary Entities)
+ Dictionary Entities,
+ [property: JsonPropertyName(CosmosDbOptions.JSON_PROPERTY_NAME)]
+ CosmosDbOptions? CosmosDb = null)
{
public const string SCHEMA_PROPERTY_NAME = "$schema";
public const string SCHEMA = "dab.draft.schema.json";
@@ -211,6 +202,7 @@ public static bool TryGetDeserializedRuntimeConfig(
deserializedRuntimeConfig = JsonSerializer.Deserialize(configJson, SerializerOptions);
deserializedRuntimeConfig!.DetermineGlobalSettings();
deserializedRuntimeConfig!.DetermineGraphQLEntityNames();
+ deserializedRuntimeConfig.DataSource.PopulateDbSpecificOptions();
return true;
}
catch (Exception ex)
diff --git a/src/Service.Tests/Authorization/AuthorizationHelpers.cs b/src/Service.Tests/Authorization/AuthorizationHelpers.cs
index 7b0f1c5e15..c07d902204 100644
--- a/src/Service.Tests/Authorization/AuthorizationHelpers.cs
+++ b/src/Service.Tests/Authorization/AuthorizationHelpers.cs
@@ -107,10 +107,6 @@ public static RuntimeConfig InitRuntimeConfig(
RuntimeConfig runtimeConfig = new(
Schema: "UnitTestSchema",
- MsSql: null,
- CosmosDb: null,
- PostgreSql: null,
- MySql: null,
DataSource: new DataSource(DatabaseType: DatabaseType.mssql),
RuntimeSettings: new Dictionary(),
Entities: entityMap
diff --git a/src/Service.Tests/Authorization/AuthorizationResolverUnitTests.cs b/src/Service.Tests/Authorization/AuthorizationResolverUnitTests.cs
index 170e6e748a..dd966c653f 100644
--- a/src/Service.Tests/Authorization/AuthorizationResolverUnitTests.cs
+++ b/src/Service.Tests/Authorization/AuthorizationResolverUnitTests.cs
@@ -216,10 +216,6 @@ public void TestRoleAndOperationCombination()
RuntimeConfig runtimeConfig = new(
Schema: "UnitTestSchema",
- MsSql: null,
- CosmosDb: null,
- PostgreSql: null,
- MySql: null,
DataSource: new DataSource(DatabaseType: DatabaseType.mssql),
RuntimeSettings: new Dictionary(),
Entities: entityMap
@@ -452,10 +448,6 @@ public void TestAuthenticatedRoleWhenBothAnonymousAndAuthenticatedAreDefined()
RuntimeConfig runtimeConfig = new(
Schema: "UnitTestSchema",
- MsSql: null,
- CosmosDb: null,
- PostgreSql: null,
- MySql: null,
DataSource: new DataSource(DatabaseType: DatabaseType.mssql),
RuntimeSettings: new Dictionary(),
Entities: entityMap
@@ -1197,10 +1189,6 @@ public static RuntimeConfig InitRuntimeConfig(
RuntimeConfig runtimeConfig = new(
Schema: "UnitTestSchema",
- MsSql: null,
- CosmosDb: null,
- PostgreSql: null,
- MySql: null,
DataSource: new DataSource(DatabaseType: DatabaseType.mssql),
RuntimeSettings: new Dictionary(),
Entities: entityMap
diff --git a/src/Service.Tests/Configuration/AuthenticationConfigValidatorUnitTests.cs b/src/Service.Tests/Configuration/AuthenticationConfigValidatorUnitTests.cs
index 8e77aaf69d..8c97696a32 100644
--- a/src/Service.Tests/Configuration/AuthenticationConfigValidatorUnitTests.cs
+++ b/src/Service.Tests/Configuration/AuthenticationConfigValidatorUnitTests.cs
@@ -160,10 +160,6 @@ private static RuntimeConfig
RuntimeConfig config = new(
Schema: RuntimeConfig.SCHEMA,
DataSource: dataSource,
- CosmosDb: null,
- MsSql: null,
- PostgreSql: null,
- MySql: null,
RuntimeSettings: runtimeSettings,
Entities: entities
);
diff --git a/src/Service.Tests/Configuration/ConfigurationTests.cs b/src/Service.Tests/Configuration/ConfigurationTests.cs
index 04f19dfe00..6a97169093 100644
--- a/src/Service.Tests/Configuration/ConfigurationTests.cs
+++ b/src/Service.Tests/Configuration/ConfigurationTests.cs
@@ -499,15 +499,14 @@ private static void ConfigFileDeserializationValidationHelper(string jsonString)
RuntimeConfig.TryGetDeserializedRuntimeConfig(jsonString, out RuntimeConfig runtimeConfig, logger.Object);
Assert.IsNotNull(runtimeConfig.Schema);
Assert.IsInstanceOfType(runtimeConfig.DataSource, typeof(DataSource));
- Assert.IsTrue(runtimeConfig.CosmosDb == null
- || runtimeConfig.CosmosDb.GetType() == typeof(CosmosDbOptions));
- Assert.IsTrue(runtimeConfig.MsSql == null
- || runtimeConfig.MsSql.GetType() == typeof(MsSqlOptions));
- Assert.IsTrue(runtimeConfig.PostgreSql == null
- || runtimeConfig.PostgreSql.GetType() == typeof(PostgreSqlOptions));
- Assert.IsTrue(runtimeConfig.MySql == null
- || runtimeConfig.MySql.GetType() == typeof(MySqlOptions));
- Assert.IsInstanceOfType(runtimeConfig.Entities, typeof(Dictionary));
+ Assert.IsTrue(runtimeConfig.DataSource.CosmosDbNoSql == null
+ || runtimeConfig.DataSource.CosmosDbNoSql.GetType() == typeof(CosmosDbOptions));
+ Assert.IsTrue(runtimeConfig.DataSource.MsSql == null
+ || runtimeConfig.DataSource.MsSql.GetType() == typeof(MsSqlOptions));
+ Assert.IsTrue(runtimeConfig.DataSource.PostgreSql == null
+ || runtimeConfig.DataSource.PostgreSql.GetType() == typeof(PostgreSqlOptions));
+ Assert.IsTrue(runtimeConfig.DataSource.MySql == null
+ || runtimeConfig.DataSource.MySql.GetType() == typeof(MySqlOptions));
foreach (Entity entity in runtimeConfig.Entities.Values)
{
@@ -1019,10 +1018,6 @@ public static RuntimeConfig InitMinimalRuntimeConfig(Dictionary(),
Entities: entityMap
@@ -206,10 +202,6 @@ public void TestAddingRelationshipWithDisabledGraphQL()
RuntimeConfig runtimeConfig = new(
Schema: "UnitTestSchema",
- MsSql: null,
- CosmosDb: null,
- PostgreSql: null,
- MySql: null,
DataSource: new DataSource(DatabaseType: DatabaseType.mssql),
RuntimeSettings: new Dictionary(),
Entities: entityMap
@@ -257,10 +249,6 @@ string relationshipEntity
RuntimeConfig runtimeConfig = new(
Schema: "UnitTestSchema",
- MsSql: null,
- CosmosDb: null,
- PostgreSql: null,
- MySql: null,
DataSource: new DataSource(DatabaseType: DatabaseType.mssql),
RuntimeSettings: new Dictionary(),
Entities: entityMap
@@ -360,10 +348,6 @@ bool isValidScenario
RuntimeConfig runtimeConfig = new(
Schema: "UnitTestSchema",
- MsSql: null,
- CosmosDb: null,
- PostgreSql: null,
- MySql: null,
DataSource: new DataSource(DatabaseType: DatabaseType.mssql),
RuntimeSettings: new Dictionary(),
Entities: entityMap
@@ -447,10 +431,6 @@ public void TestRelationshipWithNoLinkingObjectAndEitherSourceOrTargetFieldIsNul
RuntimeConfig runtimeConfig = new(
Schema: "UnitTestSchema",
- MsSql: null,
- CosmosDb: null,
- PostgreSql: null,
- MySql: null,
DataSource: new DataSource(DatabaseType: DatabaseType.mssql),
RuntimeSettings: new Dictionary(),
Entities: entityMap
@@ -669,10 +649,6 @@ public void TestOperationValidityAndCasing(string operationName, bool exceptionE
RuntimeConfig runtimeConfig = new(
Schema: "UnitTestSchema",
- MsSql: null,
- CosmosDb: null,
- PostgreSql: null,
- MySql: null,
DataSource: new DataSource(DatabaseType: DatabaseType.mssql),
RuntimeSettings: new Dictionary(),
Entities: entityMap
diff --git a/src/Service/Configurations/RuntimeConfigValidator.cs b/src/Service/Configurations/RuntimeConfigValidator.cs
index 02513f6a40..13c6b62b34 100644
--- a/src/Service/Configurations/RuntimeConfigValidator.cs
+++ b/src/Service/Configurations/RuntimeConfigValidator.cs
@@ -118,23 +118,25 @@ public static void ValidateDatabaseType(
// Schema file should be present in the directory if not specified in the config
// when using cosmos database.
- if (runtimeConfig.DatabaseType is DatabaseType.cosmos)
+ if (runtimeConfig.DatabaseType is DatabaseType.cosmos ||
+ runtimeConfig.DatabaseType is DatabaseType.cosmosdb_nosql)
{
- if (runtimeConfig.CosmosDb is null)
+ CosmosDbOptions cosmosDbNoSql = runtimeConfig.DataSource.CosmosDbNoSql!;
+ if (cosmosDbNoSql is null)
{
- throw new NotSupportedException("CosmosDB is specified but no CosmosDB configuration information has been provided.");
+ throw new NotSupportedException("CosmosDB_NoSql is specified but no CosmosDB_NoSql configuration information has been provided.");
}
- if (string.IsNullOrEmpty(runtimeConfig.CosmosDb.GraphQLSchema))
+ if (string.IsNullOrEmpty(cosmosDbNoSql.GraphQLSchema))
{
- if (string.IsNullOrEmpty(runtimeConfig.CosmosDb.GraphQLSchemaPath))
+ if (string.IsNullOrEmpty(cosmosDbNoSql.GraphQLSchemaPath))
{
- throw new NotSupportedException("No GraphQL schema file has been provided for CosmosDB. Ensure you provide a GraphQL schema containing the GraphQL object types to expose.");
+ throw new NotSupportedException("No GraphQL schema file has been provided for CosmosDB_NoSql. Ensure you provide a GraphQL schema containing the GraphQL object types to expose.");
}
- if (!fileSystem.File.Exists(runtimeConfig.CosmosDb.GraphQLSchemaPath))
+ if (!fileSystem.File.Exists(cosmosDbNoSql.GraphQLSchemaPath))
{
- throw new FileNotFoundException($"The GraphQL schema file at '{runtimeConfig.CosmosDb.GraphQLSchemaPath}' could not be found. Ensure that it is a path relative to the runtime.");
+ throw new FileNotFoundException($"The GraphQL schema file at '{cosmosDbNoSql.GraphQLSchemaPath}' could not be found. Ensure that it is a path relative to the runtime.");
}
}
}