diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
index 04289df..f7a38d2 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/dotnet.yml
@@ -32,6 +32,17 @@ jobs:
-p ${{ secrets.GG_NUGET_SOURCE_USER_PASSWORD }}
--store-password-in-clear-text
+ # Api.Core.SqlDialect
+
+ - name: Restore Api.Core.SqlDialect
+ run: dotnet restore ./src/*/*/SqlDialect.csproj
+
+ - name: Build Api.Core.SqlDialect
+ run: dotnet build ./src/*/*/SqlDialect.csproj --no-restore -c Release
+
+ - name: Pack Api.Core.SqlDialect
+ run: dotnet pack ./src/*/*/SqlDialect.csproj --no-restore -o ~/nuget -c Release
+
# Api.Core.DbEntity
- name: Restore Api.Core.DbEntity
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index d63cc19..54b744e 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -6,7 +6,7 @@
enable
true
true
- $(NoWarn);IDE0130;CA1859
+ $(NoWarn);IDE0130;CA1859;xUnit1044
\ No newline at end of file
diff --git a/src/Infra.SqlApi.sln b/src/Infra.SqlApi.sln
index a489364..6cfd723 100644
--- a/src/Infra.SqlApi.sln
+++ b/src/Infra.SqlApi.sln
@@ -33,6 +33,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Api", "api\Api\Api.csproj",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Provider.Abstractions", "api-abstractions\Provider.Abstractions\Provider.Abstractions.csproj", "{BA79F60A-3473-40A1-846D-707CB5AF96DA}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SqlDialect", "api-core\SqlDialect\SqlDialect.csproj", "{50AA8E70-0E6F-484D-A09A-BF4AE280CEC6}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -87,6 +89,10 @@ Global
{BA79F60A-3473-40A1-846D-707CB5AF96DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA79F60A-3473-40A1-846D-707CB5AF96DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA79F60A-3473-40A1-846D-707CB5AF96DA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {50AA8E70-0E6F-484D-A09A-BF4AE280CEC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {50AA8E70-0E6F-484D-A09A-BF4AE280CEC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {50AA8E70-0E6F-484D-A09A-BF4AE280CEC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {50AA8E70-0E6F-484D-A09A-BF4AE280CEC6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -104,6 +110,7 @@ Global
{A41B8ECF-8AE0-4C25-BF3A-30A63453C6F5} = {5E4F5B1C-D629-4D34-B81A-65F7951AE426}
{B0B8E4C3-C17A-4D6A-90D0-52657FDF0115} = {5E4F5B1C-D629-4D34-B81A-65F7951AE426}
{BA79F60A-3473-40A1-846D-707CB5AF96DA} = {6106F9AD-BAA7-4F24-AD96-17D27BFC486D}
+ {50AA8E70-0E6F-484D-A09A-BF4AE280CEC6} = {53EEC557-BEA5-4E2C-8F1A-F96404E2FDA1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EBFE5C85-563F-4917-95A1-4501407AD8D8}
diff --git a/src/api-abstractions/Abstractions.ExecuteNonQuery/Abstractions.ExecuteNonQuery.csproj b/src/api-abstractions/Abstractions.ExecuteNonQuery/Abstractions.ExecuteNonQuery.csproj
index 62ba36b..a52d0f5 100644
--- a/src/api-abstractions/Abstractions.ExecuteNonQuery/Abstractions.ExecuteNonQuery.csproj
+++ b/src/api-abstractions/Abstractions.ExecuteNonQuery/Abstractions.ExecuteNonQuery.csproj
@@ -4,11 +4,11 @@
net8.0;net9.0
GarageGroup.Infra
GarageGroup.Infra.Sql.Api.Abstractions.ExecuteNonQuery
- 2.3.0
+ 3.0.0
-
+
diff --git a/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj b/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj
index e2fbbff..84e9156 100644
--- a/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj
+++ b/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj
@@ -4,12 +4,12 @@
net8.0;net9.0
GarageGroup.Infra
GarageGroup.Infra.Sql.Api.Abstractions.QueryEntity
- 2.3.0
+ 3.0.0
-
-
+
+
diff --git a/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj b/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj
index 491c91b..2e1af28 100644
--- a/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj
+++ b/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj
@@ -4,12 +4,12 @@
net8.0;net9.0
GarageGroup.Infra
GarageGroup.Infra.Sql.Api.Abstractions.QueryEntitySet
- 2.3.0
+ 3.0.0
-
-
+
+
diff --git a/src/api-abstractions/Abstractions/Abstractions.csproj b/src/api-abstractions/Abstractions/Abstractions.csproj
index 867fba2..179df26 100644
--- a/src/api-abstractions/Abstractions/Abstractions.csproj
+++ b/src/api-abstractions/Abstractions/Abstractions.csproj
@@ -4,14 +4,14 @@
net8.0;net9.0
GarageGroup.Infra
GarageGroup.Infra.Sql.Api.Abstractions
- 2.4.0
+ 3.0.0
-
-
-
+
+
+
\ No newline at end of file
diff --git a/src/api-abstractions/Provider.Abstractions/IDbProvider.T.cs b/src/api-abstractions/Provider.Abstractions/IDbProvider.T.cs
index 947d317..417a1b6 100644
--- a/src/api-abstractions/Provider.Abstractions/IDbProvider.T.cs
+++ b/src/api-abstractions/Provider.Abstractions/IDbProvider.T.cs
@@ -4,7 +4,7 @@
namespace GarageGroup.Infra;
-public interface IDbProvider
+public interface IDbProvider : ISqlDialectProvider
where TDbConnection : DbConnection
{
TDbConnection GetDbConnection();
diff --git a/src/api-abstractions/Provider.Abstractions/ISqlDialectProvider.cs b/src/api-abstractions/Provider.Abstractions/ISqlDialectProvider.cs
new file mode 100644
index 0000000..73e0068
--- /dev/null
+++ b/src/api-abstractions/Provider.Abstractions/ISqlDialectProvider.cs
@@ -0,0 +1,6 @@
+namespace GarageGroup.Infra;
+
+public interface ISqlDialectProvider
+{
+ SqlDialect Dialect { get; }
+}
\ No newline at end of file
diff --git a/src/api-abstractions/Provider.Abstractions/Provider.Abstractions.csproj b/src/api-abstractions/Provider.Abstractions/Provider.Abstractions.csproj
index 81d8ea6..a8090c3 100644
--- a/src/api-abstractions/Provider.Abstractions/Provider.Abstractions.csproj
+++ b/src/api-abstractions/Provider.Abstractions/Provider.Abstractions.csproj
@@ -4,11 +4,12 @@
net8.0;net9.0
GarageGroup.Infra
GarageGroup.Infra.Sql.Api.Provider.Abstractions
- 2.2.0
+ 3.0.0
-
+
+
\ No newline at end of file
diff --git a/src/api-core/DbEntity.Test/DbEntity.Test.csproj b/src/api-core/DbEntity.Test/DbEntity.Test.csproj
index 803d66d..4ced3a4 100644
--- a/src/api-core/DbEntity.Test/DbEntity.Test.csproj
+++ b/src/api-core/DbEntity.Test/DbEntity.Test.csproj
@@ -13,15 +13,15 @@
-
+
-
-
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/src/api-core/DbEntity/DbEntity.csproj b/src/api-core/DbEntity/DbEntity.csproj
index b365d82..3f806fd 100644
--- a/src/api-core/DbEntity/DbEntity.csproj
+++ b/src/api-core/DbEntity/DbEntity.csproj
@@ -4,7 +4,7 @@
net8.0;net9.0
GarageGroup.Infra
GarageGroup.Infra.Sql.Api.Core.DbEntity
- 2.0.1
+ 3.0.0
\ No newline at end of file
diff --git a/src/api-core/DbParameter/DbParameter.csproj b/src/api-core/DbParameter/DbParameter.csproj
index b51c71b..bbee622 100644
--- a/src/api-core/DbParameter/DbParameter.csproj
+++ b/src/api-core/DbParameter/DbParameter.csproj
@@ -4,7 +4,7 @@
net8.0;net9.0
GarageGroup.Infra
GarageGroup.Infra.Sql.Api.Core.DbParameter
- 2.0.1
+ 3.0.0
\ No newline at end of file
diff --git a/src/api-core/DbQuery.Test/DbQuery.Test.csproj b/src/api-core/DbQuery.Test/DbQuery.Test.csproj
index 0b20040..9f796f0 100644
--- a/src/api-core/DbQuery.Test/DbQuery.Test.csproj
+++ b/src/api-core/DbQuery.Test/DbQuery.Test.csproj
@@ -13,13 +13,13 @@
-
-
-
+
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetParameters.cs b/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetParameters.cs
index abf814e..4c4620e 100644
--- a/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetParameters.cs
+++ b/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetParameters.cs
@@ -56,8 +56,11 @@ public static TheoryData> ParametersTestData
{
new(
query: "Some query",
- new("SomeName1", "One"),
- new("SomeName2", null)),
+ parameters:
+ [
+ new("SomeName1", "One"),
+ new("SomeName2", null)
+ ]),
[
new("SomeName1", "One"),
new("SomeName2", null)
diff --git a/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetSqlQuery.cs b/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetSqlQuery.cs
index c3b6203..9cd2fee 100644
--- a/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetSqlQuery.cs
+++ b/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetSqlQuery.cs
@@ -6,26 +6,30 @@ partial class DbQueryTest
{
[Theory]
[MemberData(nameof(SqlQueryTestData))]
- public static void GetFilterSqlQuery_TypesAreInRange_ExpectCorrectSqlQuery(DbQuery source, string expected)
+ public static void GetFilterSqlQuery_TypesAreInRange_ExpectCorrectSqlQuery(
+ DbQuery source, SqlDialect dialect, string expected)
{
- var actual = source.GetSqlQuery();
+ var actual = source.GetSqlQuery(dialect);
Assert.Equal(expected, actual);
}
- public static TheoryData SqlQueryTestData
+ public static TheoryData SqlQueryTestData
=>
new()
{
{
new(null!),
+ SqlDialect.TransactSql,
string.Empty
},
{
new(string.Empty),
+ SqlDialect.PostgreSql,
string.Empty
},
{
new("Some SQL Query"),
+ SqlDialect.TransactSql,
"Some SQL Query"
},
{
@@ -36,6 +40,7 @@ public static TheoryData SqlQueryTestData
new("P1", 15),
new("P2", "Some text")
]),
+ SqlDialect.TransactSql,
string.Empty
},
{
@@ -45,6 +50,7 @@ public static TheoryData SqlQueryTestData
[
new("SomeName", null)
]),
+ (SqlDialect)37,
string.Empty
},
{
@@ -55,6 +61,7 @@ public static TheoryData SqlQueryTestData
new("SomeName1", "One"),
new("SomeName2", null)
]),
+ SqlDialect.PostgreSql,
"Some query"
}
};
diff --git a/src/api-core/DbQuery/DbQuery.cs b/src/api-core/DbQuery/DbQuery.cs
index f8542a0..1ea2f34 100644
--- a/src/api-core/DbQuery/DbQuery.cs
+++ b/src/api-core/DbQuery/DbQuery.cs
@@ -22,7 +22,7 @@ public DbQuery(string query, params FlatArray parameters)
public int? TimeoutInSeconds { get; init; }
- public string GetSqlQuery()
+ public string GetSqlQuery(SqlDialect dialect)
=>
Query;
diff --git a/src/api-core/DbQuery/DbQuery.csproj b/src/api-core/DbQuery/DbQuery.csproj
index ea97d17..4964552 100644
--- a/src/api-core/DbQuery/DbQuery.csproj
+++ b/src/api-core/DbQuery/DbQuery.csproj
@@ -4,11 +4,12 @@
net8.0;net9.0
GarageGroup.Infra
GarageGroup.Infra.Sql.Api.Core.DbQuery
- 2.2.0
+ 3.0.0
-
+
+
diff --git a/src/api-core/DbQuery/IDbQuery.cs b/src/api-core/DbQuery/IDbQuery.cs
index 9e2f897..00dda16 100644
--- a/src/api-core/DbQuery/IDbQuery.cs
+++ b/src/api-core/DbQuery/IDbQuery.cs
@@ -4,7 +4,7 @@ namespace GarageGroup.Infra;
public interface IDbQuery
{
- string GetSqlQuery();
+ string GetSqlQuery(SqlDialect dialect);
FlatArray GetParameters();
diff --git a/src/api-core/SqlDialect/SqlDialect.cs b/src/api-core/SqlDialect/SqlDialect.cs
new file mode 100644
index 0000000..16d1737
--- /dev/null
+++ b/src/api-core/SqlDialect/SqlDialect.cs
@@ -0,0 +1,8 @@
+namespace GarageGroup.Infra;
+
+public enum SqlDialect
+{
+ TransactSql,
+
+ PostgreSql
+}
\ No newline at end of file
diff --git a/src/api-core/SqlDialect/SqlDialect.csproj b/src/api-core/SqlDialect/SqlDialect.csproj
new file mode 100644
index 0000000..888e6fd
--- /dev/null
+++ b/src/api-core/SqlDialect/SqlDialect.csproj
@@ -0,0 +1,10 @@
+
+
+
+ net8.0;net9.0
+ GarageGroup.Infra
+ GarageGroup.Infra.Sql.Api.Core.SqlDialect
+ 1.0.0
+
+
+
\ No newline at end of file
diff --git a/src/api/Api.Test/Api.Test.csproj b/src/api/Api.Test/Api.Test.csproj
index 1c33130..6ca0b93 100644
--- a/src/api/Api.Test/Api.Test.csproj
+++ b/src/api/Api.Test/Api.Test.csproj
@@ -13,15 +13,15 @@
-
+
-
-
-
+
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/src/api/Api.Test/Internal.Stub/StubDbQuery.cs b/src/api/Api.Test/Internal.Stub/StubDbQuery.cs
index af7ae95..467aeb4 100644
--- a/src/api/Api.Test/Internal.Stub/StubDbQuery.cs
+++ b/src/api/Api.Test/Internal.Stub/StubDbQuery.cs
@@ -1,24 +1,25 @@
using System;
+using System.Collections.Generic;
namespace GarageGroup.Infra.Sql.Api.Provider.Api.Test;
internal sealed record class StubDbQuery : IDbQuery
{
- private readonly string query;
+ private readonly IReadOnlyDictionary queries;
private readonly FlatArray parameters;
- internal StubDbQuery(string query, FlatArray parameters)
+ internal StubDbQuery(IReadOnlyDictionary queries, FlatArray parameters)
{
- this.query = query;
+ this.queries = queries;
this.parameters = parameters;
}
public int? TimeoutInSeconds { get; init; }
- public string GetSqlQuery()
+ public string GetSqlQuery(SqlDialect dialect)
=>
- query;
+ queries[dialect];
public FlatArray GetParameters()
=>
diff --git a/src/api/Api.Test/Source.SqlApi/Source.Command.cs b/src/api/Api.Test/Source.SqlApi/Source.Command.cs
index 6a04e67..ff5e841 100644
--- a/src/api/Api.Test/Source.SqlApi/Source.Command.cs
+++ b/src/api/Api.Test/Source.SqlApi/Source.Command.cs
@@ -1,17 +1,21 @@
-using PrimeFuncPack.UnitTest;
+using System.Collections.Generic;
+using PrimeFuncPack.UnitTest;
using Xunit;
namespace GarageGroup.Infra.Sql.Api.Provider.Api.Test;
partial class SqlApiTestSource
{
- public static TheoryData DbCommandTestData
+ public static TheoryData DbCommandTestData
=>
new()
{
{
new(
- query: string.Empty,
+ queries: new Dictionary
+ {
+ [SqlDialect.TransactSql] = string.Empty
+ },
parameters:
[
new("FirstParam", 71),
@@ -22,6 +26,7 @@ public static TheoryData DbCommandTestData
{
TimeoutInSeconds = 51
},
+ SqlDialect.TransactSql,
new()
{
CommandText = string.Empty,
@@ -36,11 +41,15 @@ public static TheoryData DbCommandTestData
},
{
new(
- query: "SELECT * From Product",
+ queries: new Dictionary
+ {
+ [SqlDialect.PostgreSql] = "SELECT * From Product"
+ },
parameters: default)
{
TimeoutInSeconds = null
},
+ SqlDialect.PostgreSql,
new()
{
CommandText = "SELECT * From Product",
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetByte.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetByte.cs
index 2a9622f..1373c0b 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetByte.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetByte.cs
@@ -31,7 +31,7 @@ public static void GetByte_ExceptionIsThrown_ExpectInvalidOperationException()
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 54, "OtherName");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetDateOnly.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetDateOnly.cs
index f7a8968..f2419d9 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetDateOnly.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetDateOnly.cs
@@ -31,7 +31,7 @@ public static void GetDateOnly_ExceptionIsThrown_ExpectInvalidOperationException
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 27, "SomeName");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetDateTime.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetDateTime.cs
index 8d6a164..d6b54bf 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetDateTime.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetDateTime.cs
@@ -31,7 +31,7 @@ public static void GetDateTime_ExceptionIsThrown_ExpectInvalidOperationException
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 681, "SomeField");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetDateTimeOffset.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetDateTimeOffset.cs
index 67ccc6b..48fa0bb 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetDateTimeOffset.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetDateTimeOffset.cs
@@ -31,7 +31,7 @@ public static void GetDateTimeOffset_ExceptionIsThrown_ExpectInvalidOperationExc
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 695, "SomeName");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetDecimal.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetDecimal.cs
index 4ab5647..730f4f6 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetDecimal.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetDecimal.cs
@@ -31,7 +31,7 @@ public static void GetDecimal_ExceptionIsThrown_ExpectInvalidOperationException(
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 73, "SomeName");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetDouble.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetDouble.cs
index 73912b1..0caba93 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetDouble.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetDouble.cs
@@ -31,7 +31,7 @@ public static void GetDouble_ExceptionIsThrown_ExpectInvalidOperationException()
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 73, "SomeName");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetFloat.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetFloat.cs
index 1d42119..29bd325 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetFloat.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetFloat.cs
@@ -31,7 +31,7 @@ public static void GetFloat_ExceptionIsThrown_ExpectInvalidOperationException()
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 73, "SomeName");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetGuid.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetGuid.cs
index 312e452..7a2e2ed 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetGuid.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetGuid.cs
@@ -31,7 +31,7 @@ public static void GetGuid_ExceptionIsThrown_ExpectInvalidOperationException()
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 681, "SomeField");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetInt16.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetInt16.cs
index 1d20544..4f12fc0 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetInt16.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetInt16.cs
@@ -31,7 +31,7 @@ public static void GetInt16_ExceptionIsThrown_ExpectInvalidOperationException()
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 81, "Some Field");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetInt32.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetInt32.cs
index db72bac..a2a4953 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetInt32.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetInt32.cs
@@ -31,7 +31,7 @@ public static void GetInt32_ExceptionIsThrown_ExpectInvalidOperationException()
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 62, "SomeField");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetInt64.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetInt64.cs
index c8ba5d3..9a17449 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetInt64.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetInt64.cs
@@ -31,7 +31,7 @@ public static void GetInt64_ExceptionIsThrown_ExpectInvalidOperationException()
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 36, "SomeField");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.GetString.cs b/src/api/Api.Test/Test.DbValueProvider/Test.GetString.cs
index db454cf..80dbcad 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.GetString.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.GetString.cs
@@ -33,7 +33,7 @@ public static void GetString_ExceptionIsThrown_ExpectInvalidOperationException()
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 25, "Some name");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.IsNull.cs b/src/api/Api.Test/Test.DbValueProvider/Test.IsNull.cs
index ee78422..e066dcb 100644
--- a/src/api/Api.Test/Test.DbValueProvider/Test.IsNull.cs
+++ b/src/api/Api.Test/Test.DbValueProvider/Test.IsNull.cs
@@ -31,7 +31,7 @@ public static void IsNull_ExceptionIsThrown_ExpectInvalidOperationException()
using var dbDataReader = new StubDbDataReader(mockDbDataReader.Object);
var dbValueProvider = new DbValueProvider(dbDataReader, 23, "Some name");
-
+
var ex = Assert.Throws(Test);
Assert.Same(sourceException, ex.InnerException);
diff --git a/src/api/Api.Test/Test.SqlApi/SqlApiTest.cs b/src/api/Api.Test/Test.SqlApi/SqlApiTest.cs
index 769687e..7faf561 100644
--- a/src/api/Api.Test/Test.SqlApi/SqlApiTest.cs
+++ b/src/api/Api.Test/Test.SqlApi/SqlApiTest.cs
@@ -11,7 +11,11 @@ public static partial class SqlApiTest
private static readonly StubDbQuery SomeDbQuery
=
new(
- query: "Some SQL",
+ queries: new Dictionary
+ {
+ [SqlDialect.TransactSql] = "Some TransactSql",
+ [SqlDialect.PostgreSql] = "Some PostgreSql"
+ },
parameters:
[
new("First", 3781.5m),
@@ -84,16 +88,16 @@ private static Mock CreateMockDbConnection(Exception exceptio
}
private static Mock> CreateMockDbProvider(
- DbConnection dbConnection, DbCommand dbCommand, Action?>? dbParametersCallback = null)
+ SqlDialect dialect, DbConnection dbConnection, DbCommand dbCommand, Action?>? dbParametersCallback = null)
{
var mock = new Mock>();
- _ = mock.Setup(db => db.GetDbConnection()).Returns(dbConnection);
+ _ = mock.Setup(static db => db.GetDbConnection()).Returns(dbConnection);
var m = mock.Setup(
db => db.GetDbCommand(
It.IsAny(), It.IsAny(), It.IsAny?>(), It.IsAny()))
- .Returns(dbCommand);
+ .Returns(dbCommand);
if (dbParametersCallback is not null)
{
@@ -101,6 +105,8 @@ private static Mock> CreateMockDbProvider(
(_, _, actual, _) => dbParametersCallback.Invoke(actual));
}
+ _ = mock.SetupGet(static db => db.Dialect).Returns(dialect);
+
return mock;
}
}
\ No newline at end of file
diff --git a/src/api/Api.Test/Test.SqlApi/Test.ExecuteNonQuery.cs b/src/api/Api.Test/Test.SqlApi/Test.ExecuteNonQuery.cs
index 9ca74f0..839324b 100644
--- a/src/api/Api.Test/Test.SqlApi/Test.ExecuteNonQuery.cs
+++ b/src/api/Api.Test/Test.SqlApi/Test.ExecuteNonQuery.cs
@@ -19,7 +19,7 @@ public static async Task ExecuteNonQueryAsync_QueryIsNull_ExpectArgumentNullExce
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: false);
@@ -40,7 +40,7 @@ public static void ExecuteNonQueryAsync_CancellationTokenIsCanceled_ExpectCancel
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: true);
@@ -57,7 +57,7 @@ public static async Task ExecuteNonQueryAsync_CancellationTokenIsNotCanceled_Exp
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.ExecuteNonQueryAsync(SomeDbQuery, default);
@@ -67,14 +67,14 @@ public static async Task ExecuteNonQueryAsync_CancellationTokenIsNotCanceled_Exp
[Theory]
[MemberData(nameof(SqlApiTestSource.DbCommandTestData), MemberType = typeof(SqlApiTestSource))]
internal static async Task ExecuteNonQueryAsync_CancellationTokenIsNotCanceled_ExpectDbCommandGetCalledOnce(
- StubDbQuery dbQuery, StubDbCommandRequest expectedRequest)
+ StubDbQuery dbQuery, SqlDialect dialect, StubDbCommandRequest expectedRequest)
{
using var dbCommand = CreateDbCommand(73);
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand, OnCommandGet);
+ var mockDbProvider = CreateMockDbProvider(dialect, dbConnection, dbCommand, OnCommandGet);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.ExecuteNonQueryAsync(dbQuery, default);
@@ -100,7 +100,7 @@ public static async Task ExecuteNonQueryAsync_CancellationTokenIsNotCanceled_Exp
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.ExecuteNonQueryAsync(SomeDbQuery, default);
diff --git a/src/api/Api.Test/Test.SqlApi/Test.ExecuteNonQueryOrFailure.cs b/src/api/Api.Test/Test.SqlApi/Test.ExecuteNonQueryOrFailure.cs
index 8f0d893..3369812 100644
--- a/src/api/Api.Test/Test.SqlApi/Test.ExecuteNonQueryOrFailure.cs
+++ b/src/api/Api.Test/Test.SqlApi/Test.ExecuteNonQueryOrFailure.cs
@@ -19,7 +19,7 @@ public static async Task ExecuteNonQueryOrFailureAsync_QueryIsNull_ExpectArgumen
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: false);
@@ -40,7 +40,7 @@ public static void ExecuteNonQueryOrFailureAsync_CancellationTokenIsCanceled_Exp
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
@@ -58,7 +58,7 @@ public static async Task ExecuteNonQueryOrFailureAsync_CancellationTokenIsNotCan
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: false);
@@ -76,7 +76,7 @@ public static async Task ExecuteNonQueryOrFailureAsync_ConnectionThrowsException
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
using var dbCommand = CreateDbCommand(347);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
@@ -89,14 +89,14 @@ public static async Task ExecuteNonQueryOrFailureAsync_ConnectionThrowsException
[Theory]
[MemberData(nameof(SqlApiTestSource.DbCommandTestData), MemberType = typeof(SqlApiTestSource))]
internal static async Task ExecuteNonQueryOrFailureAsync_ConnectionDoesNotThrowException_ExpectDbCommandGetCalledOnce(
- StubDbQuery dbQuery, StubDbCommandRequest expectedRequest)
+ StubDbQuery dbQuery, SqlDialect dialect, StubDbCommandRequest expectedRequest)
{
using var dbCommand = CreateDbCommand(573);
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand, OnCommandGet);
+ var mockDbProvider = CreateMockDbProvider(dialect, dbConnection, dbCommand, OnCommandGet);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.ExecuteNonQueryOrFailureAsync(dbQuery, default);
@@ -119,7 +119,7 @@ public static async Task ExecuteNonQueryOrFailureAsync_CommandThrowsException_Ex
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.ExecuteNonQueryOrFailureAsync(SomeDbQuery, default);
@@ -140,7 +140,7 @@ public static async Task ExecuteNonQueryOrFailureAsync_CommandDoesNotThrowExcept
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.ExecuteNonQueryOrFailureAsync(SomeDbQuery, default);
diff --git a/src/api/Api.Test/Test.SqlApi/Test.Ping.cs b/src/api/Api.Test/Test.SqlApi/Test.Ping.cs
index 4f67f54..4e0b817 100644
--- a/src/api/Api.Test/Test.SqlApi/Test.Ping.cs
+++ b/src/api/Api.Test/Test.SqlApi/Test.Ping.cs
@@ -18,7 +18,7 @@ public static void PingAsync_CancellationTokenIsCanceled_ExpectCanceledValueTask
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: true);
@@ -35,7 +35,7 @@ public static async Task PingAsync_CancellationTokenIsNotCanceled_ExpectConnecti
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: false);
@@ -53,7 +53,7 @@ public static async Task PingAsync_ConnectionThrowsException_ExpectFailure()
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
using var dbCommand = CreateDbCommand(57);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
@@ -63,15 +63,19 @@ public static async Task PingAsync_ConnectionThrowsException_ExpectFailure()
Assert.StrictEqual(expected, actual);
}
- [Fact]
- public static async Task PingAsync_ConnectionDoesNotThrowException_ExpectDbCommandGetCalledOnce()
+ [Theory]
+ [InlineData(SqlDialect.TransactSql)]
+ [InlineData(SqlDialect.PostgreSql)]
+ [InlineData((SqlDialect)371)]
+ public static async Task PingAsync_ConnectionDoesNotThrowException_ExpectDbCommandGetCalledOnce(
+ SqlDialect dialect)
{
using var dbCommand = CreateDbCommand(10);
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(dialect, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.PingAsync(default, default);
@@ -87,7 +91,7 @@ public static async Task PingAsync_CommandThrowsException_ExpectFailure()
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.PingAsync(default, default);
@@ -108,7 +112,7 @@ public static async Task PingAsync_CommandDoesNotThrowException_ExpectSuccessRes
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.PingAsync(default, default);
diff --git a/src/api/Api.Test/Test.SqlApi/Test.QueryEntity.cs b/src/api/Api.Test/Test.SqlApi/Test.QueryEntity.cs
index bdbce5c..cde2eda 100644
--- a/src/api/Api.Test/Test.SqlApi/Test.QueryEntity.cs
+++ b/src/api/Api.Test/Test.SqlApi/Test.QueryEntity.cs
@@ -19,7 +19,7 @@ public static async Task QueryEntityOrAbsentAsync_QueryIsNull_ExpectArgumentNull
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: false);
@@ -41,7 +41,7 @@ public static void QueryEntityOrAbsentAsync_CancellationTokenIsCanceled_ExpectCa
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: true);
@@ -59,7 +59,7 @@ public static async Task QueryEntityOrAbsentAsync_CancellationTokenIsNotCanceled
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.QueryEntityOrAbsentAsync(SomeDbQuery, default);
@@ -69,7 +69,7 @@ public static async Task QueryEntityOrAbsentAsync_CancellationTokenIsNotCanceled
[Theory]
[MemberData(nameof(SqlApiTestSource.DbCommandTestData), MemberType = typeof(SqlApiTestSource))]
internal static async Task QueryEntityOrAbsentAsync_CancellationTokenIsNotCanceled_ExpectDbCommandGetCalledOnce(
- StubDbQuery dbQuery, StubDbCommandRequest expectedRequest)
+ StubDbQuery dbQuery, SqlDialect dialect, StubDbCommandRequest expectedRequest)
{
using var dbDataReader = CreateDbDataReader(5, "Field01", "Field02");
using var dbCommand = CreateDbCommand(dbDataReader);
@@ -77,7 +77,7 @@ internal static async Task QueryEntityOrAbsentAsync_CancellationTokenIsNotCancel
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand, OnCommandGet);
+ var mockDbProvider = CreateMockDbProvider(dialect, dbConnection, dbCommand, OnCommandGet);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.QueryEntityOrAbsentAsync(dbQuery, default);
@@ -100,7 +100,7 @@ public static async Task QueryEntityOrAbsentAsync_DbDataReaderIsEmpty_ExpectAbse
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntityOrAbsentAsync(SomeDbQuery, default);
@@ -118,7 +118,7 @@ public static async Task QueryEntityOrAbsentAsync_DbDataReaderIsNotEmpty_ExpectS
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntityOrAbsentAsync(SomeDbQuery, default);
diff --git a/src/api/Api.Test/Test.SqlApi/Test.QueryEntityOrFailure.cs b/src/api/Api.Test/Test.SqlApi/Test.QueryEntityOrFailure.cs
index b33a7b4..e3eeac8 100644
--- a/src/api/Api.Test/Test.SqlApi/Test.QueryEntityOrFailure.cs
+++ b/src/api/Api.Test/Test.SqlApi/Test.QueryEntityOrFailure.cs
@@ -19,7 +19,7 @@ public static async Task QueryEntityOrFailureAsync_QueryIsNull_ExpectArgumentNul
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: false);
@@ -41,7 +41,7 @@ public static void QueryEntityOrFailureAsync_CancellationTokenIsCanceled_ExpectC
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: true);
@@ -59,7 +59,7 @@ public static async Task QueryEntityOrFailureAsync_CancellationTokenIsNotCancele
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.QueryEntityOrFailureAsync(SomeDbQuery, default);
@@ -77,7 +77,7 @@ public static async Task QueryEntityOrFailureAsync_ConnectionThrowsException_Exp
using var dbDataReader = CreateDbDataReader(7, SomeFieldNames);
using var dbCommand = CreateDbCommand(dbDataReader);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntityOrFailureAsync(SomeDbQuery, default);
@@ -93,7 +93,7 @@ public static async Task QueryEntityOrFailureAsync_ConnectionThrowsException_Exp
[Theory]
[MemberData(nameof(SqlApiTestSource.DbCommandTestData), MemberType = typeof(SqlApiTestSource))]
internal static async Task QueryEntityOrFailureAsync_ConnectionDoesNotThrowException_ExpectDbCommandGetCalledOnce(
- StubDbQuery dbQuery, StubDbCommandRequest expectedRequest)
+ StubDbQuery dbQuery, SqlDialect dialect, StubDbCommandRequest expectedRequest)
{
using var dbDataReader = CreateDbDataReader(5, "Field01", "Field02");
using var dbCommand = CreateDbCommand(dbDataReader);
@@ -101,7 +101,7 @@ internal static async Task QueryEntityOrFailureAsync_ConnectionDoesNotThrowExcep
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand, OnCommandGet);
+ var mockDbProvider = CreateMockDbProvider(dialect, dbConnection, dbCommand, OnCommandGet);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.QueryEntityOrFailureAsync(dbQuery, default);
@@ -124,7 +124,7 @@ public static async Task QueryEntityOrFailureAsync_CommandThrowsException_Expect
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntityOrFailureAsync(SomeDbQuery, default);
@@ -145,7 +145,7 @@ public static async Task QueryEntityOrFailureAsync_DbDataReaderIsEmpty_ExpectAbs
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntityOrFailureAsync(SomeDbQuery, default);
@@ -163,7 +163,7 @@ public static async Task QueryEntityOrFailureAsync_DbDataReaderIsNotEmpty_Expect
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntityOrFailureAsync(SomeDbQuery, default);
diff --git a/src/api/Api.Test/Test.SqlApi/Test.QueryEntitySet.cs b/src/api/Api.Test/Test.SqlApi/Test.QueryEntitySet.cs
index b6b1f87..32c96a6 100644
--- a/src/api/Api.Test/Test.SqlApi/Test.QueryEntitySet.cs
+++ b/src/api/Api.Test/Test.SqlApi/Test.QueryEntitySet.cs
@@ -19,7 +19,7 @@ public static async Task QueryEntitySetAsync_QueryIsNull_ExpectArgumentNullExcep
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: false);
@@ -41,7 +41,7 @@ public static void QueryEntitySetAsync_CancellationTokenIsCanceled_ExpectCancele
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: true);
@@ -59,7 +59,7 @@ public static async Task QueryEntitySetAsync_CancellationTokenIsNotCanceled_Expe
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.QueryEntitySetAsync(SomeDbQuery, default);
@@ -69,7 +69,7 @@ public static async Task QueryEntitySetAsync_CancellationTokenIsNotCanceled_Expe
[Theory]
[MemberData(nameof(SqlApiTestSource.DbCommandTestData), MemberType = typeof(SqlApiTestSource))]
internal static async Task QueryEntitySetAsync_CancellationTokenIsNotCanceled_ExpectDbCommandGetCalledOnce(
- StubDbQuery dbQuery, StubDbCommandRequest expectedRequest)
+ StubDbQuery dbQuery, SqlDialect dialect, StubDbCommandRequest expectedRequest)
{
using var dbDataReader = CreateDbDataReader(3, "Param01", "Param02");
using var dbCommand = CreateDbCommand(dbDataReader);
@@ -77,7 +77,7 @@ internal static async Task QueryEntitySetAsync_CancellationTokenIsNotCanceled_Ex
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand, OnCommandGet);
+ var mockDbProvider = CreateMockDbProvider(dialect, dbConnection, dbCommand, OnCommandGet);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.QueryEntitySetAsync(dbQuery, default);
@@ -103,7 +103,7 @@ public static async Task QueryEntitySetAsync_CancellationTokenIsNotCanceled_Expe
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.PostgreSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntitySetAsync(SomeDbQuery, default);
diff --git a/src/api/Api.Test/Test.SqlApi/Test.QueryEntitySetOrFailure.cs b/src/api/Api.Test/Test.SqlApi/Test.QueryEntitySetOrFailure.cs
index 7ca7a97..6e8b65a 100644
--- a/src/api/Api.Test/Test.SqlApi/Test.QueryEntitySetOrFailure.cs
+++ b/src/api/Api.Test/Test.SqlApi/Test.QueryEntitySetOrFailure.cs
@@ -19,7 +19,7 @@ public static async Task QueryEntitySetOrFailureAsync_QueryIsNull_ExpectArgument
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: false);
@@ -41,7 +41,7 @@ public static void QueryEntitySetOrFailureAsync_CancellationTokenIsCanceled_Expe
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var cancellationToken = new CancellationToken(canceled: true);
@@ -59,7 +59,7 @@ public static async Task QueryEntitySetOrFailureAsync_CancellationTokenIsNotCanc
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.QueryEntitySetOrFailureAsync(SomeDbQuery, default);
@@ -77,7 +77,7 @@ public static async Task QueryEntitySetOrFailureAsync_ConnectionThrowsException_
using var dbDataReader = CreateDbDataReader(3, SomeFieldNames);
using var dbCommand = CreateDbCommand(dbDataReader);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntitySetOrFailureAsync(SomeDbQuery, default);
@@ -89,7 +89,7 @@ public static async Task QueryEntitySetOrFailureAsync_ConnectionThrowsException_
[Theory]
[MemberData(nameof(SqlApiTestSource.DbCommandTestData), MemberType = typeof(SqlApiTestSource))]
internal static async Task QueryEntitySetOrFailureAsync_ConnectionDoesNotThrowException_ExpectDbCommandGetCalledOnce(
- StubDbQuery dbQuery, StubDbCommandRequest expectedRequest)
+ StubDbQuery dbQuery, SqlDialect dialect, StubDbCommandRequest expectedRequest)
{
using var dbDataReader = CreateDbDataReader(3, "Param01", "Param02");
using var dbCommand = CreateDbCommand(dbDataReader);
@@ -97,7 +97,7 @@ internal static async Task QueryEntitySetOrFailureAsync_ConnectionDoesNotThrowEx
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand, OnCommandGet);
+ var mockDbProvider = CreateMockDbProvider(dialect, dbConnection, dbCommand, OnCommandGet);
var sqlApi = new SqlApi(mockDbProvider.Object);
_ = await sqlApi.QueryEntitySetOrFailureAsync(dbQuery, default);
@@ -120,7 +120,7 @@ public static async Task QueryEntitySetOrFailureAsync_CommandThrowsException_Exp
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntitySetOrFailureAsync(SomeDbQuery, default);
@@ -141,7 +141,7 @@ public static async Task QueryEntitySetOrFailureAsync_CommandDoesNotThrowExcepti
var mockDbConnection = CreateMockDbConnection(dbCommand);
using var dbConnection = new StubDbConnection(mockDbConnection.Object);
- var mockDbProvider = CreateMockDbProvider(dbConnection, dbCommand);
+ var mockDbProvider = CreateMockDbProvider(SqlDialect.TransactSql, dbConnection, dbCommand);
var sqlApi = new SqlApi(mockDbProvider.Object);
var actual = await sqlApi.QueryEntitySetOrFailureAsync(SomeDbQuery, default);
diff --git a/src/api/Api/Api.csproj b/src/api/Api/Api.csproj
index 81211af..1b04d63 100644
--- a/src/api/Api/Api.csproj
+++ b/src/api/Api/Api.csproj
@@ -4,13 +4,13 @@
net8.0;net9.0
GarageGroup.Infra
GarageGroup.Infra.Sql.Api
- 2.7.0
+ 3.0.0
-
-
-
+
+
+
diff --git a/src/api/Api/SqlApi/SqlApi.cs b/src/api/Api/SqlApi/SqlApi.cs
index 942f96b..a5d4ead 100644
--- a/src/api/Api/SqlApi/SqlApi.cs
+++ b/src/api/Api/SqlApi/SqlApi.cs
@@ -17,7 +17,7 @@ internal sealed partial class SqlApi : ISqlApi
internal SqlApi(IDbProvider dbProvider, ILoggerFactory? loggerFactory = null)
{
this.dbProvider = dbProvider;
- logger = loggerFactory?.CreateLogger>();
+ logger = loggerFactory?.CreateLogger("GarageGroup.Infra.SqlApi");
}
private DbCommand CreateDbCommand(TDbConnection dbConnection, IDbQuery query)
@@ -49,7 +49,7 @@ private DbCommand CreateDbCommand(TDbConnection dbConnection, IDbQuery query)
parameterLogBuilder.Append(dbParameter.Name).Append(": '").Append(dbParameter.Value).Append('\'');
}
- var commandText = query.GetSqlQuery();
+ var commandText = query.GetSqlQuery(dbProvider.Dialect);
logger?.LogDebug("SQL: {sql}. Parameters: {parameters}", commandText, parameterLogBuilder?.ToString());
return dbProvider.GetDbCommand(dbConnection, commandText, dbNameParameters.Values, query.TimeoutInSeconds);
diff --git a/src/api/Api/SqlApiDependency.cs b/src/api/Api/SqlApiDependency.cs
index 96747dc..9099bcb 100644
--- a/src/api/Api/SqlApiDependency.cs
+++ b/src/api/Api/SqlApiDependency.cs
@@ -31,24 +31,29 @@ public static Dependency UseSqlApi(this Dependency(CreateSqlApi);
+ return dependency.Map(InnerCreateSqlApi);
- ILoggerFactory? GetLoggerFactory(IServiceProvider serviceProvider)
- =>
- useLogging ? serviceProvider.GetServiceOrAbsent().OrDefault() : null;
+ SqlApi InnerCreateSqlApi(IServiceProvider serviceProvider, IDbProvider dbProvider)
+ {
+ ArgumentNullException.ThrowIfNull(serviceProvider);
+ ArgumentNullException.ThrowIfNull(dbProvider);
+
+ return new(
+ dbProvider: dbProvider,
+ loggerFactory: useLogging ? serviceProvider.GetServiceOrThrow() : null);
+ }
}
public static Dependency UseSqlApi(this Dependency, ILoggerFactory> dependency)
where TDbConnection : DbConnection
{
ArgumentNullException.ThrowIfNull(dependency);
- return dependency.Fold(CreateSqlApi);
- }
+ return dependency.Fold(InnerCreateSqlApi);
- private static SqlApi CreateSqlApi(IDbProvider dbProvider, ILoggerFactory? loggerFactory)
- where TDbConnection : DbConnection
- {
- ArgumentNullException.ThrowIfNull(dbProvider);
- return new(dbProvider, loggerFactory);
+ static SqlApi InnerCreateSqlApi(IDbProvider dbProvider, ILoggerFactory? loggerFactory)
+ {
+ ArgumentNullException.ThrowIfNull(dbProvider);
+ return new(dbProvider, loggerFactory);
+ }
}
}
\ No newline at end of file