diff --git a/Elsa.sln b/Elsa.sln index 875a0a04e..b59963b70 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -116,6 +116,8 @@ 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}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -294,6 +296,10 @@ Global {1AA0AEFC-BD58-4284-A6C5-AD15C5C79782}.Debug|Any CPU.Build.0 = Debug|Any CPU {1AA0AEFC-BD58-4284-A6C5-AD15C5C79782}.Release|Any CPU.ActiveCfg = Release|Any CPU {1AA0AEFC-BD58-4284-A6C5-AD15C5C79782}.Release|Any CPU.Build.0 = Release|Any CPU + {555A4306-3BAB-409E-8BB8-3171A5867B2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {555A4306-3BAB-409E-8BB8-3171A5867B2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {555A4306-3BAB-409E-8BB8-3171A5867B2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {555A4306-3BAB-409E-8BB8-3171A5867B2C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {155227F0-A33B-40AA-A4B4-06F813EB921B} = {61017E64-6D00-49CB-9E81-5002DC8F7D5F} @@ -346,5 +352,6 @@ Global {F09B30F7-AF33-44D7-B835-099D1F72A37E} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79} {55AAF940-12DC-4793-805C-992AEF2C1E8D} = {56C2FFB8-EA54-45B5-A095-4A78142EB4B5} {1AA0AEFC-BD58-4284-A6C5-AD15C5C79782} = {873BFC3E-63C2-4495-A503-5EC05DCD84E4} + {555A4306-3BAB-409E-8BB8-3171A5867B2C} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79} EndGlobalSection EndGlobal diff --git a/src/modules/Elsa.Expressions/Models/ExpressionExecutionContext.cs b/src/modules/Elsa.Expressions/Models/ExpressionExecutionContext.cs index 7d318c864..8c628cc64 100644 --- a/src/modules/Elsa.Expressions/Models/ExpressionExecutionContext.cs +++ b/src/modules/Elsa.Expressions/Models/ExpressionExecutionContext.cs @@ -2,6 +2,9 @@ using Microsoft.Extensions.DependencyInjection; namespace Elsa.Expressions.Models; +/// +/// Made available to activities to access shared state and store local state. +/// public class ExpressionExecutionContext { private readonly IServiceProvider _serviceProvider; @@ -10,14 +13,13 @@ public class ExpressionExecutionContext IServiceProvider serviceProvider, MemoryRegister memory, ExpressionExecutionContext? parentContext = default, - IDictionary? applicationProperties = default, + IDictionary? transientProperties = default, CancellationToken cancellationToken = default) { _serviceProvider = serviceProvider; Memory = memory; - ApplicationProperties = applicationProperties ?? new Dictionary(); + TransientProperties = transientProperties ?? new Dictionary(); ParentContext = parentContext; - CancellationToken = cancellationToken; } @@ -26,7 +28,11 @@ public class ExpressionExecutionContext /// public MemoryRegister Memory { get; } - public IDictionary ApplicationProperties { get; set; } + /// + /// A dictionary of transient properties. + /// + public IDictionary TransientProperties { get; set; } + public ExpressionExecutionContext? ParentContext { get; set; } public CancellationToken CancellationToken { get; } diff --git a/src/modules/Elsa.JavaScript/Handlers/ConfigureJavaScriptEngineWithActivityOutput.cs b/src/modules/Elsa.JavaScript/Handlers/ConfigureJavaScriptEngineWithActivityOutput.cs index d4de12efc..a4f77e5cb 100644 --- a/src/modules/Elsa.JavaScript/Handlers/ConfigureJavaScriptEngineWithActivityOutput.cs +++ b/src/modules/Elsa.JavaScript/Handlers/ConfigureJavaScriptEngineWithActivityOutput.cs @@ -20,7 +20,7 @@ public class ConfigureJavaScriptEngineWithActivityOutput : INotificationHandler< public async Task HandleAsync(EvaluatingJavaScript notification, CancellationToken cancellationToken) { var engine = notification.Engine; - var workflow = notification.Context.GetWorkflow(); + var workflow = notification.Context.GetWorkflowExecutionContext().Workflow; var nodes = await _activityWalker.WalkAsync(workflow.Root, cancellationToken); var graph = nodes.Flatten(); var register = notification.Context.Memory; diff --git a/src/modules/Elsa.JavaScript/Notifications/EvaluatingJavaScript.cs b/src/modules/Elsa.JavaScript/Notifications/EvaluatingJavaScript.cs index e5eb9aab4..36db1298f 100644 --- a/src/modules/Elsa.JavaScript/Notifications/EvaluatingJavaScript.cs +++ b/src/modules/Elsa.JavaScript/Notifications/EvaluatingJavaScript.cs @@ -4,4 +4,8 @@ using Jint; namespace Elsa.JavaScript.Notifications; +/// +/// This notification is published every time a JavaScript expression is about to be evaluated. +/// It gives subscribers a chance to configure the with additional functions and variables. +/// public record EvaluatingJavaScript(Engine Engine, ExpressionExecutionContext Context) : INotification; \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs new file mode 100644 index 000000000..f979c832c --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Abstractions/SqlServerDesignTimeDbContextFactoryBase.cs @@ -0,0 +1,18 @@ +using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Abstractions; + +public abstract class SqlServerDesignTimeDbContextFactoryBase : IDesignTimeDbContextFactory where TDbContext : DbContext +{ + public TDbContext CreateDbContext(string[] args) + { + var builder = new DbContextOptionsBuilder(); + var connectionString = args.Any() ? args[0] : "Data Source=local"; + + builder.UseElsaSqlServer(connectionString); + + return (TDbContext)Activator.CreateInstance(typeof(TDbContext), builder.Options)!; + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Elsa.Persistence.EntityFrameworkCore.SqlServer.csproj b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Elsa.Persistence.EntityFrameworkCore.SqlServer.csproj new file mode 100644 index 000000000..22349b938 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Elsa.Persistence.EntityFrameworkCore.SqlServer.csproj @@ -0,0 +1,30 @@ + + + + + + + net6.0 + + Provides SQL Server migrations for various modules. + + elsa module persistence efcore sqlserver + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Extensions/DbContextOptionsBuilderExtensions.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Extensions/DbContextOptionsBuilderExtensions.cs new file mode 100644 index 000000000..4d8f41983 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Extensions/DbContextOptionsBuilderExtensions.cs @@ -0,0 +1,12 @@ +using Elsa.Persistence.EntityFrameworkCore.Common; +using Microsoft.EntityFrameworkCore; + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; + +public static class DbContextOptionsBuilderExtensions +{ + public static DbContextOptionsBuilder UseElsaSqlServer(this DbContextOptionsBuilder builder, string connectionString) => + builder.UseSqlServer(connectionString, db => db + .MigrationsAssembly(typeof(DbContextOptionsBuilderExtensions).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaDbContextBase.MigrationsHistoryTable, ElsaDbContextBase.ElsaSchema)); +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml new file mode 100644 index 000000000..00e1d9a1c --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.Designer.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.Designer.cs new file mode 100644 index 000000000..0e452a2af --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.Designer.cs @@ -0,0 +1,88 @@ +// +using System; +using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.ActivityDefinitions +{ + [DbContext(typeof(ActivityDefinitionsElsaDbContext))] + [Migration("20221120175908_Initial")] + partial class Initial + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "6.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Elsa.ActivityDefinitions.Entities.ActivityDefinition", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("Category") + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("IsLatest") + .HasColumnType("bit"); + + b.Property("IsPublished") + .HasColumnType("bit"); + + b.Property("Type") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Version") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("IsLatest") + .HasDatabaseName("IX_ActivityDefinition_IsLatest"); + + b.HasIndex("IsPublished") + .HasDatabaseName("IX_ActivityDefinition_IsPublished"); + + b.HasIndex("Type") + .HasDatabaseName("IX_ActivityDefinition_Type"); + + b.HasIndex("Version") + .HasDatabaseName("IX_ActivityDefinition_Version"); + + b.HasIndex("DefinitionId", "Version") + .IsUnique() + .HasDatabaseName("IX_ActivityDefinition_DefinitionId_Version"); + + b.ToTable("ActivityDefinitions", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.cs new file mode 100644 index 000000000..c9ee83f67 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/20221120175908_Initial.cs @@ -0,0 +1,76 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.ActivityDefinitions +{ + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "Elsa"); + + migrationBuilder.CreateTable( + name: "ActivityDefinitions", + schema: "Elsa", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + DefinitionId = table.Column(type: "nvarchar(450)", nullable: false), + Type = table.Column(type: "nvarchar(450)", nullable: false), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Category = table.Column(type: "nvarchar(max)", nullable: true), + Data = table.Column(type: "nvarchar(max)", nullable: true), + CreatedAt = table.Column(type: "datetimeoffset", nullable: false), + Version = table.Column(type: "int", nullable: false), + IsLatest = table.Column(type: "bit", nullable: false), + IsPublished = table.Column(type: "bit", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ActivityDefinitions", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_ActivityDefinition_DefinitionId_Version", + schema: "Elsa", + table: "ActivityDefinitions", + columns: new[] { "DefinitionId", "Version" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_ActivityDefinition_IsLatest", + schema: "Elsa", + table: "ActivityDefinitions", + column: "IsLatest"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityDefinition_IsPublished", + schema: "Elsa", + table: "ActivityDefinitions", + column: "IsPublished"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityDefinition_Type", + schema: "Elsa", + table: "ActivityDefinitions", + column: "Type"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityDefinition_Version", + schema: "Elsa", + table: "ActivityDefinitions", + column: "Version"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ActivityDefinitions", + schema: "Elsa"); + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs new file mode 100644 index 000000000..f168d85cc --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs @@ -0,0 +1,86 @@ +// +using System; +using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.ActivityDefinitions +{ + [DbContext(typeof(ActivityDefinitionsElsaDbContext))] + partial class ActivityDefinitionsElsaDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "6.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Elsa.ActivityDefinitions.Entities.ActivityDefinition", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("Category") + .HasColumnType("nvarchar(max)"); + + b.Property("CreatedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("IsLatest") + .HasColumnType("bit"); + + b.Property("IsPublished") + .HasColumnType("bit"); + + b.Property("Type") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Version") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("IsLatest") + .HasDatabaseName("IX_ActivityDefinition_IsLatest"); + + b.HasIndex("IsPublished") + .HasDatabaseName("IX_ActivityDefinition_IsPublished"); + + b.HasIndex("Type") + .HasDatabaseName("IX_ActivityDefinition_Type"); + + b.HasIndex("Version") + .HasDatabaseName("IX_ActivityDefinition_Version"); + + b.HasIndex("DefinitionId", "Version") + .IsUnique() + .HasDatabaseName("IX_ActivityDefinition_DefinitionId_Version"); + + b.ToTable("ActivityDefinitions", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.Designer.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.Designer.cs new file mode 100644 index 000000000..b6f48a8a2 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.Designer.cs @@ -0,0 +1,84 @@ +// +using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Labels +{ + [DbContext(typeof(LabelsElsaDbContext))] + [Migration("20221120175911_Initial")] + partial class Initial + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "6.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Elsa.Labels.Entities.Label", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("Color") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("NormalizedName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Labels", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Labels.Entities.WorkflowDefinitionLabel", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("LabelId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowDefinitionVersionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("LabelId") + .HasDatabaseName("WorkflowDefinitionLabel_LabelId"); + + b.HasIndex("WorkflowDefinitionId") + .HasDatabaseName("WorkflowDefinitionLabel_WorkflowDefinitionId"); + + b.HasIndex("WorkflowDefinitionVersionId") + .HasDatabaseName("WorkflowDefinitionLabel_WorkflowDefinitionVersionId"); + + b.ToTable("WorkflowDefinitionLabels", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.cs new file mode 100644 index 000000000..96aa63648 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/20221120175911_Initial.cs @@ -0,0 +1,75 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Labels +{ + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "Elsa"); + + migrationBuilder.CreateTable( + name: "Labels", + schema: "Elsa", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + Name = table.Column(type: "nvarchar(max)", nullable: false), + NormalizedName = table.Column(type: "nvarchar(max)", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Color = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Labels", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "WorkflowDefinitionLabels", + schema: "Elsa", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + WorkflowDefinitionId = table.Column(type: "nvarchar(450)", nullable: false), + WorkflowDefinitionVersionId = table.Column(type: "nvarchar(450)", nullable: false), + LabelId = table.Column(type: "nvarchar(450)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowDefinitionLabels", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "WorkflowDefinitionLabel_LabelId", + schema: "Elsa", + table: "WorkflowDefinitionLabels", + column: "LabelId"); + + migrationBuilder.CreateIndex( + name: "WorkflowDefinitionLabel_WorkflowDefinitionId", + schema: "Elsa", + table: "WorkflowDefinitionLabels", + column: "WorkflowDefinitionId"); + + migrationBuilder.CreateIndex( + name: "WorkflowDefinitionLabel_WorkflowDefinitionVersionId", + schema: "Elsa", + table: "WorkflowDefinitionLabels", + column: "WorkflowDefinitionVersionId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Labels", + schema: "Elsa"); + + migrationBuilder.DropTable( + name: "WorkflowDefinitionLabels", + schema: "Elsa"); + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs new file mode 100644 index 000000000..4c3df73f8 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs @@ -0,0 +1,82 @@ +// +using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Labels +{ + [DbContext(typeof(LabelsElsaDbContext))] + partial class LabelsElsaDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "6.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Elsa.Labels.Entities.Label", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("Color") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("NormalizedName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Labels", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Labels.Entities.WorkflowDefinitionLabel", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("LabelId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowDefinitionVersionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("LabelId") + .HasDatabaseName("WorkflowDefinitionLabel_LabelId"); + + b.HasIndex("WorkflowDefinitionId") + .HasDatabaseName("WorkflowDefinitionLabel_WorkflowDefinitionId"); + + b.HasIndex("WorkflowDefinitionVersionId") + .HasDatabaseName("WorkflowDefinitionLabel_WorkflowDefinitionVersionId"); + + b.ToTable("WorkflowDefinitionLabels", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.Designer.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.Designer.cs new file mode 100644 index 000000000..b9d3d339d --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.Designer.cs @@ -0,0 +1,186 @@ +// +using System; +using Elsa.Persistence.EntityFrameworkCore.Modules.Management; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Management +{ + [DbContext(typeof(ManagementElsaDbContext))] + [Migration("20221120175914_Initial")] + partial class Initial + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "6.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowDefinition", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("BinaryData") + .HasColumnType("varbinary(max)"); + + b.Property("CreatedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("IsLatest") + .HasColumnType("bit"); + + b.Property("IsPublished") + .HasColumnType("bit"); + + b.Property("MaterializerContext") + .HasColumnType("nvarchar(max)"); + + b.Property("MaterializerName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("StringData") + .HasColumnType("nvarchar(max)"); + + b.Property("Version") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("IsLatest") + .HasDatabaseName("IX_WorkflowDefinition_IsLatest"); + + b.HasIndex("IsPublished") + .HasDatabaseName("IX_WorkflowDefinition_IsPublished"); + + b.HasIndex("Name") + .HasDatabaseName("IX_WorkflowDefinition_Name"); + + b.HasIndex("Version") + .HasDatabaseName("IX_WorkflowDefinition_Version"); + + b.HasIndex("DefinitionId", "Version") + .IsUnique() + .HasDatabaseName("IX_WorkflowDefinition_DefinitionId_Version"); + + b.ToTable("WorkflowDefinitions", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowInstance", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("CancelledAt") + .HasColumnType("datetimeoffset"); + + b.Property("CorrelationId") + .HasColumnType("nvarchar(450)"); + + b.Property("CreatedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("DefinitionVersionId") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FaultedAt") + .HasColumnType("datetimeoffset"); + + b.Property("FinishedAt") + .HasColumnType("datetimeoffset"); + + b.Property("LastExecutedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Status") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("SubStatus") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Version") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CorrelationId") + .HasDatabaseName("IX_WorkflowInstance_CorrelationId"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_WorkflowInstance_CreatedAt"); + + b.HasIndex("DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_DefinitionId"); + + b.HasIndex("FaultedAt") + .HasDatabaseName("IX_WorkflowInstance_FaultedAt"); + + b.HasIndex("FinishedAt") + .HasDatabaseName("IX_WorkflowInstance_FinishedAt"); + + b.HasIndex("LastExecutedAt") + .HasDatabaseName("IX_WorkflowInstance_LastExecutedAt"); + + b.HasIndex("Name") + .HasDatabaseName("IX_WorkflowInstance_Name"); + + b.HasIndex("Status") + .HasDatabaseName("IX_WorkflowInstance_Status"); + + b.HasIndex("SubStatus") + .HasDatabaseName("IX_WorkflowInstance_SubStatus"); + + b.HasIndex("Status", "DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_Status_DefinitionId"); + + b.HasIndex("Status", "SubStatus") + .HasDatabaseName("IX_WorkflowInstance_Status_SubStatus"); + + b.HasIndex("SubStatus", "DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_SubStatus_DefinitionId"); + + b.HasIndex("Status", "SubStatus", "DefinitionId", "Version") + .HasDatabaseName("IX_WorkflowInstance_Status_SubStatus_DefinitionId_Version"); + + b.ToTable("WorkflowInstances", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.cs new file mode 100644 index 000000000..b2f3cb09b --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/20221120175914_Initial.cs @@ -0,0 +1,185 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Management +{ + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "Elsa"); + + migrationBuilder.CreateTable( + name: "WorkflowDefinitions", + schema: "Elsa", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + DefinitionId = table.Column(type: "nvarchar(450)", nullable: false), + Name = table.Column(type: "nvarchar(450)", nullable: true), + Description = table.Column(type: "nvarchar(max)", nullable: true), + MaterializerName = table.Column(type: "nvarchar(max)", nullable: false), + MaterializerContext = table.Column(type: "nvarchar(max)", nullable: true), + StringData = table.Column(type: "nvarchar(max)", nullable: true), + BinaryData = table.Column(type: "varbinary(max)", nullable: true), + Data = table.Column(type: "nvarchar(max)", nullable: true), + CreatedAt = table.Column(type: "datetimeoffset", nullable: false), + Version = table.Column(type: "int", nullable: false), + IsLatest = table.Column(type: "bit", nullable: false), + IsPublished = table.Column(type: "bit", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowDefinitions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "WorkflowInstances", + schema: "Elsa", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + DefinitionId = table.Column(type: "nvarchar(450)", nullable: false), + DefinitionVersionId = table.Column(type: "nvarchar(max)", nullable: false), + Version = table.Column(type: "int", nullable: false), + Status = table.Column(type: "nvarchar(450)", nullable: false), + SubStatus = table.Column(type: "nvarchar(450)", nullable: false), + CorrelationId = table.Column(type: "nvarchar(450)", nullable: true), + Name = table.Column(type: "nvarchar(450)", nullable: true), + CreatedAt = table.Column(type: "datetimeoffset", nullable: false), + LastExecutedAt = table.Column(type: "datetimeoffset", nullable: true), + FinishedAt = table.Column(type: "datetimeoffset", nullable: true), + CancelledAt = table.Column(type: "datetimeoffset", nullable: true), + FaultedAt = table.Column(type: "datetimeoffset", nullable: true), + Data = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowInstances", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_DefinitionId_Version", + schema: "Elsa", + table: "WorkflowDefinitions", + columns: new[] { "DefinitionId", "Version" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_IsLatest", + schema: "Elsa", + table: "WorkflowDefinitions", + column: "IsLatest"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_IsPublished", + schema: "Elsa", + table: "WorkflowDefinitions", + column: "IsPublished"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_Name", + schema: "Elsa", + table: "WorkflowDefinitions", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_Version", + schema: "Elsa", + table: "WorkflowDefinitions", + column: "Version"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_CorrelationId", + schema: "Elsa", + table: "WorkflowInstances", + column: "CorrelationId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_CreatedAt", + schema: "Elsa", + table: "WorkflowInstances", + column: "CreatedAt"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_DefinitionId", + schema: "Elsa", + table: "WorkflowInstances", + column: "DefinitionId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_FaultedAt", + schema: "Elsa", + table: "WorkflowInstances", + column: "FaultedAt"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_FinishedAt", + schema: "Elsa", + table: "WorkflowInstances", + column: "FinishedAt"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_LastExecutedAt", + schema: "Elsa", + table: "WorkflowInstances", + column: "LastExecutedAt"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Name", + schema: "Elsa", + table: "WorkflowInstances", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Status", + schema: "Elsa", + table: "WorkflowInstances", + column: "Status"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Status_DefinitionId", + schema: "Elsa", + table: "WorkflowInstances", + columns: new[] { "Status", "DefinitionId" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Status_SubStatus", + schema: "Elsa", + table: "WorkflowInstances", + columns: new[] { "Status", "SubStatus" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Status_SubStatus_DefinitionId_Version", + schema: "Elsa", + table: "WorkflowInstances", + columns: new[] { "Status", "SubStatus", "DefinitionId", "Version" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_SubStatus", + schema: "Elsa", + table: "WorkflowInstances", + column: "SubStatus"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_SubStatus_DefinitionId", + schema: "Elsa", + table: "WorkflowInstances", + columns: new[] { "SubStatus", "DefinitionId" }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "WorkflowDefinitions", + schema: "Elsa"); + + migrationBuilder.DropTable( + name: "WorkflowInstances", + schema: "Elsa"); + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs new file mode 100644 index 000000000..7c136b770 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs @@ -0,0 +1,184 @@ +// +using System; +using Elsa.Persistence.EntityFrameworkCore.Modules.Management; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Management +{ + [DbContext(typeof(ManagementElsaDbContext))] + partial class ManagementElsaDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "6.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowDefinition", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("BinaryData") + .HasColumnType("varbinary(max)"); + + b.Property("CreatedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("IsLatest") + .HasColumnType("bit"); + + b.Property("IsPublished") + .HasColumnType("bit"); + + b.Property("MaterializerContext") + .HasColumnType("nvarchar(max)"); + + b.Property("MaterializerName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("StringData") + .HasColumnType("nvarchar(max)"); + + b.Property("Version") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("IsLatest") + .HasDatabaseName("IX_WorkflowDefinition_IsLatest"); + + b.HasIndex("IsPublished") + .HasDatabaseName("IX_WorkflowDefinition_IsPublished"); + + b.HasIndex("Name") + .HasDatabaseName("IX_WorkflowDefinition_Name"); + + b.HasIndex("Version") + .HasDatabaseName("IX_WorkflowDefinition_Version"); + + b.HasIndex("DefinitionId", "Version") + .IsUnique() + .HasDatabaseName("IX_WorkflowDefinition_DefinitionId_Version"); + + b.ToTable("WorkflowDefinitions", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowInstance", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("CancelledAt") + .HasColumnType("datetimeoffset"); + + b.Property("CorrelationId") + .HasColumnType("nvarchar(450)"); + + b.Property("CreatedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("DefinitionVersionId") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FaultedAt") + .HasColumnType("datetimeoffset"); + + b.Property("FinishedAt") + .HasColumnType("datetimeoffset"); + + b.Property("LastExecutedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Status") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("SubStatus") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Version") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CorrelationId") + .HasDatabaseName("IX_WorkflowInstance_CorrelationId"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_WorkflowInstance_CreatedAt"); + + b.HasIndex("DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_DefinitionId"); + + b.HasIndex("FaultedAt") + .HasDatabaseName("IX_WorkflowInstance_FaultedAt"); + + b.HasIndex("FinishedAt") + .HasDatabaseName("IX_WorkflowInstance_FinishedAt"); + + b.HasIndex("LastExecutedAt") + .HasDatabaseName("IX_WorkflowInstance_LastExecutedAt"); + + b.HasIndex("Name") + .HasDatabaseName("IX_WorkflowInstance_Name"); + + b.HasIndex("Status") + .HasDatabaseName("IX_WorkflowInstance_Status"); + + b.HasIndex("SubStatus") + .HasDatabaseName("IX_WorkflowInstance_SubStatus"); + + b.HasIndex("Status", "DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_Status_DefinitionId"); + + b.HasIndex("Status", "SubStatus") + .HasDatabaseName("IX_WorkflowInstance_Status_SubStatus"); + + b.HasIndex("SubStatus", "DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_SubStatus_DefinitionId"); + + b.HasIndex("Status", "SubStatus", "DefinitionId", "Version") + .HasDatabaseName("IX_WorkflowInstance_Status_SubStatus_DefinitionId_Version"); + + b.ToTable("WorkflowInstances", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.Designer.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.Designer.cs new file mode 100644 index 000000000..bcc604551 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.Designer.cs @@ -0,0 +1,238 @@ +// +using System; +using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Runtime +{ + [DbContext(typeof(RuntimeElsaDbContext))] + [Migration("20221120175917_Initial")] + partial class Initial + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "6.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Elsa.Workflows.Core.State.WorkflowState", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("CorrelationId") + .HasColumnType("nvarchar(450)"); + + b.Property("CreatedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("DefinitionVersion") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("SubStatus") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("UpdatedAt") + .HasColumnType("datetimeoffset"); + + b.HasKey("Id"); + + b.HasIndex("CorrelationId") + .HasDatabaseName("IX_WorkflowState_CorrelationId"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_WorkflowState_CreatedAt"); + + b.HasIndex("DefinitionId") + .HasDatabaseName("IX_WorkflowState_DefinitionId"); + + b.HasIndex("UpdatedAt") + .HasDatabaseName("IX_WorkflowState_UpdatedAt"); + + b.HasIndex("Status", "DefinitionId") + .HasDatabaseName("IX_WorkflowState_Status_DefinitionId"); + + b.HasIndex("Status", "SubStatus") + .HasDatabaseName("IX_WorkflowState_Status_SubStatus"); + + b.HasIndex("Status", "SubStatus", "DefinitionId", "DefinitionVersion") + .HasDatabaseName("IX_WorkflowState_Status_SubStatus_DefinitionId_DefinitionVersion"); + + b.ToTable("WorkflowStates", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("Hash") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("Hash") + .HasDatabaseName("IX_StoredTrigger_Hash"); + + b.HasIndex("Name") + .HasDatabaseName("IX_StoredTrigger_Name"); + + b.HasIndex("WorkflowDefinitionId") + .HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionId"); + + b.ToTable("WorkflowTriggers", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowExecutionLogRecord", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityInstanceId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityType") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("EventName") + .HasColumnType("nvarchar(450)"); + + b.Property("Message") + .HasColumnType("nvarchar(max)"); + + b.Property("ParentActivityInstanceId") + .HasColumnType("nvarchar(450)"); + + b.Property("PayloadData") + .HasColumnType("nvarchar(max)"); + + b.Property("Source") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetimeoffset"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowVersion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ActivityId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId"); + + b.HasIndex("ActivityInstanceId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityInstanceId"); + + b.HasIndex("ActivityType") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + + b.HasIndex("EventName") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); + + b.HasIndex("ParentActivityInstanceId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ParentActivityInstanceId"); + + b.HasIndex("Timestamp") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp"); + + b.HasIndex("WorkflowDefinitionId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionId"); + + b.HasIndex("WorkflowInstanceId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId"); + + b.HasIndex("WorkflowVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + + b.ToTable("WorkflowExecutionLogRecords", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Models.StoredBookmark", b => + { + b.Property("BookmarkId") + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityTypeName") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("CorrelationId") + .HasColumnType("nvarchar(max)"); + + b.Property("Hash") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("BookmarkId"); + + b.HasIndex(new[] { "ActivityTypeName" }, "IX_StoredBookmark_ActivityTypeName"); + + b.HasIndex(new[] { "ActivityTypeName", "Hash" }, "IX_StoredBookmark_ActivityTypeName_Hash"); + + b.HasIndex(new[] { "ActivityTypeName", "Hash", "WorkflowInstanceId" }, "IX_StoredBookmark_ActivityTypeName_Hash_WorkflowInstanceId"); + + b.HasIndex(new[] { "Hash" }, "IX_StoredBookmark_Hash"); + + b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId"); + + b.ToTable("Bookmarks", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.cs new file mode 100644 index 000000000..27faa1cd5 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/20221120175917_Initial.cs @@ -0,0 +1,256 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Runtime +{ + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "Elsa"); + + migrationBuilder.CreateTable( + name: "Bookmarks", + schema: "Elsa", + columns: table => new + { + BookmarkId = table.Column(type: "nvarchar(450)", nullable: false), + ActivityTypeName = table.Column(type: "nvarchar(450)", nullable: false), + Hash = table.Column(type: "nvarchar(450)", nullable: false), + WorkflowInstanceId = table.Column(type: "nvarchar(450)", nullable: false), + CorrelationId = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Bookmarks", x => x.BookmarkId); + }); + + migrationBuilder.CreateTable( + name: "WorkflowExecutionLogRecords", + schema: "Elsa", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + WorkflowDefinitionId = table.Column(type: "nvarchar(450)", nullable: false), + WorkflowInstanceId = table.Column(type: "nvarchar(450)", nullable: false), + WorkflowVersion = table.Column(type: "int", nullable: false), + ActivityInstanceId = table.Column(type: "nvarchar(450)", nullable: false), + ParentActivityInstanceId = table.Column(type: "nvarchar(450)", nullable: true), + ActivityId = table.Column(type: "nvarchar(450)", nullable: false), + ActivityType = table.Column(type: "nvarchar(450)", nullable: false), + Timestamp = table.Column(type: "datetimeoffset", nullable: false), + EventName = table.Column(type: "nvarchar(450)", nullable: true), + Message = table.Column(type: "nvarchar(max)", nullable: true), + Source = table.Column(type: "nvarchar(max)", nullable: true), + PayloadData = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowExecutionLogRecords", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "WorkflowStates", + schema: "Elsa", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + DefinitionId = table.Column(type: "nvarchar(450)", nullable: false), + DefinitionVersion = table.Column(type: "int", nullable: false), + CorrelationId = table.Column(type: "nvarchar(450)", nullable: true), + Status = table.Column(type: "nvarchar(450)", nullable: false), + SubStatus = table.Column(type: "nvarchar(450)", nullable: false), + CreatedAt = table.Column(type: "datetimeoffset", nullable: false), + Data = table.Column(type: "nvarchar(max)", nullable: true), + UpdatedAt = table.Column(type: "datetimeoffset", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowStates", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "WorkflowTriggers", + schema: "Elsa", + columns: table => new + { + Id = table.Column(type: "nvarchar(450)", nullable: false), + WorkflowDefinitionId = table.Column(type: "nvarchar(450)", nullable: false), + Name = table.Column(type: "nvarchar(450)", nullable: false), + ActivityId = table.Column(type: "nvarchar(max)", nullable: false), + Hash = table.Column(type: "nvarchar(450)", nullable: true), + Data = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowTriggers", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_ActivityTypeName", + schema: "Elsa", + table: "Bookmarks", + column: "ActivityTypeName"); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_ActivityTypeName_Hash", + schema: "Elsa", + table: "Bookmarks", + columns: new[] { "ActivityTypeName", "Hash" }); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_ActivityTypeName_Hash_WorkflowInstanceId", + schema: "Elsa", + table: "Bookmarks", + columns: new[] { "ActivityTypeName", "Hash", "WorkflowInstanceId" }); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_Hash", + schema: "Elsa", + table: "Bookmarks", + column: "Hash"); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_WorkflowInstanceId", + schema: "Elsa", + table: "Bookmarks", + column: "WorkflowInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityId", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "ActivityId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityInstanceId", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "ActivityInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityType", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "ActivityType"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_EventName", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "EventName"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ParentActivityInstanceId", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "ParentActivityInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_Timestamp", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "Timestamp"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_WorkflowDefinitionId", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "WorkflowDefinitionId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_WorkflowInstanceId", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "WorkflowInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_WorkflowVersion", + schema: "Elsa", + table: "WorkflowExecutionLogRecords", + column: "WorkflowVersion"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowState_CorrelationId", + schema: "Elsa", + table: "WorkflowStates", + column: "CorrelationId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowState_CreatedAt", + schema: "Elsa", + table: "WorkflowStates", + column: "CreatedAt"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowState_DefinitionId", + schema: "Elsa", + table: "WorkflowStates", + column: "DefinitionId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowState_Status_DefinitionId", + schema: "Elsa", + table: "WorkflowStates", + columns: new[] { "Status", "DefinitionId" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowState_Status_SubStatus", + schema: "Elsa", + table: "WorkflowStates", + columns: new[] { "Status", "SubStatus" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowState_Status_SubStatus_DefinitionId_DefinitionVersion", + schema: "Elsa", + table: "WorkflowStates", + columns: new[] { "Status", "SubStatus", "DefinitionId", "DefinitionVersion" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowState_UpdatedAt", + schema: "Elsa", + table: "WorkflowStates", + column: "UpdatedAt"); + + migrationBuilder.CreateIndex( + name: "IX_StoredTrigger_Hash", + schema: "Elsa", + table: "WorkflowTriggers", + column: "Hash"); + + migrationBuilder.CreateIndex( + name: "IX_StoredTrigger_Name", + schema: "Elsa", + table: "WorkflowTriggers", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_StoredTrigger_WorkflowDefinitionId", + schema: "Elsa", + table: "WorkflowTriggers", + column: "WorkflowDefinitionId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Bookmarks", + schema: "Elsa"); + + migrationBuilder.DropTable( + name: "WorkflowExecutionLogRecords", + schema: "Elsa"); + + migrationBuilder.DropTable( + name: "WorkflowStates", + schema: "Elsa"); + + migrationBuilder.DropTable( + name: "WorkflowTriggers", + schema: "Elsa"); + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs new file mode 100644 index 000000000..2ce00144c --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs @@ -0,0 +1,236 @@ +// +using System; +using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Migrations.Runtime +{ + [DbContext(typeof(RuntimeElsaDbContext))] + partial class RuntimeElsaDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "6.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Elsa.Workflows.Core.State.WorkflowState", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("CorrelationId") + .HasColumnType("nvarchar(450)"); + + b.Property("CreatedAt") + .HasColumnType("datetimeoffset"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("DefinitionVersion") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("SubStatus") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("UpdatedAt") + .HasColumnType("datetimeoffset"); + + b.HasKey("Id"); + + b.HasIndex("CorrelationId") + .HasDatabaseName("IX_WorkflowState_CorrelationId"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_WorkflowState_CreatedAt"); + + b.HasIndex("DefinitionId") + .HasDatabaseName("IX_WorkflowState_DefinitionId"); + + b.HasIndex("UpdatedAt") + .HasDatabaseName("IX_WorkflowState_UpdatedAt"); + + b.HasIndex("Status", "DefinitionId") + .HasDatabaseName("IX_WorkflowState_Status_DefinitionId"); + + b.HasIndex("Status", "SubStatus") + .HasDatabaseName("IX_WorkflowState_Status_SubStatus"); + + b.HasIndex("Status", "SubStatus", "DefinitionId", "DefinitionVersion") + .HasDatabaseName("IX_WorkflowState_Status_SubStatus_DefinitionId_DefinitionVersion"); + + b.ToTable("WorkflowStates", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("Hash") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("Hash") + .HasDatabaseName("IX_StoredTrigger_Hash"); + + b.HasIndex("Name") + .HasDatabaseName("IX_StoredTrigger_Name"); + + b.HasIndex("WorkflowDefinitionId") + .HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionId"); + + b.ToTable("WorkflowTriggers", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowExecutionLogRecord", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityInstanceId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityType") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("EventName") + .HasColumnType("nvarchar(450)"); + + b.Property("Message") + .HasColumnType("nvarchar(max)"); + + b.Property("ParentActivityInstanceId") + .HasColumnType("nvarchar(450)"); + + b.Property("PayloadData") + .HasColumnType("nvarchar(max)"); + + b.Property("Source") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetimeoffset"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowVersion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ActivityId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId"); + + b.HasIndex("ActivityInstanceId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityInstanceId"); + + b.HasIndex("ActivityType") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType"); + + b.HasIndex("EventName") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName"); + + b.HasIndex("ParentActivityInstanceId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_ParentActivityInstanceId"); + + b.HasIndex("Timestamp") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp"); + + b.HasIndex("WorkflowDefinitionId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionId"); + + b.HasIndex("WorkflowInstanceId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId"); + + b.HasIndex("WorkflowVersion") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion"); + + b.ToTable("WorkflowExecutionLogRecords", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Models.StoredBookmark", b => + { + b.Property("BookmarkId") + .HasColumnType("nvarchar(450)"); + + b.Property("ActivityTypeName") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("CorrelationId") + .HasColumnType("nvarchar(max)"); + + b.Property("Hash") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("BookmarkId"); + + b.HasIndex(new[] { "ActivityTypeName" }, "IX_StoredBookmark_ActivityTypeName"); + + b.HasIndex(new[] { "ActivityTypeName", "Hash" }, "IX_StoredBookmark_ActivityTypeName_Hash"); + + b.HasIndex(new[] { "ActivityTypeName", "Hash", "WorkflowInstanceId" }, "IX_StoredBookmark_ActivityTypeName_Hash_WorkflowInstanceId"); + + b.HasIndex(new[] { "Hash" }, "IX_StoredBookmark_Hash"); + + b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId"); + + b.ToTable("Bookmarks", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..c51ed507a --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.Persistence.EntityFrameworkCore.SqlServer.Abstractions; + +namespace Elsa.Persistence.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.Persistence.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/Extensions.cs new file mode 100644 index 000000000..0f4991eaa --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/ActivityDefinitions/Extensions.cs @@ -0,0 +1,13 @@ +using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; +using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Modules.ActivityDefinitions; + +public static class Extensions +{ + public static EFCoreActivityDefinitionsPersistenceFeature UseSqlServer(this EFCoreActivityDefinitionsPersistenceFeature feature, string connectionString) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlServer(connectionString); + return feature; + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Labels/DesignTimeDbContextFactory.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Labels/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..11f30c2b4 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Labels/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; +using Elsa.Persistence.EntityFrameworkCore.SqlServer.Abstractions; + +namespace Elsa.Persistence.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.Persistence.EntityFrameworkCore.SqlServer/Modules/Labels/Extensions.cs new file mode 100644 index 000000000..89f52e6a1 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Labels/Extensions.cs @@ -0,0 +1,13 @@ +using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; +using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Modules.Labels; + +public static class Extensions +{ + public static EFCoreLabelPersistenceFeature UseSqlServer(this EFCoreLabelPersistenceFeature feature, string connectionString) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlServer(connectionString); + return feature; + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Management/DesignTimeDbContextFactory.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Management/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..5b1518b87 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Management/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.Persistence.EntityFrameworkCore.Modules.Management; +using Elsa.Persistence.EntityFrameworkCore.SqlServer.Abstractions; + +namespace Elsa.Persistence.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.Persistence.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs new file mode 100644 index 000000000..329aae535 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Management/Extensions.cs @@ -0,0 +1,13 @@ +using Elsa.Persistence.EntityFrameworkCore.Modules.Management; +using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Modules.Management; + +public static class Extensions +{ + public static EFCoreManagementPersistenceFeature UseSqlServer(this EFCoreManagementPersistenceFeature feature, string connectionString) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlServer(connectionString); + return feature; + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Runtime/DesignTimeDbContextFactory.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Runtime/DesignTimeDbContextFactory.cs new file mode 100644 index 000000000..9eef62b0a --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Runtime/DesignTimeDbContextFactory.cs @@ -0,0 +1,9 @@ +using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; +using Elsa.Persistence.EntityFrameworkCore.SqlServer.Abstractions; + +namespace Elsa.Persistence.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.Persistence.EntityFrameworkCore.SqlServer/Modules/Runtime/Extensions.cs new file mode 100644 index 000000000..19b32ec1e --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/Modules/Runtime/Extensions.cs @@ -0,0 +1,13 @@ +using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; +using Elsa.Persistence.EntityFrameworkCore.SqlServer.Extensions; + +namespace Elsa.Persistence.EntityFrameworkCore.SqlServer.Modules.Runtime; + +public static class Extensions +{ + public static EFCoreRuntimePersistenceFeature UseSqlServer(this EFCoreRuntimePersistenceFeature feature, string connectionString) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlServer(connectionString); + return feature; + } +} \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.cmd b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.cmd new file mode 100644 index 000000000..2297cbfe9 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.cmd @@ -0,0 +1,4 @@ +dotnet ef migrations add Initial -c ActivityDefinitionsElsaDbContext -o Migrations/ActivityDefinitions +dotnet ef migrations add Initial -c LabelsElsaDbContext -o Migrations/Labels +dotnet ef migrations add Initial -c ManagementElsaDbContext -o Migrations/Management +dotnet ef migrations add Initial -c RuntimeElsaDbContext -o Migrations/Runtime \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.sh b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.sh new file mode 100755 index 000000000..2297cbfe9 --- /dev/null +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.SqlServer/generate-migrations.sh @@ -0,0 +1,4 @@ +dotnet ef migrations add Initial -c ActivityDefinitionsElsaDbContext -o Migrations/ActivityDefinitions +dotnet ef migrations add Initial -c LabelsElsaDbContext -o Migrations/Labels +dotnet ef migrations add Initial -c ManagementElsaDbContext -o Migrations/Management +dotnet ef migrations add Initial -c RuntimeElsaDbContext -o Migrations/Runtime \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs index c323aa3ab..9cf99157c 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Abstractions/SqliteDesignTimeDbContextFactoryBase.cs @@ -2,18 +2,17 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Abstractions +namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Abstractions; + +public abstract class SqliteDesignTimeDbContextFactoryBase : IDesignTimeDbContextFactory where TDbContext : DbContext { - public abstract class SqliteDesignTimeDbContextFactoryBase : IDesignTimeDbContextFactory where TDbContext : DbContext + public TDbContext CreateDbContext(string[] args) { - public TDbContext CreateDbContext(string[] args) - { - var builder = new DbContextOptionsBuilder(); - var connectionString = args.Any() ? args[0] : Constants.DefaultConnectionString; + var builder = new DbContextOptionsBuilder(); + var connectionString = args.Any() ? args[0] : Constants.DefaultConnectionString; - builder.UseElsaSqlite(connectionString); + builder.UseElsaSqlite(connectionString); - return (TDbContext)Activator.CreateInstance(typeof(TDbContext), builder.Options)!; - } + return (TDbContext)Activator.CreateInstance(typeof(TDbContext), builder.Options)!; } } \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Elsa.Persistence.EntityFrameworkCore.Sqlite.csproj b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Elsa.Persistence.EntityFrameworkCore.Sqlite.csproj index 9a173635f..00caf3fee 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Elsa.Persistence.EntityFrameworkCore.Sqlite.csproj +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Elsa.Persistence.EntityFrameworkCore.Sqlite.csproj @@ -6,13 +6,13 @@ net6.0 - Provides a SQLite migrations for various modules. + Provides SQLite migrations for various modules. elsa module persistence efcore sqlite - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -22,4 +22,8 @@ + + + + diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs index bcd84e4af..87876aadc 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Extensions/DbContextOptionsBuilderExtensions.cs @@ -1,13 +1,12 @@ using Elsa.Persistence.EntityFrameworkCore.Common; using Microsoft.EntityFrameworkCore; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions +namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; + +public static class DbContextOptionsBuilderExtensions { - public static class DbContextOptionsBuilderExtensions - { - public static DbContextOptionsBuilder UseElsaSqlite(this DbContextOptionsBuilder builder, string connectionString = Constants.DefaultConnectionString) => - builder.UseSqlite(connectionString, db => db - .MigrationsAssembly(typeof(DbContextOptionsBuilderExtensions).Assembly.GetName().Name) - .MigrationsHistoryTable(DbContextBase.MigrationsHistoryTable, DbContextBase.ElsaSchema)); - } + public static DbContextOptionsBuilder UseElsaSqlite(this DbContextOptionsBuilder builder, string connectionString = Constants.DefaultConnectionString) => + builder.UseSqlite(connectionString, db => db + .MigrationsAssembly(typeof(DbContextOptionsBuilderExtensions).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaDbContextBase.MigrationsHistoryTable, ElsaDbContextBase.ElsaSchema)); } \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20220906152713_Initial.Designer.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.Designer.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20220906152713_Initial.Designer.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.Designer.cs index 6b8ebb35f..92e3b818b 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20220906152713_Initial.Designer.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.Designer.cs @@ -9,14 +9,14 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.ActivityDefinitions { - [DbContext(typeof(ActivityDefinitionsDbContext))] - [Migration("20220906152713_Initial")] + [DbContext(typeof(ActivityDefinitionsElsaDbContext))] + [Migration("20221120175500_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "6.0.8"); + modelBuilder.HasAnnotation("ProductVersion", "6.0.11"); modelBuilder.Entity("Elsa.ActivityDefinitions.Entities.ActivityDefinition", b => { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20220906152713_Initial.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.cs similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20220906152713_Initial.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/20221120175500_Initial.cs diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs similarity index 92% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsDbContextModelSnapshot.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs index b905840d2..4d177e7b6 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsDbContextModelSnapshot.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/ActivityDefinitions/ActivityDefinitionsElsaDbContextModelSnapshot.cs @@ -8,13 +8,13 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.ActivityDefinitions { - [DbContext(typeof(ActivityDefinitionsDbContext))] - partial class ActivityDefinitionsDbContextModelSnapshot : ModelSnapshot + [DbContext(typeof(ActivityDefinitionsElsaDbContext))] + partial class ActivityDefinitionsElsaDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "6.0.8"); + modelBuilder.HasAnnotation("ProductVersion", "6.0.11"); modelBuilder.Entity("Elsa.ActivityDefinitions.Entities.ActivityDefinition", b => { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20220906152718_Initial.Designer.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.Designer.cs similarity index 94% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20220906152718_Initial.Designer.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.Designer.cs index 53fdb2f7c..32d8e01e7 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20220906152718_Initial.Designer.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.Designer.cs @@ -9,14 +9,14 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Labels { - [DbContext(typeof(LabelsDbContext))] - [Migration("20220906152718_Initial")] + [DbContext(typeof(LabelsElsaDbContext))] + [Migration("20221120175503_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "6.0.8"); + modelBuilder.HasAnnotation("ProductVersion", "6.0.11"); modelBuilder.Entity("Elsa.Labels.Entities.Label", b => { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20220906152718_Initial.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.cs similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20220906152718_Initial.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/20221120175503_Initial.cs diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs similarity index 93% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsDbContextModelSnapshot.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs index 9c458d343..0c4ab6f09 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsDbContextModelSnapshot.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs @@ -8,13 +8,13 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Labels { - [DbContext(typeof(LabelsDbContext))] - partial class LabelsDbContextModelSnapshot : ModelSnapshot + [DbContext(typeof(LabelsElsaDbContext))] + partial class LabelsElsaDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "6.0.8"); + modelBuilder.HasAnnotation("ProductVersion", "6.0.11"); modelBuilder.Entity("Elsa.Labels.Entities.Label", b => { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20220906152722_Initial.Designer.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.Designer.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20220906152722_Initial.Designer.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.Designer.cs index 5b9447eed..431ca3ac9 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20220906152722_Initial.Designer.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.Designer.cs @@ -10,14 +10,14 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Management { - [DbContext(typeof(ManagementDbContext))] - [Migration("20220906152722_Initial")] + [DbContext(typeof(ManagementElsaDbContext))] + [Migration("20221120175506_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "6.0.8"); + modelBuilder.HasAnnotation("ProductVersion", "6.0.11"); modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowDefinition", b => { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20220906152722_Initial.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.cs similarity index 99% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20220906152722_Initial.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.cs index 97af63d1b..39124b935 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20220906152722_Initial.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/20221120175506_Initial.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using System; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementDbContextModelSnapshot.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs index 74b469e74..80d75fd91 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementDbContextModelSnapshot.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs @@ -9,13 +9,13 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Management { - [DbContext(typeof(ManagementDbContext))] - partial class ManagementDbContextModelSnapshot : ModelSnapshot + [DbContext(typeof(ManagementElsaDbContext))] + partial class ManagementElsaDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "6.0.8"); + modelBuilder.HasAnnotation("ProductVersion", "6.0.11"); modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowDefinition", b => { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221117150532_Initial.Designer.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.Designer.cs similarity index 98% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221117150532_Initial.Designer.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.Designer.cs index b14fd387a..c6b08d8bc 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221117150532_Initial.Designer.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.Designer.cs @@ -10,14 +10,14 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Runtime { - [DbContext(typeof(RuntimeDbContext))] - [Migration("20221117150532_Initial")] + [DbContext(typeof(RuntimeElsaDbContext))] + [Migration("20221120175509_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "6.0.8"); + modelBuilder.HasAnnotation("ProductVersion", "6.0.11"); modelBuilder.Entity("Elsa.Workflows.Core.State.WorkflowState", b => { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221117150532_Initial.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.cs similarity index 100% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221117150532_Initial.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/20221120175509_Initial.cs diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeDbContextModelSnapshot.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs similarity index 97% rename from src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeDbContextModelSnapshot.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs index d83568e1e..3b44668e3 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeDbContextModelSnapshot.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs @@ -9,13 +9,13 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Migrations.Runtime { - [DbContext(typeof(RuntimeDbContext))] - partial class RuntimeDbContextModelSnapshot : ModelSnapshot + [DbContext(typeof(RuntimeElsaDbContext))] + partial class RuntimeElsaDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "6.0.8"); + modelBuilder.HasAnnotation("ProductVersion", "6.0.11"); modelBuilder.Entity("Elsa.Workflows.Core.State.WorkflowState", b => { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs index b5241c184..62c89d573 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/DesignTimeDbContextFactory.cs @@ -4,6 +4,6 @@ using Elsa.Persistence.EntityFrameworkCore.Sqlite.Abstractions; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions; // ReSharper disable once UnusedType.Global -public class DesignTimeDbContextFactory : SqliteDesignTimeDbContextFactoryBase +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.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/Extensions.cs index 770a9d1ed..5cc0475fc 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/Extensions.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/ActivityDefinitions/Extensions.cs @@ -1,14 +1,13 @@ using Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; using Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions +namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.ActivityDefinitions; + +public static class Extensions { - public static class Extensions + public static EFCoreActivityDefinitionsPersistenceFeature UseSqlite(this EFCoreActivityDefinitionsPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) { - public static EFCoreActivityDefinitionsPersistenceFeature UseSqlite(this EFCoreActivityDefinitionsPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) - { - feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString); - return feature; - } + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString); + return feature; } } \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/DesignTimeDbContextFactory.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/DesignTimeDbContextFactory.cs index 3c7420879..e51f78f67 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/DesignTimeDbContextFactory.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/DesignTimeDbContextFactory.cs @@ -4,6 +4,6 @@ using Elsa.Persistence.EntityFrameworkCore.Sqlite.Abstractions; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Labels; // ReSharper disable once UnusedType.Global -public class DesignTimeDbContextFactory : SqliteDesignTimeDbContextFactoryBase +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.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/Extensions.cs index c968890c7..83a90fe6e 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/Extensions.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Labels/Extensions.cs @@ -1,14 +1,13 @@ using Elsa.Persistence.EntityFrameworkCore.Modules.Labels; using Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Labels +namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Labels; + +public static class Extensions { - public static class Extensions + public static EFCoreLabelPersistenceFeature UseSqlite(this EFCoreLabelPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) { - public static EFCoreLabelPersistenceFeature UseSqlite(this EFCoreLabelPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) - { - feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString); - return feature; - } + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString); + return feature; } } \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/DesignTimeDbContextFactory.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/DesignTimeDbContextFactory.cs index d550c324b..af0baae50 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/DesignTimeDbContextFactory.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/DesignTimeDbContextFactory.cs @@ -4,6 +4,6 @@ using Elsa.Persistence.EntityFrameworkCore.Sqlite.Abstractions; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Management; // ReSharper disable once UnusedType.Global -public class DesignTimeDbContextFactory : SqliteDesignTimeDbContextFactoryBase +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.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs index cf78180a5..4d8b424c4 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Management/Extensions.cs @@ -1,14 +1,13 @@ using Elsa.Persistence.EntityFrameworkCore.Modules.Management; using Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Management +namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Management; + +public static class Extensions { - public static class Extensions + public static EFCoreManagementPersistenceFeature UseSqlite(this EFCoreManagementPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) { - public static EFCoreManagementPersistenceFeature UseSqlite(this EFCoreManagementPersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) - { - feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString); - return feature; - } + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString); + return feature; } } \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/DesignTimeDbContextFactory.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/DesignTimeDbContextFactory.cs index 13188c026..bd37205ab 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/DesignTimeDbContextFactory.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/DesignTimeDbContextFactory.cs @@ -4,6 +4,6 @@ using Elsa.Persistence.EntityFrameworkCore.Sqlite.Abstractions; namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Runtime; // ReSharper disable once UnusedType.Global -public class SqliteDesignTimeRuntimeDbContextFactory : SqliteDesignTimeDbContextFactoryBase +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.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/Extensions.cs index c4317eb38..3f6371af7 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/Extensions.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/Modules/Runtime/Extensions.cs @@ -1,14 +1,13 @@ using Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; using Elsa.Persistence.EntityFrameworkCore.Sqlite.Extensions; -namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Runtime +namespace Elsa.Persistence.EntityFrameworkCore.Sqlite.Modules.Runtime; + +public static class Extensions { - public static class Extensions + public static EFCoreRuntimePersistenceFeature UseSqlite(this EFCoreRuntimePersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) { - public static EFCoreRuntimePersistenceFeature UseSqlite(this EFCoreRuntimePersistenceFeature feature, string connectionString = Constants.DefaultConnectionString) - { - feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString); - return feature; - } + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaSqlite(connectionString); + return feature; } } \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.cmd b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.cmd index 4f5e89104..2297cbfe9 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.cmd +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.cmd @@ -1,4 +1,4 @@ -dotnet ef migrations add Initial -c ActivityDefinitionsDbContext -o Migrations/ActivityDefinitions -dotnet ef migrations add Initial -c LabelsDbContext -o Migrations/Labels -dotnet ef migrations add Initial -c ManagementDbContext -o Migrations/Management -dotnet ef migrations add Initial -c RuntimeDbContext -o Migrations/Runtime \ No newline at end of file +dotnet ef migrations add Initial -c ActivityDefinitionsElsaDbContext -o Migrations/ActivityDefinitions +dotnet ef migrations add Initial -c LabelsElsaDbContext -o Migrations/Labels +dotnet ef migrations add Initial -c ManagementElsaDbContext -o Migrations/Management +dotnet ef migrations add Initial -c RuntimeElsaDbContext -o Migrations/Runtime \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.sh b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.sh old mode 100644 new mode 100755 index 4f5e89104..2297cbfe9 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.sh +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore.Sqlite/generate-migrations.sh @@ -1,4 +1,4 @@ -dotnet ef migrations add Initial -c ActivityDefinitionsDbContext -o Migrations/ActivityDefinitions -dotnet ef migrations add Initial -c LabelsDbContext -o Migrations/Labels -dotnet ef migrations add Initial -c ManagementDbContext -o Migrations/Management -dotnet ef migrations add Initial -c RuntimeDbContext -o Migrations/Runtime \ No newline at end of file +dotnet ef migrations add Initial -c ActivityDefinitionsElsaDbContext -o Migrations/ActivityDefinitions +dotnet ef migrations add Initial -c LabelsElsaDbContext -o Migrations/Labels +dotnet ef migrations add Initial -c ManagementElsaDbContext -o Migrations/Management +dotnet ef migrations add Initial -c RuntimeElsaDbContext -o Migrations/Runtime \ No newline at end of file diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/DbContextBase.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/ElsaDbContextBase.cs similarity index 93% rename from src/modules/Elsa.Persistence.EntityFrameworkCore/Common/DbContextBase.cs rename to src/modules/Elsa.Persistence.EntityFrameworkCore/Common/ElsaDbContextBase.cs index 688fbbdae..b05756292 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/DbContextBase.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Common/ElsaDbContextBase.cs @@ -7,17 +7,18 @@ namespace Elsa.Persistence.EntityFrameworkCore.Common; /// /// An optional base class to implement with some opinions on certain converters to install for certain DB providers. /// -public abstract class DbContextBase : DbContext +public abstract class ElsaDbContextBase : DbContext { public const string ElsaSchema = "Elsa"; public const string MigrationsHistoryTable = "__EFMigrationsHistory"; - protected DbContextBase(DbContextOptions options) : base(options) + protected ElsaDbContextBase(DbContextOptions options) : base(options) { } protected virtual string Schema => ElsaSchema; + /// protected override void OnModelCreating(ModelBuilder modelBuilder) { if (!string.IsNullOrWhiteSpace(Schema)) diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj b/src/modules/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj index 3d904b959..cec71b21b 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Elsa.Persistence.EntityFrameworkCore.csproj @@ -14,10 +14,10 @@ - - + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs index ad0b6cd54..57c5e468f 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/ActivityDefinitionStore.cs @@ -14,10 +14,10 @@ namespace Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; public class EFCoreActivityDefinitionStore : IActivityDefinitionStore { - private readonly Store _store; + private readonly Store _store; private readonly SerializerOptionsProvider _serializerOptionsProvider; - public EFCoreActivityDefinitionStore(Store store, SerializerOptionsProvider serializerOptionsProvider) + public EFCoreActivityDefinitionStore(Store store, SerializerOptionsProvider serializerOptionsProvider) { _store = store; _serializerOptionsProvider = serializerOptionsProvider; @@ -77,7 +77,7 @@ public class EFCoreActivityDefinitionStore : IActivityDefinitionStore return await _store.DeleteWhereAsync(x => definitionIdList.Contains(x.DefinitionId), cancellationToken); } - public ActivityDefinition Save(ActivityDefinitionsDbContext dbContext, ActivityDefinition entity) + public ActivityDefinition Save(ActivityDefinitionsElsaDbContext activityDefinitionsElsaDbContext, ActivityDefinition entity) { var data = new { @@ -89,17 +89,17 @@ public class EFCoreActivityDefinitionStore : IActivityDefinitionStore var options = _serializerOptionsProvider.CreatePersistenceOptions(); var json = JsonSerializer.Serialize(data, options); - dbContext.Entry(entity).Property("Data").CurrentValue = json; + activityDefinitionsElsaDbContext.Entry(entity).Property("Data").CurrentValue = json; return entity; } - public ActivityDefinition? Load(ActivityDefinitionsDbContext dbContext, ActivityDefinition? entity) + public ActivityDefinition? Load(ActivityDefinitionsElsaDbContext activityDefinitionsElsaDbContext, ActivityDefinition? entity) { if (entity == null) return null; var data = new ActivityDefinitionState(entity.Variables, entity.Metadata, entity.ApplicationProperties); - var json = (string?)dbContext.Entry(entity).Property("Data").CurrentValue; + var json = (string?)activityDefinitionsElsaDbContext.Entry(entity).Property("Data").CurrentValue; if (!string.IsNullOrWhiteSpace(json)) { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs index 774bc8e35..99b9e0f99 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/DbContext.cs @@ -4,9 +4,9 @@ using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; -public class ActivityDefinitionsDbContext : DbContextBase +public class ActivityDefinitionsElsaDbContext : ElsaDbContextBase { - public ActivityDefinitionsDbContext(DbContextOptions options) : base(options) + public ActivityDefinitionsElsaDbContext(DbContextOptions options) : base(options) { } diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs index 80ca574bd..db82c9937 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/ActivityDefinitions/Feature.cs @@ -8,7 +8,7 @@ using Microsoft.Extensions.DependencyInjection; namespace Elsa.Persistence.EntityFrameworkCore.Modules.ActivityDefinitions; [DependsOn(typeof(ActivityDefinitionsFeature))] -public class EFCoreActivityDefinitionsPersistenceFeature : PersistenceFeatureBase +public class EFCoreActivityDefinitionsPersistenceFeature : PersistenceFeatureBase { public EFCoreActivityDefinitionsPersistenceFeature(IModule module) : base(module) { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/DbContext.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/DbContext.cs index ccf4d273a..7ca040df6 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/DbContext.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/DbContext.cs @@ -4,9 +4,9 @@ using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFrameworkCore.Modules.Labels; -public class LabelsDbContext : DbContextBase +public class LabelsElsaDbContext : ElsaDbContextBase { - public LabelsDbContext(DbContextOptions options) : base(options) + public LabelsElsaDbContext(DbContextOptions options) : base(options) { } diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/Feature.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/Feature.cs index e99592ef2..cfc115d83 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/Feature.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/Feature.cs @@ -9,7 +9,7 @@ using Microsoft.Extensions.DependencyInjection; namespace Elsa.Persistence.EntityFrameworkCore.Modules.Labels; [DependsOn(typeof(LabelsFeature))] -public class EFCoreLabelPersistenceFeature : PersistenceFeatureBase +public class EFCoreLabelPersistenceFeature : PersistenceFeatureBase { public EFCoreLabelPersistenceFeature(IModule module) : base(module) { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/LabelStore.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/LabelStore.cs index b8c30a27c..b8e36f3c6 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/LabelStore.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/LabelStore.cs @@ -8,10 +8,10 @@ namespace Elsa.Persistence.EntityFrameworkCore.Modules.Labels; public class EFCoreLabelStore : ILabelStore { - private readonly Store _labelStore; - private readonly Store _workflowDefinitionLabelStore; + private readonly Store _labelStore; + private readonly Store _workflowDefinitionLabelStore; - public EFCoreLabelStore(Store labelStore, Store workflowDefinitionLabelStore) + public EFCoreLabelStore(Store labelStore, Store workflowDefinitionLabelStore) { _labelStore = labelStore; _workflowDefinitionLabelStore = workflowDefinitionLabelStore; diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/WorkflowDefinitionLabelStore.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/WorkflowDefinitionLabelStore.cs index 3047e7cc7..6a5120a26 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/WorkflowDefinitionLabelStore.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Labels/WorkflowDefinitionLabelStore.cs @@ -6,8 +6,8 @@ namespace Elsa.Persistence.EntityFrameworkCore.Modules.Labels; public class EFCoreWorkflowDefinitionLabelStore : IWorkflowDefinitionLabelStore { - private readonly Store _store; - public EFCoreWorkflowDefinitionLabelStore(Store store) => _store = store; + private readonly Store _store; + public EFCoreWorkflowDefinitionLabelStore(Store store) => _store = store; public async Task SaveAsync(WorkflowDefinitionLabel record, CancellationToken cancellationToken = default) => await _store.SaveAsync(record, cancellationToken); public async Task SaveManyAsync(IEnumerable records, CancellationToken cancellationToken = default) => await _store.SaveManyAsync(records, cancellationToken); diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/DbContext.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/DbContext.cs index 644f73aa4..35458e301 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/DbContext.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/DbContext.cs @@ -4,9 +4,9 @@ using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFrameworkCore.Modules.Management; -public class ManagementDbContext : DbContextBase +public class ManagementElsaDbContext : ElsaDbContextBase { - public ManagementDbContext(DbContextOptions options) : base(options) + public ManagementElsaDbContext(DbContextOptions options) : base(options) { } diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/Feature.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/Feature.cs index aa741d66c..dda159855 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/Feature.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/Feature.cs @@ -8,7 +8,7 @@ using Microsoft.Extensions.DependencyInjection; namespace Elsa.Persistence.EntityFrameworkCore.Modules.Management; [DependsOn(typeof(WorkflowManagementFeature))] -public class EFCoreManagementPersistenceFeature : PersistenceFeatureBase +public class EFCoreManagementPersistenceFeature : PersistenceFeatureBase { public EFCoreManagementPersistenceFeature(IModule module) : base(module) { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs index 2564a975f..cf9d4cddf 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/WorkflowDefinitionStore.cs @@ -14,10 +14,10 @@ namespace Elsa.Persistence.EntityFrameworkCore.Modules.Management; public class EFCoreWorkflowDefinitionStore : IWorkflowDefinitionStore { - private readonly Store _store; + private readonly Store _store; private readonly SerializerOptionsProvider _serializerOptionsProvider; - public EFCoreWorkflowDefinitionStore(Store store, SerializerOptionsProvider serializerOptionsProvider) + public EFCoreWorkflowDefinitionStore(Store store, SerializerOptionsProvider serializerOptionsProvider) { _store = store; _serializerOptionsProvider = serializerOptionsProvider; @@ -122,7 +122,7 @@ public class EFCoreWorkflowDefinitionStore : IWorkflowDefinitionStore return await _store.AnyAsync(predicate, cancellationToken); } - private WorkflowDefinition Save(ManagementDbContext dbContext, WorkflowDefinition entity) + private WorkflowDefinition Save(ManagementElsaDbContext managementElsaDbContext, WorkflowDefinition entity) { var data = new { @@ -134,17 +134,17 @@ public class EFCoreWorkflowDefinitionStore : IWorkflowDefinitionStore var options = _serializerOptionsProvider.CreatePersistenceOptions(); var json = JsonSerializer.Serialize(data, options); - dbContext.Entry(entity).Property("Data").CurrentValue = json; + managementElsaDbContext.Entry(entity).Property("Data").CurrentValue = json; return entity; } - private WorkflowDefinition? Load(ManagementDbContext dbContext, WorkflowDefinition? entity) + private WorkflowDefinition? Load(ManagementElsaDbContext managementElsaDbContext, WorkflowDefinition? entity) { if (entity == null) return null; var data = new WorkflowDefinitionState(entity.Variables, entity.Metadata, entity.ApplicationProperties); - var json = (string?)dbContext.Entry(entity).Property("Data").CurrentValue; + var json = (string?)managementElsaDbContext.Entry(entity).Property("Data").CurrentValue; if (!string.IsNullOrWhiteSpace(json)) { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs index 9ac05f67f..f488673f0 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs @@ -17,13 +17,13 @@ namespace Elsa.Persistence.EntityFrameworkCore.Modules.Management; /// public class EFCoreWorkflowInstanceStore : IWorkflowInstanceStore { - private readonly Store _store; + private readonly Store _store; private readonly SerializerOptionsProvider _serializerOptionsProvider; /// /// Constructor. /// - public EFCoreWorkflowInstanceStore(Store store, SerializerOptionsProvider serializerOptionsProvider) + public EFCoreWorkflowInstanceStore(Store store, SerializerOptionsProvider serializerOptionsProvider) { _store = store; _serializerOptionsProvider = serializerOptionsProvider; @@ -94,23 +94,23 @@ public class EFCoreWorkflowInstanceStore : IWorkflowInstanceStore return await query.PaginateAsync(x => WorkflowInstanceSummary.FromInstance(x), pageArgs); } - public WorkflowInstance Save(ManagementDbContext dbContext, WorkflowInstance entity) + public WorkflowInstance Save(ManagementElsaDbContext managementElsaDbContext, WorkflowInstance entity) { var data = new WorkflowInstanceState(entity.WorkflowState, entity.Fault); var options = _serializerOptionsProvider.CreatePersistenceOptions(ReferenceHandler.Preserve); var json = JsonSerializer.Serialize(data, options); - dbContext.Entry(entity).Property("Data").CurrentValue = json; + managementElsaDbContext.Entry(entity).Property("Data").CurrentValue = json; return entity; } - public WorkflowInstance? Load(ManagementDbContext dbContext, WorkflowInstance? entity) + public WorkflowInstance? Load(ManagementElsaDbContext managementElsaDbContext, WorkflowInstance? entity) { if (entity == null) return null; var data = new WorkflowInstanceState(entity.WorkflowState, entity.Fault); - var json = (string?)dbContext.Entry(entity).Property("Data").CurrentValue; + var json = (string?)managementElsaDbContext.Entry(entity).Property("Data").CurrentValue; if (!string.IsNullOrWhiteSpace(json)) { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/BookmarkStore.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/BookmarkStore.cs index 766018f4d..50d4b4f9b 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/BookmarkStore.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/BookmarkStore.cs @@ -6,8 +6,8 @@ namespace Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; public class EFCoreBookmarkStore : IBookmarkStore { - private readonly Store _store; - public EFCoreBookmarkStore(Store store) => _store = store; + private readonly Store _store; + public EFCoreBookmarkStore(Store store) => _store = store; public async ValueTask SaveAsync( string activityTypeName, diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/DbContext.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/DbContext.cs index f51297d00..152194a0e 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/DbContext.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/DbContext.cs @@ -7,9 +7,9 @@ using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; -public class RuntimeDbContext : DbContextBase +public class RuntimeElsaDbContext : ElsaDbContextBase { - public RuntimeDbContext(DbContextOptions options) : base(options) + public RuntimeElsaDbContext(DbContextOptions options) : base(options) { } diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/RuntimePersistenceFeature.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/RuntimePersistenceFeature.cs index 0d9160c5c..2d10c232c 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/RuntimePersistenceFeature.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/RuntimePersistenceFeature.cs @@ -10,7 +10,7 @@ using Microsoft.Extensions.DependencyInjection; namespace Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; [DependsOn(typeof(WorkflowRuntimeFeature))] -public class EFCoreRuntimePersistenceFeature : PersistenceFeatureBase +public class EFCoreRuntimePersistenceFeature : PersistenceFeatureBase { public EFCoreRuntimePersistenceFeature(IModule module) : base(module) { diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/TriggerStore.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/TriggerStore.cs index c5d451188..d020702e9 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/TriggerStore.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/TriggerStore.cs @@ -6,9 +6,9 @@ namespace Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; public class EFCoreTriggerStore : ITriggerStore { - private readonly Store _store; + private readonly Store _store; - public EFCoreTriggerStore(Store store) + public EFCoreTriggerStore(Store store) { _store = store; } diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs index f4291bb5c..bb4c03f48 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/WorkflowExecutionLogStore.cs @@ -8,8 +8,8 @@ namespace Elsa.Persistence.EntityFrameworkCore.Modules.Runtime; public class EFCoreWorkflowExecutionLogStore : IWorkflowExecutionLogStore { - private readonly Store _store; - public EFCoreWorkflowExecutionLogStore(Store store) => _store = store; + private readonly Store _store; + public EFCoreWorkflowExecutionLogStore(Store store) => _store = store; public async Task SaveAsync(WorkflowExecutionLogRecord record, CancellationToken cancellationToken = default) => await _store.SaveAsync(record, cancellationToken); public async Task SaveManyAsync(IEnumerable records, CancellationToken cancellationToken = default) => await _store.SaveManyAsync(records, cancellationToken); diff --git a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/WorkflowStateStore.cs b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/WorkflowStateStore.cs index 9920ee559..c392b416d 100644 --- a/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/WorkflowStateStore.cs +++ b/src/modules/Elsa.Persistence.EntityFrameworkCore/Modules/Runtime/WorkflowStateStore.cs @@ -14,11 +14,11 @@ public class EFCoreWorkflowStateStore : IWorkflowStateStore { private readonly SerializerOptionsProvider _serializerOptionsProvider; private readonly ISystemClock _systemClock; - private readonly IDbContextFactory _dbContextFactory; + private readonly IDbContextFactory _dbContextFactory; public EFCoreWorkflowStateStore( - IDbContextFactory dbContextFactory, - Store store, + IDbContextFactory dbContextFactory, + Store store, SerializerOptionsProvider serializerOptionsProvider, ISystemClock systemClock) { diff --git a/src/modules/Elsa.WorkflowContexts/Extensions/WorkflowExecutionContextExtensions.cs b/src/modules/Elsa.WorkflowContexts/Extensions/WorkflowExecutionContextExtensions.cs index 2c0517452..65a65b5c3 100644 --- a/src/modules/Elsa.WorkflowContexts/Extensions/WorkflowExecutionContextExtensions.cs +++ b/src/modules/Elsa.WorkflowContexts/Extensions/WorkflowExecutionContextExtensions.cs @@ -8,11 +8,11 @@ namespace Elsa.WorkflowContexts.Extensions; public static class WorkflowExecutionContextExtensions { public static void SetWorkflowContext(this WorkflowExecutionContext workflowExecutionContext, WorkflowContext workflowContext, object value) => workflowExecutionContext.TransientProperties.SetWorkflowContext(workflowContext, value); - public static void SetWorkflowContext(this ExpressionExecutionContext expressionExecutionContext, WorkflowContext workflowContext, object value) => expressionExecutionContext.GetTransientProperties().SetWorkflowContext(workflowContext, value); + public static void SetWorkflowContext(this ExpressionExecutionContext expressionExecutionContext, WorkflowContext workflowContext, object value) => expressionExecutionContext.GetWorkflowExecutionContext().TransientProperties.SetWorkflowContext(workflowContext, value); public static T? GetWorkflowContext(this WorkflowExecutionContext workflowExecutionContext) => (T?)workflowExecutionContext.TransientProperties.GetWorkflowContextByProviderType(typeof(TProvider)); - public static T? GetWorkflowContext(this ExpressionExecutionContext expressionExecutionContext) => (T?)expressionExecutionContext.GetTransientProperties().GetWorkflowContextByProviderType(typeof(TProvider)); + public static T? GetWorkflowContext(this ExpressionExecutionContext expressionExecutionContext) => (T?)expressionExecutionContext.GetWorkflowExecutionContext().TransientProperties.GetWorkflowContextByProviderType(typeof(TProvider)); public static object? GetWorkflowContext(this WorkflowExecutionContext workflowExecutionContext, WorkflowContext workflowContext) => workflowExecutionContext.TransientProperties.GetWorkflowContext(workflowContext); - public static object? GetWorkflowContext(this ExpressionExecutionContext expressionExecutionContext, WorkflowContext workflowContext) => expressionExecutionContext.GetTransientProperties().GetWorkflowContext(workflowContext); + public static object? GetWorkflowContext(this ExpressionExecutionContext expressionExecutionContext, WorkflowContext workflowContext) => expressionExecutionContext.GetWorkflowExecutionContext().TransientProperties.GetWorkflowContext(workflowContext); private static void SetWorkflowContext(this IDictionary transientProperties, WorkflowContext workflowContext, object value) { diff --git a/src/modules/Elsa.WorkflowContexts/Models/WorkflowContext.cs b/src/modules/Elsa.WorkflowContexts/Models/WorkflowContext.cs index 28f18f579..6f2ff9996 100644 --- a/src/modules/Elsa.WorkflowContexts/Models/WorkflowContext.cs +++ b/src/modules/Elsa.WorkflowContexts/Models/WorkflowContext.cs @@ -22,7 +22,9 @@ public class WorkflowContext : WorkflowContext where TProvider:IWo public T? Get(ExpressionExecutionContext context) { - var workflowContexts = (IDictionary)context.GetTransientProperties()["WorkflowContexts"]!; + var workflowExecutionContext = context.GetWorkflowExecutionContext(); + var transientProperties = workflowExecutionContext.TransientProperties; + var workflowContexts = (IDictionary)transientProperties["WorkflowContexts"]!; return workflowContexts.TryGetValue(this, out var workflowContext) ? (T?)workflowContext : default; } } \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs b/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs index de143cb47..47449f53f 100644 --- a/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs +++ b/src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs @@ -5,21 +5,27 @@ namespace Elsa.Workflows.Core; public static class ExpressionExecutionContextExtensions { - public static readonly object WorkflowKey = new(); - public static readonly object TransientPropertiesKey = new(); + public static readonly object WorkflowExecutionContextKey = new(); public static readonly object InputKey = new(); + public static readonly object WorkflowKey = new(); - public static IDictionary CreateApplicationPropertiesFrom(Workflow workflow, IDictionary transientProperties, IDictionary input) => + public static IDictionary CreateActivityExecutionContextPropertiesFrom(WorkflowExecutionContext workflowExecutionContext, IDictionary input) => + new Dictionary + { + [WorkflowExecutionContextKey] = workflowExecutionContext, + [InputKey] = input, + [WorkflowKey] = workflowExecutionContext.Workflow, + }; + + public static IDictionary CreateTriggerIndexingPropertiesFrom(Workflow workflow, IDictionary input) => new Dictionary { [WorkflowKey] = workflow, - [TransientPropertiesKey] = transientProperties, [InputKey] = input }; - public static Workflow GetWorkflow(this ExpressionExecutionContext context) => (Workflow)context.ApplicationProperties[WorkflowKey]; - public static IDictionary GetTransientProperties(this ExpressionExecutionContext context) => (IDictionary)context.ApplicationProperties[TransientPropertiesKey]; - public static IDictionary GetInput(this ExpressionExecutionContext context) => (IDictionary)context.ApplicationProperties[InputKey]; + public static WorkflowExecutionContext GetWorkflowExecutionContext(this ExpressionExecutionContext context) => (WorkflowExecutionContext)context.TransientProperties[WorkflowExecutionContextKey]; + public static IDictionary GetInput(this ExpressionExecutionContext context) => (IDictionary)context.TransientProperties[InputKey]; public static T? Get(this ExpressionExecutionContext context, Input? input) => input != null ? (T?)context.GetBlock(input.MemoryBlockReference).Value : default; public static T? Get(this ExpressionExecutionContext context, Output output) => (T?)context.GetBlock(output.MemoryBlockReference).Value; @@ -27,7 +33,6 @@ public static class ExpressionExecutionContextExtensions public static T? GetVariable(this ExpressionExecutionContext context, string name) => (T?)context.GetVariable(name); public static T? GetVariable(this ExpressionExecutionContext context) => (T?)context.GetVariable(typeof(T).Name); public static object? GetVariable(this ExpressionExecutionContext context, string name) => new Variable(name).Get(context); - public static Variable SetVariable(this ExpressionExecutionContext context, T? value) => context.SetVariable(typeof(T).Name, value); public static Variable SetVariable(this ExpressionExecutionContext context, string name, T? value) => context.SetVariable(name, (object?)value); @@ -40,11 +45,6 @@ public static class ExpressionExecutionContextExtensions public static void Set(this ExpressionExecutionContext context, Output? output, object? value) { - if(output != null) - context.Set(output.MemoryBlockReference, value); - //var convertedValue = output.ValueConverter?.Invoke(value) ?? value; - //var convertedValue = value; - //var targets = new[] { output.MemoryReference }.Concat(output.Targets); - //foreach (var target in targets) context.Set(target, convertedValue); + if(output != null) context.Set(output.MemoryBlockReference, value); } } \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Core/Models/WorkflowExecutionContext.cs b/src/modules/Elsa.Workflows.Core/Models/WorkflowExecutionContext.cs index bbac94966..3e8a4545c 100644 --- a/src/modules/Elsa.Workflows.Core/Models/WorkflowExecutionContext.cs +++ b/src/modules/Elsa.Workflows.Core/Models/WorkflowExecutionContext.cs @@ -141,7 +141,7 @@ public class WorkflowExecutionContext public ActivityExecutionContext CreateActivityExecutionContext(IActivity activity, ActivityExecutionContext? parentContext = default) { var parentExpressionExecutionContext = parentContext?.ExpressionExecutionContext; - var applicationProperties = ExpressionExecutionContextExtensions.CreateApplicationPropertiesFrom(Workflow, TransientProperties, Input); + var applicationProperties = ExpressionExecutionContextExtensions.CreateActivityExecutionContextPropertiesFrom(this, Input); var parentMemory = parentContext?.ExpressionExecutionContext.Memory ?? MemoryRegister; var expressionExecutionContext = new ExpressionExecutionContext(_serviceProvider, parentMemory, parentExpressionExecutionContext, applicationProperties, CancellationToken); var activityExecutionContext = new ActivityExecutionContext(this, parentContext, expressionExecutionContext, activity, CancellationToken); diff --git a/src/modules/Elsa.Workflows.Runtime/Implementations/TriggerIndexer.cs b/src/modules/Elsa.Workflows.Runtime/Implementations/TriggerIndexer.cs index cdd324946..b4d86dfe5 100644 --- a/src/modules/Elsa.Workflows.Runtime/Implementations/TriggerIndexer.cs +++ b/src/modules/Elsa.Workflows.Runtime/Implementations/TriggerIndexer.cs @@ -159,8 +159,7 @@ public class TriggerIndexer : ITriggerIndexer var register = context.GetOrCreateRegister(trigger); var cancellationToken = context.CancellationToken; var expressionInput = new Dictionary(); - var transientProperties = new Dictionary(); - var applicationProperties = ExpressionExecutionContextExtensions.CreateApplicationPropertiesFrom(context.Workflow, transientProperties, expressionInput); + var applicationProperties = ExpressionExecutionContextExtensions.CreateTriggerIndexingPropertiesFrom(context.Workflow, expressionInput); var expressionExecutionContext = new ExpressionExecutionContext(_serviceProvider, register, default, applicationProperties, cancellationToken); // Evaluate activity inputs before requesting trigger data.