From 4196a9c3107a12019e78612e510445ee368c93f1 Mon Sep 17 00:00:00 2001 From: pmosk Date: Fri, 1 Nov 2024 15:10:13 +0200 Subject: [PATCH 1/2] Use dialects. Draft --- .github/workflows/dotnet.yml | 15 +++++++-- src/Directory.Build.props | 1 + src/Infra.SqlApi.sln | 7 ++++ .../Abstractions.ExecuteNonQuery.csproj | 6 ++-- .../Abstractions.QueryEntity.csproj | 8 ++--- .../Abstractions.QueryEntitySet.csproj | 8 ++--- .../Abstractions/Abstractions.csproj | 10 +++--- src/api-abstractions/Abstractions/ISqlApi.cs | 4 +-- .../Provider.Abstractions/IDbProvider.T.cs | 2 +- .../Provider.Abstractions/IDbProvider.cs | 12 ------- .../ISqlDialectProvider.cs | 6 ++++ .../Provider.Abstractions.csproj | 7 ++-- .../DbEntity.Test/DbEntity.Test.csproj | 12 +++---- .../DbEntity.Test/Test.DbValue/DbValueTest.cs | 4 +-- src/api-core/DbEntity/DbEntity.csproj | 4 +-- src/api-core/DbParameter/DbParameter.csproj | 4 +-- src/api-core/DbQuery.Test/DbQuery.Test.csproj | 10 +++--- .../DbQuery.Test/Test.DbQuery/DbQueryTest.cs | 4 +-- .../Test.DbQuery/Test.GetParameters.cs | 33 ++++++++++--------- .../Test.DbQuery/Test.GetSqlQuery.cs | 31 ++++++++++------- src/api-core/DbQuery/DbQuery.cs | 4 +-- src/api-core/DbQuery/DbQuery.csproj | 9 ++--- src/api-core/DbQuery/IDbQuery.cs | 2 +- src/api-core/SqlDialect/SqlDialect.cs | 8 +++++ src/api-core/SqlDialect/SqlDialect.csproj | 10 ++++++ src/api/Api.Test/Api.Test.csproj | 12 +++---- src/api/Api.Test/Internal.Stub/StubDbQuery.cs | 11 ++++--- .../Api.Test/Internal.Stub/StubException.cs | 7 +--- .../Api.Test/Source.SqlApi/Source.Command.cs | 21 ++++++++---- .../Source.SqlApi/SqlApiTestSource.cs | 4 +-- src/api/Api.Test/Test.DbItem/Test.Fields.cs | 2 +- .../DbValueProviderTest.cs | 4 +-- .../Api.Test/Test.DbValueProvider/Test.Get.cs | 1 - .../Test.DbValueProvider/Test.GetByte.cs | 2 +- .../Test.DbValueProvider/Test.GetDateOnly.cs | 2 +- .../Test.DbValueProvider/Test.GetDateTime.cs | 2 +- .../Test.GetDateTimeOffset.cs | 2 +- .../Test.DbValueProvider/Test.GetDecimal.cs | 2 +- .../Test.DbValueProvider/Test.GetDouble.cs | 2 +- .../Test.DbValueProvider/Test.GetFloat.cs | 2 +- .../Test.DbValueProvider/Test.GetGuid.cs | 2 +- .../Test.DbValueProvider/Test.GetInt16.cs | 2 +- .../Test.DbValueProvider/Test.GetInt32.cs | 2 +- .../Test.DbValueProvider/Test.GetInt64.cs | 2 +- .../Test.DbValueProvider/Test.GetString.cs | 2 +- .../Test.DbValueProvider/Test.IsNull.cs | 2 +- src/api/Api.Test/Test.SqlApi/SqlApiTest.cs | 18 ++++++---- .../Test.SqlApi/Test.ExecuteNonQuery.cs | 12 +++---- .../Test.ExecuteNonQueryOrFailure.cs | 16 ++++----- src/api/Api.Test/Test.SqlApi/Test.Ping.cs | 20 ++++++----- .../Api.Test/Test.SqlApi/Test.QueryEntity.cs | 14 ++++---- .../Test.SqlApi/Test.QueryEntityOrFailure.cs | 18 +++++----- .../Test.SqlApi/Test.QueryEntitySet.cs | 12 +++---- .../Test.QueryEntitySetOrFailure.cs | 16 ++++----- src/api/Api/Api.csproj | 12 +++---- src/api/Api/SqlApi/SqlApi.cs | 4 +-- src/api/Api/SqlApiDependency.cs | 27 ++++++++------- 57 files changed, 264 insertions(+), 214 deletions(-) delete mode 100644 src/api-abstractions/Provider.Abstractions/IDbProvider.cs create mode 100644 src/api-abstractions/Provider.Abstractions/ISqlDialectProvider.cs create mode 100644 src/api-core/SqlDialect/SqlDialect.cs create mode 100644 src/api-core/SqlDialect/SqlDialect.csproj diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 44ce140..b258776 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -14,9 +14,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: | - 7.0.x - 8.0.x + dotnet-version: 8.0.x # Add NuGet Sources @@ -34,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 43512fd..2b768ee 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -6,6 +6,7 @@ enable true true + $(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 6be1add..2fb864e 100644 --- a/src/api-abstractions/Abstractions.ExecuteNonQuery/Abstractions.ExecuteNonQuery.csproj +++ b/src/api-abstractions/Abstractions.ExecuteNonQuery/Abstractions.ExecuteNonQuery.csproj @@ -1,14 +1,14 @@ - net7.0;net8.0 + net8.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Abstractions.ExecuteNonQuery - 2.2.0 + 3.0.0-build.2 - + diff --git a/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj b/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj index d2a8c15..1d11133 100644 --- a/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj +++ b/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj @@ -1,15 +1,15 @@ - net7.0;net8.0 + net8.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Abstractions.QueryEntity - 2.2.0 + 3.0.0-build.2 - - + + diff --git a/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj b/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj index cc38d20..a612157 100644 --- a/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj +++ b/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj @@ -1,15 +1,15 @@ - net7.0;net8.0 + net8.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Abstractions.QueryEntitySet - 2.2.0 + 3.0.0-build.2 - - + + diff --git a/src/api-abstractions/Abstractions/Abstractions.csproj b/src/api-abstractions/Abstractions/Abstractions.csproj index 720ed74..16424f7 100644 --- a/src/api-abstractions/Abstractions/Abstractions.csproj +++ b/src/api-abstractions/Abstractions/Abstractions.csproj @@ -1,17 +1,17 @@ - net7.0;net8.0 + net8.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Abstractions - 2.3.0 + 3.0.0-build.2 - - - + + + \ No newline at end of file diff --git a/src/api-abstractions/Abstractions/ISqlApi.cs b/src/api-abstractions/Abstractions/ISqlApi.cs index 88143c8..18c17de 100644 --- a/src/api-abstractions/Abstractions/ISqlApi.cs +++ b/src/api-abstractions/Abstractions/ISqlApi.cs @@ -1,5 +1,3 @@ namespace GarageGroup.Infra; -public interface ISqlApi : ISqlExecuteNonQuerySupplier, ISqlQueryEntitySupplier, ISqlQueryEntitySetSupplier, IPingSupplier -{ -} \ No newline at end of file +public interface ISqlApi : ISqlExecuteNonQuerySupplier, ISqlQueryEntitySupplier, ISqlQueryEntitySetSupplier, IPingSupplier; \ 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/IDbProvider.cs b/src/api-abstractions/Provider.Abstractions/IDbProvider.cs deleted file mode 100644 index 9f28232..0000000 --- a/src/api-abstractions/Provider.Abstractions/IDbProvider.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Data.Common; - -namespace GarageGroup.Infra; - -[Obsolete("This type is obsolete. Use IDbProvider instead")] -public interface IDbProvider -{ - DbConnection GetDbConnection(); - - object GetSqlParameter(DbParameter parameter); -} \ No newline at end of file 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 c8d4b5f..9738df9 100644 --- a/src/api-abstractions/Provider.Abstractions/Provider.Abstractions.csproj +++ b/src/api-abstractions/Provider.Abstractions/Provider.Abstractions.csproj @@ -1,14 +1,15 @@ - net7.0;net8.0 + net8.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Provider.Abstractions - 2.1.0 + 3.0.0-build.2 - + + \ 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 3523ea3..2818702 100644 --- a/src/api-core/DbEntity.Test/DbEntity.Test.csproj +++ b/src/api-core/DbEntity.Test/DbEntity.Test.csproj @@ -1,7 +1,7 @@ - net7.0;net8.0 + net8.0 true false GarageGroup.Infra.Sql.Api.Core.Test @@ -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.Test/Test.DbValue/DbValueTest.cs b/src/api-core/DbEntity.Test/Test.DbValue/DbValueTest.cs index c9348e7..49e7a85 100644 --- a/src/api-core/DbEntity.Test/Test.DbValue/DbValueTest.cs +++ b/src/api-core/DbEntity.Test/Test.DbValue/DbValueTest.cs @@ -1,5 +1,3 @@ namespace GarageGroup.Infra.Sql.Api.Core.Test; -public static partial class DbValueTest -{ -} \ No newline at end of file +public static partial class DbValueTest; \ No newline at end of file diff --git a/src/api-core/DbEntity/DbEntity.csproj b/src/api-core/DbEntity/DbEntity.csproj index 368a3b5..5c9995a 100644 --- a/src/api-core/DbEntity/DbEntity.csproj +++ b/src/api-core/DbEntity/DbEntity.csproj @@ -1,10 +1,10 @@ - net7.0;net8.0 + net8.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Core.DbEntity - 2.0.0 + 3.0.0-build.1 \ No newline at end of file diff --git a/src/api-core/DbParameter/DbParameter.csproj b/src/api-core/DbParameter/DbParameter.csproj index 5e0b0cb..89521cf 100644 --- a/src/api-core/DbParameter/DbParameter.csproj +++ b/src/api-core/DbParameter/DbParameter.csproj @@ -1,10 +1,10 @@ - net7.0;net8.0 + net8.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Core.DbParameter - 2.0.0 + 3.0.0-build.1 \ 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 5ab446d..f950095 100644 --- a/src/api-core/DbQuery.Test/DbQuery.Test.csproj +++ b/src/api-core/DbQuery.Test/DbQuery.Test.csproj @@ -1,7 +1,7 @@ - net7.0;net8.0 + net8.0 true false GarageGroup.Infra.Sql.Api.Core.Test @@ -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/DbQueryTest.cs b/src/api-core/DbQuery.Test/Test.DbQuery/DbQueryTest.cs index d9519b7..0633685 100644 --- a/src/api-core/DbQuery.Test/Test.DbQuery/DbQueryTest.cs +++ b/src/api-core/DbQuery.Test/Test.DbQuery/DbQueryTest.cs @@ -1,5 +1,3 @@ namespace GarageGroup.Infra.Sql.Api.Core.Test; -public static partial class DbQueryTest -{ -} \ No newline at end of file +public static partial class DbQueryTest; \ No newline at end of file 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 8943d58..4c4620e 100644 --- a/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetParameters.cs +++ b/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetParameters.cs @@ -32,36 +32,39 @@ public static TheoryData> ParametersTestData { new( query: null!, - parameters: new DbParameter[] - { + parameters: + [ new("P1", 15), new("P2", "Some text") - }), - new( + ]), + [ new("P1", 15), - new("P2", "Some text")) + new("P2", "Some text") + ] }, { new( query: string.Empty, - parameters: new DbParameter[] - { + parameters: + [ new("SomeName", null) - }), - new( - new DbParameter("SomeName", null)) + ]), + [ + new("SomeName", null) + ] }, { new( query: "Some query", - parameters: new DbParameter[] - { + parameters: + [ new("SomeName1", "One"), new("SomeName2", null) - }), - new( + ]), + [ new("SomeName1", "One"), - new("SomeName2", null)) + new("SomeName2", null) + ] } }; } \ No newline at end of file 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 d6f5b3c..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,55 +6,62 @@ 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" }, { new( query: null!, - parameters: new DbParameter[] - { + parameters: + [ new("P1", 15), new("P2", "Some text") - }), + ]), + SqlDialect.TransactSql, string.Empty }, { new( query: string.Empty, - parameters: new DbParameter[] - { + parameters: + [ new("SomeName", null) - }), + ]), + (SqlDialect)37, string.Empty }, { new( query: "Some query", - parameters: new DbParameter[] - { + parameters: + [ 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 f9f79de..d037fa8 100644 --- a/src/api-core/DbQuery/DbQuery.cs +++ b/src/api-core/DbQuery/DbQuery.cs @@ -7,7 +7,7 @@ public sealed record class DbQuery : IDbQuery public DbQuery(string query) { Query = query ?? string.Empty; - Parameters = FlatArray.Empty(); + Parameters = []; } public DbQuery(string query, FlatArray parameters) @@ -22,7 +22,7 @@ public DbQuery(string query, 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 4b2d63d..3147a3c 100644 --- a/src/api-core/DbQuery/DbQuery.csproj +++ b/src/api-core/DbQuery/DbQuery.csproj @@ -1,15 +1,16 @@ - net7.0;net8.0 + net8.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Core.DbQuery - 2.1.0 + 3.0.0-build.2 - - + + + \ No newline at end of file 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..b166656 --- /dev/null +++ b/src/api-core/SqlDialect/SqlDialect.csproj @@ -0,0 +1,10 @@ + + + + net8.0 + GarageGroup.Infra + GarageGroup.Infra.Sql.Api.Core.SqlDialect + 0.0.1-build.1 + + + \ 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 046953b..9911bbf 100644 --- a/src/api/Api.Test/Api.Test.csproj +++ b/src/api/Api.Test/Api.Test.csproj @@ -1,7 +1,7 @@ - net7.0;net8.0 + net8.0 true false GarageGroup.Infra.Sql.Api.Provider.Api.Test @@ -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/Internal.Stub/StubException.cs b/src/api/Api.Test/Internal.Stub/StubException.cs index dc961b4..fbc560f 100644 --- a/src/api/Api.Test/Internal.Stub/StubException.cs +++ b/src/api/Api.Test/Internal.Stub/StubException.cs @@ -2,9 +2,4 @@ namespace GarageGroup.Infra.Sql.Api.Provider.Api.Test; -internal sealed class StubException : Exception -{ - public StubException(string? message) : base(message) - { - } -} \ No newline at end of file +internal sealed class StubException(string? message) : Exception(message); \ No newline at end of file diff --git a/src/api/Api.Test/Source.SqlApi/Source.Command.cs b/src/api/Api.Test/Source.SqlApi/Source.Command.cs index b449e9f..ff5e841 100644 --- a/src/api/Api.Test/Source.SqlApi/Source.Command.cs +++ b/src/api/Api.Test/Source.SqlApi/Source.Command.cs @@ -1,27 +1,32 @@ -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, - parameters: new DbParameter[] + queries: new Dictionary { + [SqlDialect.TransactSql] = string.Empty + }, + parameters: + [ new("FirstParam", 71), new("SecondParam", TestData.PlusFifteenIdRefType), new("FirstParam", false), new("FifthName", null) - }) + ]) { 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/Source.SqlApi/SqlApiTestSource.cs b/src/api/Api.Test/Source.SqlApi/SqlApiTestSource.cs index 3305ee4..33aa0cf 100644 --- a/src/api/Api.Test/Source.SqlApi/SqlApiTestSource.cs +++ b/src/api/Api.Test/Source.SqlApi/SqlApiTestSource.cs @@ -1,5 +1,3 @@ namespace GarageGroup.Infra.Sql.Api.Provider.Api.Test; -internal static partial class SqlApiTestSource -{ -} \ No newline at end of file +internal static partial class SqlApiTestSource; \ No newline at end of file diff --git a/src/api/Api.Test/Test.DbItem/Test.Fields.cs b/src/api/Api.Test/Test.DbItem/Test.Fields.cs index edf6157..3becb65 100644 --- a/src/api/Api.Test/Test.DbItem/Test.Fields.cs +++ b/src/api/Api.Test/Test.DbItem/Test.Fields.cs @@ -33,7 +33,7 @@ public static void FieldsGet_FieldIndexesDictionaryIsNotEmpty_ExpectIndexesDicti var dbItem = new DbItem(dbDataReader, fieldIndexes); var actual = dbItem.Fields; - var expected = new[] { "First", "Second", string.Empty, "Third" }; + string[] expected = ["First", "Second", string.Empty, "Third"]; Assert.Equal(expected, actual); } diff --git a/src/api/Api.Test/Test.DbValueProvider/DbValueProviderTest.cs b/src/api/Api.Test/Test.DbValueProvider/DbValueProviderTest.cs index f7c3131..3f4574b 100644 --- a/src/api/Api.Test/Test.DbValueProvider/DbValueProviderTest.cs +++ b/src/api/Api.Test/Test.DbValueProvider/DbValueProviderTest.cs @@ -1,5 +1,3 @@ namespace GarageGroup.Infra.Sql.Api.Provider.Api.Test; -public static partial class DbValueProviderTest -{ -} \ No newline at end of file +public static partial class DbValueProviderTest; \ No newline at end of file diff --git a/src/api/Api.Test/Test.DbValueProvider/Test.Get.cs b/src/api/Api.Test/Test.DbValueProvider/Test.Get.cs index 280eadd..59acdb6 100644 --- a/src/api/Api.Test/Test.DbValueProvider/Test.Get.cs +++ b/src/api/Api.Test/Test.DbValueProvider/Test.Get.cs @@ -1,6 +1,5 @@ using System; using Moq; -using PrimeFuncPack.UnitTest; using Xunit; namespace GarageGroup.Infra.Sql.Api.Provider.Api.Test; 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 2cda343..7faf561 100644 --- a/src/api/Api.Test/Test.SqlApi/SqlApiTest.cs +++ b/src/api/Api.Test/Test.SqlApi/SqlApiTest.cs @@ -11,12 +11,16 @@ public static partial class SqlApiTest private static readonly StubDbQuery SomeDbQuery = new( - query: "Some SQL", - parameters: new DbParameter[] + queries: new Dictionary { + [SqlDialect.TransactSql] = "Some TransactSql", + [SqlDialect.PostgreSql] = "Some PostgreSql" + }, + parameters: + [ new("First", 3781.5m), new("Second", "Some text") - }); + ]); private static readonly string[] SomeFieldNames = @@ -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 c6507c2..b622edc 100644 --- a/src/api/Api/Api.csproj +++ b/src/api/Api/Api.csproj @@ -1,17 +1,17 @@ - net7.0;net8.0 + net8.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api - 2.6.0 + 3.0.0-build.2 - - - + + + - + \ No newline at end of file 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 From 2455a1fa0afd03a248663df2e33b237b2ecdcf93 Mon Sep 17 00:00:00 2001 From: pmosk Date: Mon, 10 Mar 2025 22:30:34 +0200 Subject: [PATCH 2/2] Use release versions --- .../Abstractions.ExecuteNonQuery.csproj | 4 ++-- .../Abstractions.QueryEntity.csproj | 6 +++--- .../Abstractions.QueryEntitySet.csproj | 6 +++--- src/api-abstractions/Abstractions/Abstractions.csproj | 8 ++++---- .../Provider.Abstractions.csproj | 6 +++--- src/api-core/DbEntity.Test/DbEntity.Test.csproj | 11 ++++------- src/api-core/DbEntity/DbEntity.csproj | 2 +- src/api-core/DbParameter/DbParameter.csproj | 2 +- src/api-core/DbQuery.Test/DbQuery.Test.csproj | 8 ++++---- .../DbQuery.Test/Test.DbQuery/Test.GetParameters.cs | 4 ---- src/api-core/DbQuery/DbQuery.csproj | 6 +++--- src/api-core/SqlDialect/SqlDialect.csproj | 4 ++-- src/api/Api.Test/Api.Test.csproj | 10 +++++----- src/api/Api/Api.csproj | 8 ++++---- 14 files changed, 39 insertions(+), 46 deletions(-) diff --git a/src/api-abstractions/Abstractions.ExecuteNonQuery/Abstractions.ExecuteNonQuery.csproj b/src/api-abstractions/Abstractions.ExecuteNonQuery/Abstractions.ExecuteNonQuery.csproj index 52c7b4c..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 - 3.0.0-build.2 + 3.0.0 - + diff --git a/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj b/src/api-abstractions/Abstractions.QueryEntity/Abstractions.QueryEntity.csproj index a078825..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 - 3.0.0-build.2 + 3.0.0 - - + + diff --git a/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj b/src/api-abstractions/Abstractions.QueryEntitySet/Abstractions.QueryEntitySet.csproj index e51d216..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 - 3.0.0-build.2 + 3.0.0 - - + + diff --git a/src/api-abstractions/Abstractions/Abstractions.csproj b/src/api-abstractions/Abstractions/Abstractions.csproj index a7fc684..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 - 3.0.0-build.2 + 3.0.0 - - - + + + \ 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 f619caf..a8090c3 100644 --- a/src/api-abstractions/Provider.Abstractions/Provider.Abstractions.csproj +++ b/src/api-abstractions/Provider.Abstractions/Provider.Abstractions.csproj @@ -4,12 +4,12 @@ net8.0;net9.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Provider.Abstractions - 3.0.0-build.2 + 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 19a3adf..4ced3a4 100644 --- a/src/api-core/DbEntity.Test/DbEntity.Test.csproj +++ b/src/api-core/DbEntity.Test/DbEntity.Test.csproj @@ -13,18 +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 63df5e9..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 - 3.0.0-build.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 d778b3d..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 - 3.0.0-build.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 c5d5ba3..4c4620e 100644 --- a/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetParameters.cs +++ b/src/api-core/DbQuery.Test/Test.DbQuery/Test.GetParameters.cs @@ -33,8 +33,6 @@ public static TheoryData> ParametersTestData new( query: null!, parameters: - [ - parameters: [ new("P1", 15), new("P2", "Some text") @@ -67,8 +65,6 @@ public static TheoryData> ParametersTestData new("SomeName1", "One"), new("SomeName2", null) ] - new("SomeName2", null) - ] } }; } \ No newline at end of file diff --git a/src/api-core/DbQuery/DbQuery.csproj b/src/api-core/DbQuery/DbQuery.csproj index 0651439..4964552 100644 --- a/src/api-core/DbQuery/DbQuery.csproj +++ b/src/api-core/DbQuery/DbQuery.csproj @@ -4,12 +4,12 @@ net8.0;net9.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Core.DbQuery - 3.0.0-build.2 + 3.0.0 - - + + diff --git a/src/api-core/SqlDialect/SqlDialect.csproj b/src/api-core/SqlDialect/SqlDialect.csproj index b166656..888e6fd 100644 --- a/src/api-core/SqlDialect/SqlDialect.csproj +++ b/src/api-core/SqlDialect/SqlDialect.csproj @@ -1,10 +1,10 @@  - net8.0 + net8.0;net9.0 GarageGroup.Infra GarageGroup.Infra.Sql.Api.Core.SqlDialect - 0.0.1-build.1 + 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/Api.csproj b/src/api/Api/Api.csproj index f512008..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 - 3.0.0-build.2 + 3.0.0 - - - + + +