Skip to content

Commit 1b81e03

Browse files
authored
Merge pull request #1369 from henriquepagno/feature/oracle-persistence-improvements
feat: Add .NET 8.0 support for Oracle persistence provider and improve test infrastructure
2 parents 33d520b + c3d8c52 commit 1b81e03

26 files changed

+130
-117
lines changed

.github/workflows/dotnet.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,20 @@ jobs:
143143
run: dotnet build --no-restore
144144
- name: Elasticsearch Tests
145145
run: dotnet test test/WorkflowCore.Tests.Elasticsearch --no-build --verbosity normal -p:ParallelizeTestCollections=false
146+
Oracle-Tests:
147+
runs-on: ubuntu-latest
148+
steps:
149+
- uses: actions/checkout@v2
150+
- name: Setup .NET
151+
uses: actions/setup-dotnet@v1
152+
with:
153+
dotnet-version: |
154+
6.0.x
155+
8.0.x
156+
9.0.x
157+
- name: Restore dependencies
158+
run: dotnet restore
159+
- name: Build
160+
run: dotnet build --no-restore
161+
- name: Oracle Tests
162+
run: dotnet test test/WorkflowCore.Tests.Oracle --no-build --verbosity normal -p:ParallelizeTestCollections=false

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ There are several persistence providers available as separate Nuget packages.
140140
* [Sqlite](src/providers/WorkflowCore.Persistence.Sqlite)
141141
* [MySQL](src/providers/WorkflowCore.Persistence.MySQL)
142142
* [Redis](src/providers/WorkflowCore.Providers.Redis)
143+
* [Oracle](src/providers/WorkflowCore.Persistence.Oracle)
143144

144145
## Search
145146

