diff --git a/.github/workflows/all-in-one-web.yml b/.github/workflows/all-in-one-web.yml new file mode 100644 index 000000000..112895052 --- /dev/null +++ b/.github/workflows/all-in-one-web.yml @@ -0,0 +1,61 @@ +name: Build and deploy All In One reference application as Docker image +on: + workflow_dispatch: + push: + branches: + - v3 + +jobs: + push_to_registry: + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + with: + platforms: all + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + # list of Docker images to use as base name for tags + images: | + elsaworkflows/elsa-v3 + flavor: | + latest=true + # generate Docker tags based on the following events/attributes + tags: | + type=sha + + - name: Login to DockerHub + if: github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASS }} + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v3 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + file: ./src/bundles/Elsa.AllInOne.Web/Dockerfile + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/ci.yml b/.github/workflows/packages.yml similarity index 100% rename from .github/workflows/ci.yml rename to .github/workflows/packages.yml diff --git a/Elsa.sln b/Elsa.sln index e7e8dea6f..34c2e0291 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -12,9 +12,10 @@ ProjectSection(SolutionItems) = preProject docker-compose.yml = docker-compose.yml common.props = common.props configureawait.props = configureawait.props - .github\workflows\ci.yml = .github\workflows\ci.yml .gitignore = .gitignore icon.png = icon.png + .github\workflows\packages.yml = .github\workflows\packages.yml + .github\workflows\all-in-one-web.yml = .github\workflows\all-in-one-web.yml EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{0354F050-3992-4DD4-B0EE-5FBA04AC72B6}" @@ -93,9 +94,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Common", "src\modules\ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "worker", "worker", "{389D40B8-005F-46A1-9493-1FE6065F04FD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.EntityFrameworkCore", "src\modules\Elsa.Persistence.EntityFrameworkCore\Elsa.Persistence.EntityFrameworkCore.csproj", "{7CC95512-7F44-45C3-A669-95B7048D4730}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore", "src\modules\Elsa.EntityFrameworkCore\Elsa.EntityFrameworkCore.csproj", "{7CC95512-7F44-45C3-A669-95B7048D4730}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.EntityFrameworkCore.Sqlite", "src\modules\Elsa.Persistence.EntityFrameworkCore.Sqlite\Elsa.Persistence.EntityFrameworkCore.Sqlite.csproj", "{CAC22763-4A1C-4FC5-AC0D-6148927596D6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore.Sqlite", "src\modules\Elsa.EntityFrameworkCore.Sqlite\Elsa.EntityFrameworkCore.Sqlite.csproj", "{CAC22763-4A1C-4FC5-AC0D-6148927596D6}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.HelloWorld", "src\samples\console\Elsa.Samples.HelloWorld\Elsa.Samples.HelloWorld.csproj", "{D253AFC2-9496-4538-B424-47CC579B7A96}" EndProject @@ -111,7 +112,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.TelnyxIntegrat EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.Composition", "src\samples\console\Elsa.Samples.Composition\Elsa.Samples.Composition.csproj", "{1AA0AEFC-BD58-4284-A6C5-AD15C5C79782}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.EntityFrameworkCore.SqlServer", "src\modules\Elsa.Persistence.EntityFrameworkCore.SqlServer\Elsa.Persistence.EntityFrameworkCore.SqlServer.csproj", "{555A4306-3BAB-409E-8BB8-3171A5867B2C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore.SqlServer", "src\modules\Elsa.EntityFrameworkCore.SqlServer\Elsa.EntityFrameworkCore.SqlServer.csproj", "{555A4306-3BAB-409E-8BB8-3171A5867B2C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Email", "src\modules\Elsa.Email\Elsa.Email.csproj", "{1E5BD8D9-55BE-41E2-B389-6AB9F26C22AF}" EndProject @@ -123,6 +124,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Testing.Shared", "src\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WorkflowFunctions", "src\samples\console\Elsa.Samples.WorkflowFunctions\Elsa.Samples.WorkflowFunctions.csproj", "{4782CA82-83B0-437E-8C97-636BB8B402EA}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.MyBackendApi", "src\samples\aspnet\Elsa.Samples.MyBackendApi\Elsa.Samples.MyBackendApi.csproj", "{1A37795B-EBAB-4A9F-8CF0-373DA3D4C64A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WorkflowServer", "src\samples\aspnet\Elsa.Samples.WorkflowServer\Elsa.Samples.WorkflowServer.csproj", "{89157FB8-A25B-42EC-A91F-37DFEE274C8C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WorkflowDesigner", "src\samples\aspnet\Elsa.Samples.WorkflowDesigner\Elsa.Samples.WorkflowDesigner.csproj", "{812B3B34-D2DD-4A3B-BA2D-3D3C52E0C062}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.WorkflowServerAndDesigner", "src\samples\aspnet\Elsa.Samples.WorkflowServerAndDesigner\Elsa.Samples.WorkflowServerAndDesigner.csproj", "{34FBB2D3-4E2B-4411-95F2-C6B56899826A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -313,6 +322,22 @@ Global {4782CA82-83B0-437E-8C97-636BB8B402EA}.Debug|Any CPU.Build.0 = Debug|Any CPU {4782CA82-83B0-437E-8C97-636BB8B402EA}.Release|Any CPU.ActiveCfg = Release|Any CPU {4782CA82-83B0-437E-8C97-636BB8B402EA}.Release|Any CPU.Build.0 = Release|Any CPU + {1A37795B-EBAB-4A9F-8CF0-373DA3D4C64A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A37795B-EBAB-4A9F-8CF0-373DA3D4C64A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A37795B-EBAB-4A9F-8CF0-373DA3D4C64A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A37795B-EBAB-4A9F-8CF0-373DA3D4C64A}.Release|Any CPU.Build.0 = Release|Any CPU + {89157FB8-A25B-42EC-A91F-37DFEE274C8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89157FB8-A25B-42EC-A91F-37DFEE274C8C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89157FB8-A25B-42EC-A91F-37DFEE274C8C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89157FB8-A25B-42EC-A91F-37DFEE274C8C}.Release|Any CPU.Build.0 = Release|Any CPU + {812B3B34-D2DD-4A3B-BA2D-3D3C52E0C062}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {812B3B34-D2DD-4A3B-BA2D-3D3C52E0C062}.Debug|Any CPU.Build.0 = Debug|Any CPU + {812B3B34-D2DD-4A3B-BA2D-3D3C52E0C062}.Release|Any CPU.ActiveCfg = Release|Any CPU + {812B3B34-D2DD-4A3B-BA2D-3D3C52E0C062}.Release|Any CPU.Build.0 = Release|Any CPU + {34FBB2D3-4E2B-4411-95F2-C6B56899826A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {34FBB2D3-4E2B-4411-95F2-C6B56899826A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {34FBB2D3-4E2B-4411-95F2-C6B56899826A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {34FBB2D3-4E2B-4411-95F2-C6B56899826A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {155227F0-A33B-40AA-A4B4-06F813EB921B} = {61017E64-6D00-49CB-9E81-5002DC8F7D5F} @@ -368,5 +393,9 @@ Global {DF8CCA17-6B00-42C6-B4EC-61B42AA91EE0} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5} {AD8C4BB0-C78F-496C-B326-1D82C02C7568} = {C6658DE0-2B2F-47F0-BB61-2CA66D435C09} {4782CA82-83B0-437E-8C97-636BB8B402EA} = {873BFC3E-63C2-4495-A503-5EC05DCD84E4} + {1A37795B-EBAB-4A9F-8CF0-373DA3D4C64A} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5} + {89157FB8-A25B-42EC-A91F-37DFEE274C8C} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5} + {812B3B34-D2DD-4A3B-BA2D-3D3C52E0C062} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5} + {34FBB2D3-4E2B-4411-95F2-C6B56899826A} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5} EndGlobalSection EndGlobal diff --git a/Elsa.sln.DotSettings b/Elsa.sln.DotSettings index 7d09ab128..7c0987563 100644 --- a/Elsa.sln.DotSettings +++ b/Elsa.sln.DotSettings @@ -1,2 +1,4 @@  + True + True True \ No newline at end of file diff --git a/src/bundles/Elsa.AllInOne.Web/Elsa.AllInOne.Web.csproj b/src/bundles/Elsa.AllInOne.Web/Elsa.AllInOne.Web.csproj index a903315fd..95a98eddb 100644 --- a/src/bundles/Elsa.AllInOne.Web/Elsa.AllInOne.Web.csproj +++ b/src/bundles/Elsa.AllInOne.Web/Elsa.AllInOne.Web.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/src/bundles/Elsa.AllInOne.Web/Program.cs b/src/bundles/Elsa.AllInOne.Web/Program.cs index aba5d9d47..c7e6d3a6a 100644 --- a/src/bundles/Elsa.AllInOne.Web/Program.cs +++ b/src/bundles/Elsa.AllInOne.Web/Program.cs @@ -1,38 +1,29 @@ using Elsa.Extensions; using Elsa.Jobs.Extensions; -using Elsa.Http; using Elsa.Http.Extensions; using Elsa.Identity; using Elsa.Identity.Extensions; -using Elsa.Identity.Features; using Elsa.Identity.Options; -using Elsa.JavaScript.Activities; using Elsa.JavaScript.Extensions; using Elsa.Labels.Extensions; -using Elsa.Scheduling.Activities; using Elsa.Liquid.Extensions; -using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; -using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; -using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Labels; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Runtime; +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Sqlite.Modules.Labels; +using Elsa.EntityFrameworkCore.Sqlite.Modules.Runtime; using Elsa.Requirements; using Elsa.Scheduling.Extensions; -using Elsa.Workflows.Api.Endpoints.WorkflowDefinitions.Post; -using Elsa.Workflows.Api.Features; using Elsa.Workflows.Core; -using Elsa.Workflows.Core.Activities; -using Elsa.Workflows.Management.Extensions; using Elsa.Workflows.Runtime.Extensions; -using FastEndpoints; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; var builder = WebApplication.CreateBuilder(args); var services = builder.Services; var configuration = builder.Configuration; -var sqliteConnectionString = configuration.GetConnectionString("Sqlite"); +var sqliteConnectionString = configuration.GetConnectionString("Sqlite")!; var identityOptions = new IdentityOptions(); var identitySection = configuration.GetSection("Identity"); identitySection.Bind(identityOptions); @@ -41,19 +32,13 @@ identitySection.Bind(identityOptions); services .AddElsa(elsa => elsa .UseWorkflows() - .UseWorkflowRuntime() - .UseWorkflowManagement(management => management - .AddActivitiesFrom() - .AddActivitiesFrom() - .AddActivitiesFrom() - .AddActivitiesFrom() - ) - .UseWorkflowApiEndpoints() + .UseWorkflowsApi() .UseIdentity(identity => { identity.CreateDefaultUser = true; - identity.IdentityOptions = options => identitySection.Bind(options); + identity.IdentityOptions = identityOptions; }) + .UseDefaultAuthentication() .UseWorkflowRuntime(runtime => { runtime.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString)); }) .UseLabels(labels => labels.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString))) .UseActivityDefinitions(feature => feature.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString))) @@ -62,16 +47,9 @@ services .UseJavaScript() .UseLiquid() .UseHttp() - .UseActivityDefinitions() ); services.AddHealthChecks(); - -// Authentication & Authorization. -services - .AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, identityOptions.ConfigureJwtBearerOptions); - services.AddHttpContextAccessor(); services.AddSingleton(); services.AddAuthorization(options => options.AddPolicy(IdentityPolicyNames.SecurityRoot, policy => policy.AddRequirements(new LocalHostRequirement()))); @@ -95,8 +73,8 @@ app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); -app.UseElsaFastEndpoints(); -app.UseHttpActivities(); +app.UseWorkflowsApi(); +app.UseWorkflows(); app.UseEndpoints(endpoints => { diff --git a/src/bundles/Elsa.WorkflowServer.Web/Elsa.WorkflowServer.Web.csproj b/src/bundles/Elsa.WorkflowServer.Web/Elsa.WorkflowServer.Web.csproj index 452911c4a..c1c67dcb5 100644 --- a/src/bundles/Elsa.WorkflowServer.Web/Elsa.WorkflowServer.Web.csproj +++ b/src/bundles/Elsa.WorkflowServer.Web/Elsa.WorkflowServer.Web.csproj @@ -11,8 +11,8 @@ - - + + diff --git a/src/bundles/Elsa.WorkflowServer.Web/Program.cs b/src/bundles/Elsa.WorkflowServer.Web/Program.cs index bffbd39f8..72ea43bba 100644 --- a/src/bundles/Elsa.WorkflowServer.Web/Program.cs +++ b/src/bundles/Elsa.WorkflowServer.Web/Program.cs @@ -13,16 +13,16 @@ using Elsa.Jobs.Activities.Services; using Elsa.Jobs.Extensions; using Elsa.Labels.Extensions; using Elsa.Liquid.Extensions; -using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; -using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; -using Elsa.Persistence.EntityFrameworkCore.Modules.Management; -using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Labels; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Management; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Runtime; -using Elsa.ProtoActor.Extensions; +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Sqlite.Modules.Labels; +using Elsa.EntityFrameworkCore.Sqlite.Modules.Management; +using Elsa.EntityFrameworkCore.Sqlite.Modules.Runtime; using Elsa.Requirements; +using Elsa.Scheduling.Activities; using Elsa.Scheduling.Extensions; using Elsa.WorkflowContexts.Extensions; using Elsa.Workflows.Api.Extensions; @@ -32,17 +32,13 @@ using Elsa.Workflows.Core.Middleware.Workflows; using Elsa.Workflows.Management.Extensions; using Elsa.Workflows.Management.Services; using Elsa.Workflows.Runtime.Extensions; -using Elsa.Workflows.Runtime.Implementations; using Elsa.WorkflowServer.Web.Jobs; -using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; -using Microsoft.Data.Sqlite; -using Proto.Persistence.Sqlite; var builder = WebApplication.CreateBuilder(args); var services = builder.Services; var configuration = builder.Configuration; -var sqliteConnectionString = configuration.GetConnectionString("Sqlite"); +var sqliteConnectionString = configuration.GetConnectionString("Sqlite")!; var identityOptions = new IdentityOptions(); var identitySection = configuration.GetSection("Identity"); identitySection.Bind(identityOptions); @@ -54,27 +50,27 @@ services .UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString)) .AddActivitiesFrom() .AddActivitiesFrom() - .AddActivitiesFrom() + .AddActivitiesFrom() .AddActivitiesFrom() .AddActivitiesFrom() ) .UseIdentity(identity => { identity.CreateDefaultUser = true; - identity.IdentityOptions = options => identitySection.Bind(options); + identity.IdentityOptions = identityOptions; }) + .UseDefaultAuthentication() .UseWorkflowRuntime(runtime => { //runtime.UseProtoActor(proto => proto.PersistenceProvider = _ => new SqliteProvider(new SqliteConnectionStringBuilder(sqliteConnectionString))); runtime.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString)); - //runtime.WorkflowStateExporter = sp => sp.GetRequiredService(); }) .UseLabels(labels => labels.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString))) .UseActivityDefinitions(feature => feature.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString))) .UseJobs(jobs => jobs.ConfigureOptions = options => options.WorkerCount = 10) .UseJobActivities() .UseScheduling() - .UseWorkflowApiEndpoints() + .UseWorkflowsApi() .UseJavaScript() .UseLiquid() .UseHttp() @@ -82,12 +78,6 @@ services services.AddHealthChecks(); services.AddCors(cors => cors.AddDefaultPolicy(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin())); - -// Authentication & Authorization. -services - .AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, identityOptions.ConfigureJwtBearerOptions); - services.AddHttpContextAccessor(); services.AddSingleton(); services.AddAuthorization(options => options.AddPolicy(IdentityPolicyNames.SecurityRoot, policy => policy.AddRequirements(new LocalHostRequirement()))); @@ -131,9 +121,9 @@ app.UseAuthentication(); app.UseAuthorization(); // Register Elsa middleware. -app.UseElsaFastEndpoints(); +app.UseWorkflowsApi(); app.UseJsonSerializationErrorHandler(); -app.UseHttpActivities(); +app.UseWorkflows(); // Run. app.Run(); \ No newline at end of file diff --git a/src/bundles/Elsa/Features/ElsaFeature.cs b/src/bundles/Elsa/Features/ElsaFeature.cs index 3027fc8e9..cfb698967 100644 --- a/src/bundles/Elsa/Features/ElsaFeature.cs +++ b/src/bundles/Elsa/Features/ElsaFeature.cs @@ -2,7 +2,9 @@ using Elsa.Features.Abstractions; using Elsa.Features.Attributes; using Elsa.Features.Services; using Elsa.Mediator.Features; +using Elsa.Workflows.Core.Activities; using Elsa.Workflows.Core.Features; +using Elsa.Workflows.Management.Extensions; using Elsa.Workflows.Management.Features; using Elsa.Workflows.Runtime.Features; @@ -18,8 +20,19 @@ namespace Elsa.Features; [DependsOn(typeof(WorkflowManagementFeature))] public class ElsaFeature : FeatureBase { + /// + /// Set this to true to opt out of automatically registering activities from Elsa.Workflows.Core. + /// + public bool DisableAutomaticActivityRegistration { get; set; } + /// public ElsaFeature(IModule module) : base(module) { } + + /// + public override void Configure() + { + Module.UseWorkflowManagement(management => management.AddActivitiesFrom()); + } } \ No newline at end of file diff --git a/src/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs b/src/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs index 59a82b6e0..554378e28 100644 --- a/src/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs +++ b/src/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs @@ -19,7 +19,7 @@ public static class WebApplicationExtensions /// /// The route prefix to apply to Elsa API endpoints. /// E.g. "elsa/api" will expose endpoints like this: "/elsa/api/workflow-definitions" - public static IApplicationBuilder UseElsaFastEndpoints(this IApplicationBuilder app, string routePrefix = "elsa/api") => + public static IApplicationBuilder UseWorkflowsApi(this IApplicationBuilder app, string routePrefix = "elsa/api") => app.UseFastEndpoints(config => { config.Endpoints.RoutePrefix = routePrefix; diff --git a/src/common/Elsa.Features/Implementations/Module.cs b/src/common/Elsa.Features/Implementations/Module.cs index 7e4bce663..38ce7ce1b 100644 --- a/src/common/Elsa.Features/Implementations/Module.cs +++ b/src/common/Elsa.Features/Implementations/Module.cs @@ -13,7 +13,7 @@ public class Module : IModule { private record HostedServiceDescriptor(int Order, Type HostedServiceType); - private readonly ISet _features = new HashSet(); + private ISet _features = new HashSet(); private readonly ICollection _hostedServiceDescriptors = new List(); /// @@ -59,6 +59,9 @@ public class Module : IModule var featureTypes = _features.Select(x => x.GetType()).TSort(x => x.GetCustomAttributes().Select(dependsOn => dependsOn.Type)).ToList(); var features = featureTypes.Select(featureType => _features.FirstOrDefault(x => x.GetType() == featureType) ?? (IFeature)Activator.CreateInstance(featureType, this)!).ToList(); + // Update list with complete list of features. This is important because during the Configure phase, dependent features might configure other features, which should not be created as new instances. + _features = features.ToHashSet(); + foreach (var feature in features) { feature.Configure(); diff --git a/src/designer/elsa-workflows-designer/package.json b/src/designer/elsa-workflows-designer/package.json index 51301beff..c4a6c582e 100644 --- a/src/designer/elsa-workflows-designer/package.json +++ b/src/designer/elsa-workflows-designer/package.json @@ -1,6 +1,6 @@ { "name": "@elsa-workflows/elsa-workflows-designer", - "version": "3.0.2-preview.11", + "version": "3.0.2-preview.12", "description": "A workflow designer for Elsa 3", "main": "./dist/index.cjs.js", "module": "./dist/index.js", diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs similarity index 80% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs index f979c832c..e16548584 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs @@ -1,8 +1,8 @@ -using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; +using Elsa.EntityFrameworkCore.SqlServer.Extensions; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Abstractions; +namespace Elsa.EntityFrameworkCore.SqlServer.Abstractions; public abstract class SqlServerDesignTimeDbContextFactoryBase : IDesignTimeDbContextFactory where TDbContext : DbContext { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Elsa.Persistence.EntityFrameworkCore.SqlServer.csproj b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Elsa.EntityFrameworkCore.SqlServer.csproj similarity index 91% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Elsa.Persistence.EntityFrameworkCore.SqlServer.csproj rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Elsa.EntityFrameworkCore.SqlServer.csproj index c946dcebc..8afb22c1e 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Elsa.Persistence.EntityFrameworkCore.SqlServer.csproj +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Elsa.EntityFrameworkCore.SqlServer.csproj @@ -28,7 +28,7 @@ - + diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Extensions/DbContextOptionsBuilderExtensions.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Extensions/DbContextOptionsBuilderExtensions.cs similarity index 84% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Extensions/DbContextOptionsBuilderExtensions.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Extensions/DbContextOptionsBuilderExtensions.cs index ddb881339..c8ab54052 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Extensions/DbContextOptionsBuilderExtensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Extensions/DbContextOptionsBuilderExtensions.cs @@ -1,8 +1,8 @@ -using Elsa.Persistence.EntityFrameworkCore.Common; +using Elsa.EntityFrameworkCore.Common; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; +namespace Elsa.EntityFrameworkCore.SqlServer.Extensions; public static class DbContextOptionsBuilderExtensions { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml b/src/modules/Elsa.EntityFrameworkCore.SqlServer/FodyWeavers.xml similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/FodyWeavers.xml diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.Designer.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.Designer.cs index 0e452a2af..29e88ca1e 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.Designer.cs @@ -1,6 +1,6 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.ActivityDefinitions +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.ActivityDefinitions { [DbContext(typeof(ActivityDefinitionsElsaDbContext))] [Migration("20221120175908_Initial")] diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.cs index c9ee83f67..181ab61d8 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.ActivityDefinitions +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.ActivityDefinitions { public partial class Initial : Migration { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs index f168d85cc..68767064f 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs @@ -1,6 +1,6 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.ActivityDefinitions +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.ActivityDefinitions { [DbContext(typeof(ActivityDefinitionsElsaDbContext))] partial class ActivityDefinitionsElsaDbContextModelSnapshot : ModelSnapshot diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.Designer.cs similarity index 95% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.Designer.cs index b6f48a8a2..e9de11fae 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.Designer.cs @@ -1,5 +1,5 @@ // -using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Modules.Labels; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Labels +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Labels { [DbContext(typeof(LabelsElsaDbContext))] [Migration("20221120175911_Initial")] diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.cs index 96aa63648..195797a4e 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.cs @@ -2,7 +2,7 @@ #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Labels +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Labels { public partial class Initial : Migration { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs similarity index 95% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs index 4c3df73f8..441e12257 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs @@ -1,5 +1,5 @@ // -using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Modules.Labels; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -7,7 +7,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Labels +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Labels { [DbContext(typeof(LabelsElsaDbContext))] partial class LabelsElsaDbContextModelSnapshot : ModelSnapshot diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.Designer.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.Designer.cs index b9d3d339d..d80ff7f94 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.Designer.cs @@ -1,6 +1,6 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.Modules.Management; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Management +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management { [DbContext(typeof(ManagementElsaDbContext))] [Migration("20221120175914_Initial")] diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.cs similarity index 99% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.cs index b2f3cb09b..6345d3a0a 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Management +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management { public partial class Initial : Migration { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs index 7c136b770..0184a7f4f 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs @@ -1,6 +1,6 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.Modules.Management; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Management +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management { [DbContext(typeof(ManagementElsaDbContext))] partial class ManagementElsaDbContextModelSnapshot : ModelSnapshot diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.Designer.cs similarity index 98% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.Designer.cs index bcc604551..aec9f7a77 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.Designer.cs @@ -1,6 +1,6 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.Modules.Runtime; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Runtime +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime { [DbContext(typeof(RuntimeElsaDbContext))] [Migration("20221120175917_Initial")] diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.cs similarity index 99% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.cs index 27faa1cd5..97b6743b5 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Runtime +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime { public partial class Initial : Migration { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs similarity index 98% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs index 2ce00144c..59a630d3c 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs @@ -1,6 +1,6 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.Modules.Runtime; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Runtime +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime { [DbContext(typeof(RuntimeElsaDbContext))] partial class RuntimeElsaDbContextModelSnapshot : ModelSnapshot diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..4f72b886b --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.SqlServer.Abstractions; + +namespace Elsa.EntityFrameworkCore.SqlServer.Modules.ActivityDefinitions; + +// ReSharper disable once UnusedType.Global +public class DesignTimeDbContextFactory : SqlServerDesignTimeDbContextFactoryBase +{ +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/Extensions.cs similarity index 58% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/Extensions.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/Extensions.cs index 0f4991eaa..642172372 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/Extensions.cs @@ -1,7 +1,7 @@ -using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; -using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.SqlServer.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Modules.ActivityDefinitions; +namespace Elsa.EntityFrameworkCore.SqlServer.Modules.ActivityDefinitions; public static class Extensions { diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Labels/DesignTimeDbContextFactory.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Labels/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..046dd4657 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Labels/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.SqlServer.Abstractions; + +namespace Elsa.EntityFrameworkCore.SqlServer.Modules.Labels; + +// ReSharper disable once UnusedType.Global +public class DesignTimeDbContextFactory : SqlServerDesignTimeDbContextFactoryBase +{ +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Labels/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Labels/Extensions.cs similarity index 59% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Labels/Extensions.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Labels/Extensions.cs index 89f52e6a1..cabd101fd 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Labels/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Labels/Extensions.cs @@ -1,7 +1,7 @@ -using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; -using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; +using Elsa.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.SqlServer.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Modules.Labels; +namespace Elsa.EntityFrameworkCore.SqlServer.Modules.Labels; public static class Extensions { diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/DesignTimeDbContextFactory.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..cb785ea47 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.SqlServer.Abstractions; + +namespace Elsa.EntityFrameworkCore.SqlServer.Modules.Management; + +// ReSharper disable once UnusedType.Global +public class DesignTimeDbContextFactory : SqlServerDesignTimeDbContextFactoryBase +{ +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs similarity index 59% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs index 329aae535..4e9d0abd5 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs @@ -1,7 +1,7 @@ -using Elsa.Persistence.EntityFrameworkCore.Modules.Management; -using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; +using Elsa.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.SqlServer.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Modules.Management; +namespace Elsa.EntityFrameworkCore.SqlServer.Modules.Management; public static class Extensions { diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Runtime/DesignTimeDbContextFactory.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Runtime/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..a04049e49 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Runtime/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.SqlServer.Abstractions; + +namespace Elsa.EntityFrameworkCore.SqlServer.Modules.Runtime; + +// ReSharper disable once UnusedType.Global +public class DesignTimeRuntimeDbContextFactory : SqlServerDesignTimeDbContextFactoryBase +{ +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Runtime/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Runtime/Extensions.cs similarity index 59% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Runtime/Extensions.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Runtime/Extensions.cs index 19b32ec1e..0eea0e3cb 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Runtime/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Modules/Runtime/Extensions.cs @@ -1,7 +1,7 @@ -using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; -using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; +using Elsa.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.SqlServer.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Modules.Runtime; +namespace Elsa.EntityFrameworkCore.SqlServer.Modules.Runtime; public static class Extensions { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.cmd b/src/modules/Elsa.EntityFrameworkCore.SqlServer/generate-migrations.cmd similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.cmd rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/generate-migrations.cmd diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.sh b/src/modules/Elsa.EntityFrameworkCore.SqlServer/generate-migrations.sh similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.sh rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/generate-migrations.sh diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs similarity index 81% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs index 9cf99157c..0e5d2d480 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs @@ -1,8 +1,8 @@ -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; +using Elsa.EntityFrameworkCore.Sqlite.Extensions; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Abstractions; +namespace Elsa.EntityFrameworkCore.Sqlite.Abstractions; public abstract class SqliteDesignTimeDbContextFactoryBase : IDesignTimeDbContextFactory where TDbContext : DbContext { diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Constants.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Constants.cs new file mode 100644 index 000000000..d596766a6 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Constants.cs @@ -0,0 +1,12 @@ +namespace Elsa.EntityFrameworkCore.Sqlite; + +/// +/// Constants. +/// +public class Constants +{ + /// + /// Default connection string for SQLite. + /// + public const string DefaultConnectionString = "Data Source=elsa.sqlite.db;Cache=Shared;"; +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Elsa.Persistence.EntityFrameworkCore.Sqlite.csproj b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Elsa.EntityFrameworkCore.Sqlite.csproj similarity index 82% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Elsa.Persistence.EntityFrameworkCore.Sqlite.csproj rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Elsa.EntityFrameworkCore.Sqlite.csproj index bcc47a993..1c3519d70 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Elsa.Persistence.EntityFrameworkCore.Sqlite.csproj +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Elsa.EntityFrameworkCore.Sqlite.csproj @@ -13,6 +13,7 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -21,6 +22,7 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -28,7 +30,7 @@ - + diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs similarity index 85% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs index 20de7b974..bd4b64d65 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs @@ -1,8 +1,8 @@ -using Elsa.Persistence.EntityFrameworkCore.Common; +using Elsa.EntityFrameworkCore.Common; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; +namespace Elsa.EntityFrameworkCore.Sqlite.Extensions; public static class DbContextOptionsBuilderExtensions { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/FodyWeavers.xml b/src/modules/Elsa.EntityFrameworkCore.Sqlite/FodyWeavers.xml similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/FodyWeavers.xml rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/FodyWeavers.xml diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.Designer.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.Designer.cs index 92e3b818b..7fb36e94c 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.Designer.cs @@ -1,5 +1,5 @@ // -using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; @@ -7,7 +7,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.ActivityDefinitions +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.ActivityDefinitions { [DbContext(typeof(ActivityDefinitionsElsaDbContext))] [Migration("20221120175500_Initial")] diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.cs similarity index 96% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.cs index c203583af..3cf5d50c7 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.cs @@ -2,7 +2,7 @@ #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.ActivityDefinitions +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.ActivityDefinitions { public partial class Initial : Migration { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs index 4d177e7b6..74a17f48c 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs @@ -1,12 +1,12 @@ // -using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.ActivityDefinitions +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.ActivityDefinitions { [DbContext(typeof(ActivityDefinitionsElsaDbContext))] partial class ActivityDefinitionsElsaDbContextModelSnapshot : ModelSnapshot diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.Designer.cs similarity index 95% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.Designer.cs index 32d8e01e7..a17e8f1e6 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.Designer.cs @@ -1,5 +1,5 @@ // -using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Modules.Labels; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; @@ -7,7 +7,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Labels +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Labels { [DbContext(typeof(LabelsElsaDbContext))] [Migration("20221120175503_Initial")] diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.cs index 449ecf1d1..31c4a0a37 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.cs @@ -2,7 +2,7 @@ #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Labels +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Labels { public partial class Initial : Migration { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs index 0c4ab6f09..6f83ccde4 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs @@ -1,12 +1,12 @@ // -using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Modules.Labels; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Labels +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Labels { [DbContext(typeof(LabelsElsaDbContext))] partial class LabelsElsaDbContextModelSnapshot : ModelSnapshot diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.Designer.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.Designer.cs index 431ca3ac9..4ef407a5e 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.Designer.cs @@ -1,6 +1,6 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.Modules.Management; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Management +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management { [DbContext(typeof(ManagementElsaDbContext))] [Migration("20221120175506_Initial")] diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.cs similarity index 98% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.cs index 39124b935..13b985af3 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Management +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management { public partial class Initial : Migration { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs index 80d75fd91..ceadf4e10 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs @@ -1,13 +1,13 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.Modules.Management; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Management +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management { [DbContext(typeof(ManagementElsaDbContext))] partial class ManagementElsaDbContextModelSnapshot : ModelSnapshot diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.Designer.cs similarity index 98% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.Designer.cs index c6b08d8bc..68ef2cd36 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.Designer.cs @@ -1,6 +1,6 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.Modules.Runtime; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Runtime +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime { [DbContext(typeof(RuntimeElsaDbContext))] [Migration("20221120175509_Initial")] diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.cs similarity index 99% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.cs index 1035cbd54..2b8618670 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Runtime +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime { public partial class Initial : Migration { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs similarity index 98% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs index 3b44668e3..ff741f408 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs @@ -1,13 +1,13 @@ // using System; -using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.Modules.Runtime; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Runtime +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime { [DbContext(typeof(RuntimeElsaDbContext))] partial class RuntimeElsaDbContextModelSnapshot : ModelSnapshot diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..d63bea46a --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Sqlite.Abstractions; + +namespace Elsa.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions; + +// ReSharper disable once UnusedType.Global +public class DesignTimeDbContextFactory : SqliteDesignTimeDbContextFactoryBase +{ +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/Extensions.cs similarity index 61% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/Extensions.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/Extensions.cs index 5cc0475fc..6fafceeb5 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/Extensions.cs @@ -1,7 +1,7 @@ -using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; +using Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.EntityFrameworkCore.Sqlite.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions; +namespace Elsa.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions; public static class Extensions { diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Labels/DesignTimeDbContextFactory.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Labels/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..55b797fa9 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Labels/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Sqlite.Abstractions; + +namespace Elsa.EntityFrameworkCore.Sqlite.Modules.Labels; + +// ReSharper disable once UnusedType.Global +public class DesignTimeDbContextFactory : SqliteDesignTimeDbContextFactoryBase +{ +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Labels/Extensions.cs similarity index 62% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/Extensions.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Labels/Extensions.cs index 83a90fe6e..e6cfec356 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Labels/Extensions.cs @@ -1,7 +1,7 @@ -using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; +using Elsa.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Sqlite.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Labels; +namespace Elsa.EntityFrameworkCore.Sqlite.Modules.Labels; public static class Extensions { diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/DesignTimeDbContextFactory.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..3ddfd977c --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.Sqlite.Abstractions; + +namespace Elsa.EntityFrameworkCore.Sqlite.Modules.Management; + +// ReSharper disable once UnusedType.Global +public class DesignTimeDbContextFactory : SqliteDesignTimeDbContextFactoryBase +{ +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs similarity index 62% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs index 4d8b424c4..a0e912c7b 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs @@ -1,7 +1,7 @@ -using Elsa.Persistence.EntityFrameworkCore.Modules.Management; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; +using Elsa.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.Sqlite.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Management; +namespace Elsa.EntityFrameworkCore.Sqlite.Modules.Management; public static class Extensions { diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Runtime/DesignTimeDbContextFactory.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Runtime/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..6e0e01878 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Runtime/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.Sqlite.Abstractions; + +namespace Elsa.EntityFrameworkCore.Sqlite.Modules.Runtime; + +// ReSharper disable once UnusedType.Global +public class SqliteDesignTimeRuntimeDbContextFactory : SqliteDesignTimeDbContextFactoryBase +{ +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Runtime/Extensions.cs similarity index 62% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/Extensions.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Runtime/Extensions.cs index 3f6371af7..528a7c89b 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Modules/Runtime/Extensions.cs @@ -1,7 +1,7 @@ -using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; -using Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; +using Elsa.EntityFrameworkCore.Modules.Runtime; +using Elsa.EntityFrameworkCore.Sqlite.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Runtime; +namespace Elsa.EntityFrameworkCore.Sqlite.Modules.Runtime; public static class Extensions { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.cmd b/src/modules/Elsa.EntityFrameworkCore.Sqlite/generate-migrations.cmd similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.cmd rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/generate-migrations.cmd diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.sh b/src/modules/Elsa.EntityFrameworkCore.Sqlite/generate-migrations.sh similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.sh rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/generate-migrations.sh diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/ElsaDbContextBase.cs b/src/modules/Elsa.EntityFrameworkCore/Common/ElsaDbContextBase.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Common/ElsaDbContextBase.cs rename to src/modules/Elsa.EntityFrameworkCore/Common/ElsaDbContextBase.cs index b05756292..92e0dad34 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/ElsaDbContextBase.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Common/ElsaDbContextBase.cs @@ -1,8 +1,8 @@ -using Elsa.Persistence.EntityFrameworkCore.Extensions; +using Elsa.EntityFrameworkCore.Extensions; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -namespace Elsa.Persistence.EntityFrameworkCore.Common; +namespace Elsa.EntityFrameworkCore.Common; /// /// An optional base class to implement with some opinions on certain converters to install for certain DB providers. diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/PersistenceFeatureBase.cs b/src/modules/Elsa.EntityFrameworkCore/Common/PersistenceFeatureBase.cs similarity index 96% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Common/PersistenceFeatureBase.cs rename to src/modules/Elsa.EntityFrameworkCore/Common/PersistenceFeatureBase.cs index cffbfb8f3..24f888a17 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/PersistenceFeatureBase.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Common/PersistenceFeatureBase.cs @@ -3,7 +3,7 @@ using Elsa.Features.Services; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; -namespace Elsa.Persistence.EntityFrameworkCore.Common; +namespace Elsa.EntityFrameworkCore.Common; public abstract class PersistenceFeatureBase : FeatureBase where TDbContext : DbContext { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/RunMigrationsHostedService.cs b/src/modules/Elsa.EntityFrameworkCore/Common/RunMigrationsHostedService.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Common/RunMigrationsHostedService.cs rename to src/modules/Elsa.EntityFrameworkCore/Common/RunMigrationsHostedService.cs index cfb2c5a44..3010ff72d 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/RunMigrationsHostedService.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Common/RunMigrationsHostedService.cs @@ -1,7 +1,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Hosting; -namespace Elsa.Persistence.EntityFrameworkCore.Common +namespace Elsa.EntityFrameworkCore.Common { /// /// Executes EF Core migrations using the specified type. diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/Store.cs b/src/modules/Elsa.EntityFrameworkCore/Common/Store.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Common/Store.cs rename to src/modules/Elsa.EntityFrameworkCore/Common/Store.cs index 16ec3f3a2..100e737a7 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/Store.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Common/Store.cs @@ -2,10 +2,10 @@ using System.Linq.Expressions; using EFCore.BulkExtensions; using Elsa.Common.Entities; using Elsa.Common.Models; -using Elsa.Persistence.EntityFrameworkCore.Extensions; +using Elsa.EntityFrameworkCore.Extensions; using Microsoft.EntityFrameworkCore; -namespace Elsa.Persistence.EntityFrameworkCore.Common; +namespace Elsa.EntityFrameworkCore.Common; public class Store where TDbContext : DbContext where TEntity : class { @@ -23,7 +23,7 @@ public class Store where TDbContext : DbContext where TEnti { await using var dbContext = await CreateDbContextAsync(cancellationToken); entity = onSaving?.Invoke(dbContext, entity) ?? entity; - await dbContext.BulkInsertOrUpdateAsync(new[] { entity }, config => { config.EnableShadowProperties = true; }, cancellationToken: cancellationToken); + await dbContext.BulkUpsertAsync(new[] { entity }, cancellationToken); } public async Task SaveManyAsync(IEnumerable entities, CancellationToken cancellationToken = default) => await SaveManyAsync(entities, default, cancellationToken); @@ -36,7 +36,7 @@ public class Store where TDbContext : DbContext where TEnti if (onSaving != null) entityList = entityList.Select(x => onSaving(dbContext, x)).ToList(); - await dbContext.BulkInsertOrUpdateAsync(entityList, config => { config.EnableShadowProperties = true; }, cancellationToken: cancellationToken); + await dbContext.BulkUpsertAsync(entityList, cancellationToken); } public async Task FindAsync(Expression> predicate, CancellationToken cancellationToken = default) => await FindAsync(predicate, default, cancellationToken); diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj b/src/modules/Elsa.EntityFrameworkCore/Elsa.EntityFrameworkCore.csproj similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj rename to src/modules/Elsa.EntityFrameworkCore/Elsa.EntityFrameworkCore.csproj diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Extensions/DatabaseFacadeExtensions.cs b/src/modules/Elsa.EntityFrameworkCore/Extensions/DatabaseFacadeExtensions.cs similarity index 89% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Extensions/DatabaseFacadeExtensions.cs rename to src/modules/Elsa.EntityFrameworkCore/Extensions/DatabaseFacadeExtensions.cs index 8683b32ad..ed9e4fa26 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Extensions/DatabaseFacadeExtensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Extensions/DatabaseFacadeExtensions.cs @@ -1,6 +1,6 @@ using Microsoft.EntityFrameworkCore.Infrastructure; -namespace Elsa.Persistence.EntityFrameworkCore.Extensions; +namespace Elsa.EntityFrameworkCore.Extensions; internal static class DatabaseFacadeExtensions { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Extensions/DbSetExtensions.cs b/src/modules/Elsa.EntityFrameworkCore/Extensions/DbSetExtensions.cs similarity index 51% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Extensions/DbSetExtensions.cs rename to src/modules/Elsa.EntityFrameworkCore/Extensions/DbSetExtensions.cs index 3eb7faee4..eabc68985 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Extensions/DbSetExtensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Extensions/DbSetExtensions.cs @@ -1,10 +1,16 @@ using System.Linq.Expressions; using Microsoft.EntityFrameworkCore; -namespace Elsa.Persistence.EntityFrameworkCore.Extensions; +namespace Elsa.EntityFrameworkCore.Extensions; +/// +/// Provides extensions to . +/// public static class DbSetExtensions { + /// + /// Deletes matching results in bulk. + /// public static async Task DeleteWhereAsync(this DbSet set, DbContext dbContext, Expression> predicate, CancellationToken cancellationToken = default) where T : class => - await set.Where(predicate).BatchDeleteWithWorkAroundAsync(dbContext, cancellationToken); + await set.Where(predicate).BulkDeleteAsync(dbContext, cancellationToken); } \ No newline at end of file diff --git a/src/modules/Elsa.EntityFrameworkCore/Extensions/QueryableExtensions.cs b/src/modules/Elsa.EntityFrameworkCore/Extensions/QueryableExtensions.cs new file mode 100644 index 000000000..7372ed14e --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore/Extensions/QueryableExtensions.cs @@ -0,0 +1,67 @@ +using System.Linq.Expressions; +using System.Net; +using System.Runtime.CompilerServices; +using EFCore.BulkExtensions; +using Elsa.Common.Models; +using Microsoft.EntityFrameworkCore; + +namespace Elsa.EntityFrameworkCore.Extensions; + +/// +/// Provides extensions to . +/// +public static class QueryableExtensions +{ + /// + /// Deletes the matching results in bulk. + /// + public static async Task BulkDeleteAsync(this IQueryable queryable, DbContext elsaContext, CancellationToken cancellationToken = default) where T : class + { +#if NET7_0_OR_GREATER + return await queryable.ExecuteDeleteAsync(cancellationToken).ConfigureAwait(false); +#else + if (!elsaContext.Database.IsPostgres() && !elsaContext.Database.IsMySql() && !elsaContext.Database.IsOracle()) + return await queryable.BatchDeleteAsync(cancellationToken); + + // Need this workaround https://github.com/borisdj/EFCore.BulkExtensions/issues/553 is solved. + // Oracle also https://github.com/borisdj/EFCore.BulkExtensions/issues/375 + var records = await queryable.ToListAsync(cancellationToken); + + foreach (var record in records) + elsaContext.Remove(record); + + return records.Count; + +#endif + } + + /// + /// Inserts or updates a list of entities in bulk. + /// + public static async Task BulkUpsertAsync(this TDbContext dbContext, IList entities, CancellationToken cancellationToken = default) where TDbContext : DbContext where TEntity : class => + await dbContext.BulkInsertOrUpdateAsync(entities, config => { config.EnableShadowProperties = true; }, cancellationToken: cancellationToken); + + /// + /// Returns a paged result from the specified query. + /// + public static async Task> PaginateAsync(this IQueryable queryable, Expression> projection, PageArgs? pageArgs = default) + { + var count = await queryable.CountAsync(); + if (pageArgs?.Offset != null) queryable = queryable.Skip(pageArgs.Offset.Value); + if (pageArgs?.Limit != null) queryable = queryable.Take(pageArgs.Limit.Value); + var results = await queryable.Select(projection).ToListAsync(); + return Page.Of(results, count); + } + + /// + /// Returns a paged result from the specified query. + /// + public static async Task> PaginateAsync(this IQueryable queryable, PageArgs? pageArgs = default) + { + var count = await queryable.CountAsync(); + if (pageArgs?.Offset != null) queryable = queryable.Skip(pageArgs.Offset.Value); + if (pageArgs?.Limit != null) queryable = queryable.Take(pageArgs.Limit.Value); + var results = await queryable.ToListAsync(); + return Page.Of(results, count); + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/FodyWeavers.xml b/src/modules/Elsa.EntityFrameworkCore/FodyWeavers.xml similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/FodyWeavers.xml rename to src/modules/Elsa.EntityFrameworkCore/FodyWeavers.xml diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs rename to src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs index 57c5e468f..6510633d1 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs @@ -5,12 +5,12 @@ using Elsa.ActivityDefinitions.Models; using Elsa.ActivityDefinitions.Services; using Elsa.Common.Extensions; using Elsa.Common.Models; -using Elsa.Persistence.EntityFrameworkCore.Common; -using Elsa.Persistence.EntityFrameworkCore.Extensions; +using Elsa.EntityFrameworkCore.Common; +using Elsa.EntityFrameworkCore.Extensions; using Elsa.Workflows.Core.Models; using Elsa.Workflows.Core.Serialization; -namespace Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +namespace Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; public class EFCoreActivityDefinitionStore : IActivityDefinitionStore { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Configurations.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/Configurations.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Configurations.cs rename to src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/Configurations.cs index 11df2227a..3cec78c84 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Configurations.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/Configurations.cs @@ -2,7 +2,7 @@ using Elsa.ActivityDefinitions.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +namespace Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; public class Configurations : IEntityTypeConfiguration { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs similarity index 79% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs rename to src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs index 99b9e0f99..d7a89a5fd 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs @@ -1,8 +1,8 @@ using Elsa.ActivityDefinitions.Entities; -using Elsa.Persistence.EntityFrameworkCore.Common; +using Elsa.EntityFrameworkCore.Common; using Microsoft.EntityFrameworkCore; -namespace Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +namespace Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; public class ActivityDefinitionsElsaDbContext : ElsaDbContextBase { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Extensions.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/Extensions.cs similarity index 81% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Extensions.cs rename to src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/Extensions.cs index 970a1b083..939cf403e 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Extensions.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/Extensions.cs @@ -1,6 +1,6 @@ using Elsa.ActivityDefinitions.Features; -namespace Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +namespace Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; public static class Extensions { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs similarity index 86% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs rename to src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs index db82c9937..d67363069 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs @@ -1,11 +1,11 @@ using Elsa.ActivityDefinitions.Entities; using Elsa.ActivityDefinitions.Features; +using Elsa.EntityFrameworkCore.Common; using Elsa.Features.Attributes; using Elsa.Features.Services; -using Elsa.Persistence.EntityFrameworkCore.Common; using Microsoft.Extensions.DependencyInjection; -namespace Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +namespace Elsa.EntityFrameworkCore.Modules.ActivityDefinitions; [DependsOn(typeof(ActivityDefinitionsFeature))] public class EFCoreActivityDefinitionsPersistenceFeature : PersistenceFeatureBase diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/Configurations.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Labels/Configurations.cs similarity index 93% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/Configurations.cs rename to src/modules/Elsa.EntityFrameworkCore/Modules/Labels/Configurations.cs index cd6cf4141..782ca7f15 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/Configurations.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Labels/Configurations.cs @@ -2,7 +2,7 @@ using Elsa.Labels.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Elsa.Persistence.EntityFrameworkCore.Modules.Labels; +namespace Elsa.EntityFrameworkCore.Modules.Labels; public class Configurations : IEntityTypeConfiguration