docs/persistence.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ There are several persistence providers available as separate Nuget packages.
1111
* [Amazon DynamoDB](https://github.com/danielgerlag/workflow-core/tree/master/src/providers/WorkflowCore.Providers.AWS)
1212
* [Cosmos DB](https://github.com/danielgerlag/workflow-core/tree/master/src/providers/WorkflowCore.Providers.Azure)
1313
* [Redis](https://github.com/danielgerlag/workflow-core/tree/master/src/providers/WorkflowCore.Providers.Redis)
14+
* [Oracle](https://github.com/danielgerlag/workflow-core/tree/master/src/providers/WorkflowCore.Persistence.Oracle)

src/providers/WorkflowCore.Persistence.Oracle/MigrationContextFactory.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
using System;
2-
using System.Linq;
3-
4-
using Microsoft.EntityFrameworkCore.Design;
1+
using Microsoft.EntityFrameworkCore.Design;
52

63
namespace WorkflowCore.Persistence.Oracle
74
{

src/providers/WorkflowCore.Persistence.Oracle/OracleContext.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using System;
2-
using System.Linq;
32

43
using Microsoft.EntityFrameworkCore;
5-
using Microsoft.EntityFrameworkCore.Infrastructure;
64
using Microsoft.EntityFrameworkCore.Metadata.Builders;
75

86
using Oracle.EntityFrameworkCore.Infrastructure;

src/providers/WorkflowCore.Persistence.Oracle/OracleContextFactory.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
using System;
2-
using System.Linq;
3-
4-
using Microsoft.EntityFrameworkCore.Infrastructure;
52

63
using Oracle.EntityFrameworkCore.Infrastructure;
74

src/providers/WorkflowCore.Persistence.Oracle/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,15 @@ Use the .UseOracle extension method when building your service provider.
1717
```C#
1818
services.AddWorkflow(x => x.UseOracle(@"Server=127.0.0.1;Database=workflow;User=root;Password=password;", true, true));
1919
```
20+
21+
You can also add specific database version compatibility if needed.
22+
23+
```C#
24+
services.AddWorkflow(x =>
25+
{
26+
x.UseOracle(connectionString, false, true, options =>
27+
{
28+
options.UseOracleSQLCompatibility(OracleSQLCompatibility.DatabaseVersion19);
29+
});
30+
});
31+
```

src/providers/WorkflowCore.Persistence.Oracle/ServiceCollectionExtensions.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
using System;
2-
using System.Linq;
3-
4-
using Microsoft.EntityFrameworkCore.Infrastructure;
52
using Microsoft.Extensions.DependencyInjection;
63

74
using Oracle.EntityFrameworkCore.Infrastructure;
@@ -14,10 +11,10 @@ namespace WorkflowCore.Persistence.Oracle
1411
{
1512
public static class ServiceCollectionExtensions
1613
{
17-
public static WorkflowOptions UseOracle(this WorkflowOptions options, string connectionString, bool canCreateDB, bool canMigrateDB, Action<OracleDbContextOptionsBuilder> mysqlOptionsAction = null)
14+
public static WorkflowOptions UseOracle(this WorkflowOptions options, string connectionString, bool canCreateDB, bool canMigrateDB, Action<OracleDbContextOptionsBuilder> oracleOptionsAction = null)
1815
{
19-
options.UsePersistence(sp => new EntityFrameworkPersistenceProvider(new OracleContextFactory(connectionString, mysqlOptionsAction), canCreateDB, canMigrateDB));
20-
options.Services.AddTransient<IWorkflowPurger>(sp => new WorkflowPurger(new OracleContextFactory(connectionString, mysqlOptionsAction)));
16+
options.UsePersistence(sp => new EntityFrameworkPersistenceProvider(new OracleContextFactory(connectionString, oracleOptionsAction), canCreateDB, canMigrateDB));
17+
options.Services.AddTransient<IWorkflowPurger>(sp => new WorkflowPurger(new OracleContextFactory(connectionString, oracleOptionsAction)));
2118
return options;
2219
}
2320
}
Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,50 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<AssemblyTitle>Workflow Core Oracle Persistence Provider</AssemblyTitle>
5-
<VersionPrefix>1.0.0</VersionPrefix>
6-
<Authors>Christian Jundt</Authors>
7-
<TargetFrameworks>net6.0</TargetFrameworks>
8-
<AssemblyName>WorkflowCore.Persistence.Oracle</AssemblyName>
9-
<PackageId>WorkflowCore.Persistence.Oracle</PackageId>
10-
<PackageTags>workflow;.NET;Core;state machine;WorkflowCore;Oracle</PackageTags>
11-
<PackageProjectUrl>https://github.com/danielgerlag/workflow-core</PackageProjectUrl>
12-
<PackageLicenseUrl>https://github.com/danielgerlag/workflow-core/blob/master/LICENSE.md</PackageLicenseUrl>
13-
<RepositoryType>git</RepositoryType>
14-
<RepositoryUrl>https://github.com/danielgerlag/workflow-core.git</RepositoryUrl>
15-
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
16-
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
17-
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
18-
<Description>Provides support to persist workflows running on Workflow Core to a Oracle database.</Description>
19-
</PropertyGroup>
3+
<PropertyGroup>
4+
<AssemblyTitle>Workflow Core Oracle Persistence Provider</AssemblyTitle>
5+
<VersionPrefix>1.0.0</VersionPrefix>
6+
<Authors>Christian Jundt</Authors>
7+
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
8+
<AssemblyName>WorkflowCore.Persistence.Oracle</AssemblyName>
9+
<PackageId>WorkflowCore.Persistence.Oracle</PackageId>
10+
<PackageTags>workflow;.NET;Core;state machine;WorkflowCore;Oracle</PackageTags>
11+
<PackageProjectUrl>https://github.com/danielgerlag/workflow-core</PackageProjectUrl>
12+
<PackageLicenseUrl>https://github.com/danielgerlag/workflow-core/blob/master/LICENSE.md</PackageLicenseUrl>
13+
<RepositoryType>git</RepositoryType>
14+
<RepositoryUrl>https://github.com/danielgerlag/workflow-core.git</RepositoryUrl>
15+
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
16+
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
17+
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
18+
<Description>Provides support to persist workflows running on Workflow Core to a Oracle database.</Description>
19+
</PropertyGroup>
2020

21-
<ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' ">
22-
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.*" />
23-
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.*">
24-
<PrivateAssets>All</PrivateAssets>
25-
</PackageReference>
26-
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.*">
27-
<PrivateAssets>all</PrivateAssets>
28-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
29-
</PackageReference>
30-
<PackageReference Include="Oracle.EntityFrameworkCore">
31-
<Version>7.21.13</Version>
32-
</PackageReference>
33-
</ItemGroup>
21+
<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
22+
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.*">
23+
<PrivateAssets>All</PrivateAssets>
24+
</PackageReference>
25+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.*">
26+
<PrivateAssets>all</PrivateAssets>
27+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
28+
</PackageReference>
29+
<PackageReference Include="Oracle.EntityFrameworkCore" Version="8.*" />
30+
</ItemGroup>
3431

35-
<ItemGroup>
36-
<ProjectReference Include="..\..\WorkflowCore\WorkflowCore.csproj" />
37-
<ProjectReference Include="..\WorkflowCore.Persistence.EntityFramework\WorkflowCore.Persistence.EntityFramework.csproj" />
38-
</ItemGroup>
32+
<ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' ">
33+
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.*">
34+
<PrivateAssets>All</PrivateAssets>
35+
</PackageReference>
36+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.*">
37+
<PrivateAssets>all</PrivateAssets>
38+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
39+
</PackageReference>
40+
<PackageReference Include="Oracle.EntityFrameworkCore">
41+
<Version>7.21.13</Version>
42+
</PackageReference>
43+
</ItemGroup>
44+
45+
<ItemGroup>
46+
<ProjectReference Include="..\..\WorkflowCore\WorkflowCore.csproj" />
47+
<ProjectReference Include="..\WorkflowCore.Persistence.EntityFramework\WorkflowCore.Persistence.EntityFramework.csproj" />
48+
</ItemGroup>
3949

4050
</Project>

test/WorkflowCore.Tests.Oracle/OraclePersistenceProviderFixture.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
using System;
2-
using WorkflowCore.Interface;
1+
using WorkflowCore.Interface;
32
using WorkflowCore.Persistence.EntityFramework.Services;
43
using WorkflowCore.Persistence.Oracle;
5-
using WorkflowCore.Tests.Oracle;
64
using WorkflowCore.UnitTests;
75
using Xunit;
86
using Xunit.Abstractions;
@@ -12,7 +10,7 @@ namespace WorkflowCore.Tests.Oracle
1210
[Collection("Oracle collection")]
1311
public class OraclePersistenceProviderFixture : BasePersistenceFixture
1412
{
15-
private readonly IPersistenceProvider _subject;
13+
private readonly EntityFrameworkPersistenceProvider _subject;
1614
protected override IPersistenceProvider Subject => _subject;
1715

1816
public OraclePersistenceProviderFixture(OracleDockerSetup dockerSetup, ITestOutputHelper output)

0 commit comments

Comments
 (0)