diff --git a/migrations/efcore-3.1.sh b/migrations/efcore-3.1.sh index 37ff88b32..bf058a565 100644 --- a/migrations/efcore-3.1.sh +++ b/migrations/efcore-3.1.sh @@ -28,11 +28,6 @@ for module in "${mods[@]}"; do echo "Provider path: ${providerPath:?}/${migrationsPath}" echo "Migrations path: $migrationsPath" echo "Connection string: ${connStrings[$provider]}" - - # 1. Delete the existing migration - echo "Deleting existing migrations: ${providerPath:?}/${migrationsPath}/*V3_1.cs" - find "${providerPath:?}/${migrationsPath}/" -type f -name "*V3_1*" -exec rm -f {} \; - # rm -rf "${providerPath:?}/${migrationsPath}/*V3_1.cs" # 2. Run the migrations command dotnet ef migrations add V3_1 -c "$module"ElsaDbContext -p "$providerPath" -o "$migrationsPath" -- --connectionString "${connStrings[$provider]}" diff --git a/src/bundles/Elsa.Server.Web/Program.cs b/src/bundles/Elsa.Server.Web/Program.cs index 7dc88b704..734840368 100644 --- a/src/bundles/Elsa.Server.Web/Program.cs +++ b/src/bundles/Elsa.Server.Web/Program.cs @@ -15,6 +15,7 @@ using Elsa.MongoDb.Extensions; using Elsa.MongoDb.Modules.Identity; using Elsa.MongoDb.Modules.Management; using Elsa.MongoDb.Modules.Runtime; +using Elsa.Workflows.Management.Compression; using Microsoft.Data.Sqlite; using Microsoft.Extensions.Options; using Proto.Persistence.Sqlite; @@ -29,6 +30,7 @@ const bool useQuartz = true; const bool useMassTransit = false; const bool useMassTransitAzureServiceBus = true; const bool useMassTransitRabbitMq = false; +const bool useZipCompression = false; var builder = WebApplication.CreateBuilder(args); var services = builder.Services; @@ -106,6 +108,9 @@ services else ef.UseSqlite(sqliteConnectionString); }); + + if(useZipCompression) + management.SetCompressionAlgorithm(nameof(GZip)); }) .UseWorkflowRuntime(runtime => { diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.cs deleted file mode 100644 index bc5a002fe..000000000 --- a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management -{ - /// - public partial class V31 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.Designer.cs similarity index 99% rename from src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.Designer.cs index 2c50cfc9f..33ad238d7 100644 --- a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203213856_V3_1.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.Designer.cs @@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management { [DbContext(typeof(ManagementElsaDbContext))] - [Migration("20240203213856_V3_1")] + [Migration("20240203224836_V3_1")] partial class V31 { /// @@ -37,12 +37,6 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management b.Property("Data") .HasColumnType("longtext"); - b.Property("DataCompressionAlgorithm") - .HasColumnType("longtext"); - - b.Property("DataFormat") - .HasColumnType("longtext"); - b.Property("DefinitionId") .IsRequired() .HasColumnType("varchar(255)"); @@ -122,6 +116,12 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management b.Property("Data") .HasColumnType("longtext"); + b.Property("DataCompressionAlgorithm") + .HasColumnType("longtext"); + + b.Property("DataFormat") + .HasColumnType("longtext"); + b.Property("DefinitionId") .IsRequired() .HasColumnType("varchar(255)"); diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.cs new file mode 100644 index 000000000..cb4f4002c --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/20240203224836_V3_1.cs @@ -0,0 +1,44 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management +{ + /// + public partial class V31 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "DataCompressionAlgorithm", + schema: "Elsa", + table: "WorkflowInstances", + type: "longtext", + nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "DataFormat", + schema: "Elsa", + table: "WorkflowInstances", + type: "longtext", + nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "DataCompressionAlgorithm", + schema: "Elsa", + table: "WorkflowInstances"); + + migrationBuilder.DropColumn( + name: "DataFormat", + schema: "Elsa", + table: "WorkflowInstances"); + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs index 4c8c437ca..360cc822a 100644 --- a/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.MySql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs @@ -34,12 +34,6 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management b.Property("Data") .HasColumnType("longtext"); - b.Property("DataCompressionAlgorithm") - .HasColumnType("longtext"); - - b.Property("DataFormat") - .HasColumnType("longtext"); - b.Property("DefinitionId") .IsRequired() .HasColumnType("varchar(255)"); @@ -119,6 +113,12 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management b.Property("Data") .HasColumnType("longtext"); + b.Property("DataCompressionAlgorithm") + .HasColumnType("longtext"); + + b.Property("DataFormat") + .HasColumnType("longtext"); + b.Property("DefinitionId") .IsRequired() .HasColumnType("varchar(255)"); diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.cs deleted file mode 100644 index bc5b94327..000000000 --- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management -{ - /// - public partial class V3_1 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.Designer.cs similarity index 99% rename from src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.Designer.cs index 14a55bdaa..5e23fdf68 100644 --- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203213917_V3_1.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.Designer.cs @@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management { [DbContext(typeof(ManagementElsaDbContext))] - [Migration("20240203213917_V3_1")] + [Migration("20240203224851_V3_1")] partial class V3_1 { /// @@ -40,12 +40,6 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management b.Property("Data") .HasColumnType("text"); - b.Property("DataCompressionAlgorithm") - .HasColumnType("text"); - - b.Property("DataFormat") - .HasColumnType("text"); - b.Property("DefinitionId") .IsRequired() .HasColumnType("text"); @@ -125,6 +119,12 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management b.Property("Data") .HasColumnType("text"); + b.Property("DataCompressionAlgorithm") + .HasColumnType("text"); + + b.Property("DataFormat") + .HasColumnType("text"); + b.Property("DefinitionId") .IsRequired() .HasColumnType("text"); diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.cs new file mode 100644 index 000000000..338e634b8 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/20240203224851_V3_1.cs @@ -0,0 +1,42 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management +{ + /// + public partial class V3_1 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "DataCompressionAlgorithm", + schema: "Elsa", + table: "WorkflowInstances", + type: "text", + nullable: true); + + migrationBuilder.AddColumn( + name: "DataFormat", + schema: "Elsa", + table: "WorkflowInstances", + type: "text", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "DataCompressionAlgorithm", + schema: "Elsa", + table: "WorkflowInstances"); + + migrationBuilder.DropColumn( + name: "DataFormat", + schema: "Elsa", + table: "WorkflowInstances"); + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs index 5c4390140..165e7004c 100644 --- a/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.PostgreSql/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs @@ -37,12 +37,6 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management b.Property("Data") .HasColumnType("text"); - b.Property("DataCompressionAlgorithm") - .HasColumnType("text"); - - b.Property("DataFormat") - .HasColumnType("text"); - b.Property("DefinitionId") .IsRequired() .HasColumnType("text"); @@ -122,6 +116,12 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management b.Property("Data") .HasColumnType("text"); + b.Property("DataCompressionAlgorithm") + .HasColumnType("text"); + + b.Property("DataFormat") + .HasColumnType("text"); + b.Property("DefinitionId") .IsRequired() .HasColumnType("text"); diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.cs deleted file mode 100644 index c921d4e91..000000000 --- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management -{ - /// - public partial class V3_1 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.Designer.cs similarity index 99% rename from src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.Designer.cs index 8ba16ddeb..d03a97a20 100644 --- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203213902_V3_1.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.Designer.cs @@ -12,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management { [DbContext(typeof(ManagementElsaDbContext))] - [Migration("20240203213902_V3_1")] + [Migration("20240203224841_V3_1")] partial class V3_1 { /// @@ -40,12 +40,6 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management b.Property("Data") .HasColumnType("nvarchar(max)"); - b.Property("DataCompressionAlgorithm") - .HasColumnType("nvarchar(max)"); - - b.Property("DataFormat") - .HasColumnType("nvarchar(max)"); - b.Property("DefinitionId") .IsRequired() .HasColumnType("nvarchar(450)"); @@ -125,6 +119,12 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management b.Property("Data") .HasColumnType("nvarchar(max)"); + b.Property("DataCompressionAlgorithm") + .HasColumnType("nvarchar(max)"); + + b.Property("DataFormat") + .HasColumnType("nvarchar(max)"); + b.Property("DefinitionId") .IsRequired() .HasColumnType("nvarchar(450)"); diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.cs new file mode 100644 index 000000000..61c10249c --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/20240203224841_V3_1.cs @@ -0,0 +1,42 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management +{ + /// + public partial class V3_1 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "DataCompressionAlgorithm", + schema: "Elsa", + table: "WorkflowInstances", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "DataFormat", + schema: "Elsa", + table: "WorkflowInstances", + type: "nvarchar(max)", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "DataCompressionAlgorithm", + schema: "Elsa", + table: "WorkflowInstances"); + + migrationBuilder.DropColumn( + name: "DataFormat", + schema: "Elsa", + table: "WorkflowInstances"); + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs index 212aff9f7..8fc36160a 100644 --- a/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.SqlServer/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs @@ -37,12 +37,6 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management b.Property("Data") .HasColumnType("nvarchar(max)"); - b.Property("DataCompressionAlgorithm") - .HasColumnType("nvarchar(max)"); - - b.Property("DataFormat") - .HasColumnType("nvarchar(max)"); - b.Property("DefinitionId") .IsRequired() .HasColumnType("nvarchar(450)"); @@ -122,6 +116,12 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management b.Property("Data") .HasColumnType("nvarchar(max)"); + b.Property("DataCompressionAlgorithm") + .HasColumnType("nvarchar(max)"); + + b.Property("DataFormat") + .HasColumnType("nvarchar(max)"); + b.Property("DefinitionId") .IsRequired() .HasColumnType("nvarchar(450)"); diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.cs deleted file mode 100644 index 214842642..000000000 --- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management -{ - /// - public partial class V3_1 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.Designer.cs similarity index 99% rename from src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.Designer.cs rename to src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.Designer.cs index cb90489c6..8ff91fc79 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203213909_V3_1.Designer.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.Designer.cs @@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management { [DbContext(typeof(ManagementElsaDbContext))] - [Migration("20240203213909_V3_1")] + [Migration("20240203224846_V3_1")] partial class V3_1 { /// @@ -35,12 +35,6 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management b.Property("Data") .HasColumnType("TEXT"); - b.Property("DataCompressionAlgorithm") - .HasColumnType("TEXT"); - - b.Property("DataFormat") - .HasColumnType("TEXT"); - b.Property("DefinitionId") .IsRequired() .HasColumnType("TEXT"); @@ -121,6 +115,12 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management b.Property("Data") .HasColumnType("TEXT"); + b.Property("DataCompressionAlgorithm") + .HasColumnType("TEXT"); + + b.Property("DataFormat") + .HasColumnType("TEXT"); + b.Property("DefinitionId") .IsRequired() .HasColumnType("TEXT"); diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.cs new file mode 100644 index 000000000..1cba2039d --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/20240203224846_V3_1.cs @@ -0,0 +1,38 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management +{ + /// + public partial class V3_1 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "DataCompressionAlgorithm", + table: "WorkflowInstances", + type: "TEXT", + nullable: true); + + migrationBuilder.AddColumn( + name: "DataFormat", + table: "WorkflowInstances", + type: "TEXT", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "DataCompressionAlgorithm", + table: "WorkflowInstances"); + + migrationBuilder.DropColumn( + name: "DataFormat", + table: "WorkflowInstances"); + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs index 3f05f511d..b044063d9 100644 --- a/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs +++ b/src/modules/Elsa.EntityFrameworkCore.Sqlite/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs @@ -32,12 +32,6 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management b.Property("Data") .HasColumnType("TEXT"); - b.Property("DataCompressionAlgorithm") - .HasColumnType("TEXT"); - - b.Property("DataFormat") - .HasColumnType("TEXT"); - b.Property("DefinitionId") .IsRequired() .HasColumnType("TEXT"); @@ -118,6 +112,12 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management b.Property("Data") .HasColumnType("TEXT"); + b.Property("DataCompressionAlgorithm") + .HasColumnType("TEXT"); + + b.Property("DataFormat") + .HasColumnType("TEXT"); + b.Property("DefinitionId") .IsRequired() .HasColumnType("TEXT"); diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Configurations.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Configurations.cs index 547ba59df..4d87d67ea 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Configurations.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/Configurations.cs @@ -19,8 +19,6 @@ internal class Configurations : IEntityTypeConfiguration, IE builder.Ignore(x => x.CustomProperties); builder.Ignore(x => x.Options); builder.Property("Data"); - builder.Property("DataFormat"); - builder.Property("DataCompressionAlgorithm"); builder.Property("UsableAsActivity"); builder.Property(x => x.ToolVersion).HasConversion(VersionToStringConverter, StringToVersionConverter); @@ -36,6 +34,8 @@ internal class Configurations : IEntityTypeConfiguration, IE { builder.Ignore(x => x.WorkflowState); builder.Property("Data"); + builder.Property("DataFormat"); + builder.Property("DataCompressionAlgorithm"); builder.Property(x => x.Status).HasConversion(); builder.Property(x => x.SubStatus).HasConversion(); builder.HasIndex(x => new { x.Status, x.SubStatus, x.DefinitionId, x.Version }).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.Status)}_{nameof(WorkflowInstance.SubStatus)}_{nameof(WorkflowInstance.DefinitionId)}_{nameof(WorkflowInstance.Version)}"); diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs index 814257271..54c9eaff5 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Management/WorkflowInstanceStore.cs @@ -151,6 +151,7 @@ public class EFCoreWorkflowInstanceStore : IWorkflowInstanceStore return; var data = entity.WorkflowState; + var dataFormat = (string?)managementElsaDbContext.Entry(entity).Property("DataFormat").CurrentValue ?? "Json"; var json = (string?)managementElsaDbContext.Entry(entity).Property("Data").CurrentValue; var compressionAlgorithm = (string?)managementElsaDbContext.Entry(entity).Property("DataCompressionAlgorithm").CurrentValue ?? nameof(None); var compressionStrategy = _compressionStrategyResolver.Resolve(compressionAlgorithm); diff --git a/src/modules/Elsa.Workflows.Management/Compression/GZip.cs b/src/modules/Elsa.Workflows.Management/Compression/GZip.cs index 5dba3da21..3e45b7257 100644 --- a/src/modules/Elsa.Workflows.Management/Compression/GZip.cs +++ b/src/modules/Elsa.Workflows.Management/Compression/GZip.cs @@ -16,6 +16,7 @@ public class GZip : ICompressionStrategy using var output = new MemoryStream(); await using var compressionStream = new GZipStream(output, CompressionMode.Compress); await compressionStream.WriteAsync(inputBytes, 0, inputBytes.Length, cancellationToken); + await compressionStream.FlushAsync(cancellationToken); return Convert.ToBase64String(output.ToArray()); } @@ -27,7 +28,6 @@ public class GZip : ICompressionStrategy using var inputMemoryStream = new MemoryStream(inputBytes); await using var decompressionStream = new GZipStream(inputMemoryStream, CompressionMode.Decompress); using var outputMemoryStream = new MemoryStream(); - await decompressionStream.CopyToAsync(outputMemoryStream, cancellationToken); var decompressedBytes = outputMemoryStream.ToArray(); diff --git a/src/modules/Elsa.Workflows.Management/Features/WorkflowManagementFeature.cs b/src/modules/Elsa.Workflows.Management/Features/WorkflowManagementFeature.cs index 18971ff3b..5ce9ceb9f 100644 --- a/src/modules/Elsa.Workflows.Management/Features/WorkflowManagementFeature.cs +++ b/src/modules/Elsa.Workflows.Management/Features/WorkflowManagementFeature.cs @@ -42,6 +42,8 @@ public class WorkflowManagementFeature : FeatureBase private const string LookupsCategory = "Lookups"; private const string DynamicCategory = "Dynamic"; + private string CompressionAlgorithm { get; set; } = nameof(None); + /// public WorkflowManagementFeature(IModule module) : base(module) { @@ -144,6 +146,15 @@ public class WorkflowManagementFeature : FeatureBase VariableDescriptors.AddRange(descriptors); return this; } + + /// + /// Sets the compression algorithm to use for compressing workflow state. + /// + public WorkflowManagementFeature SetCompressionAlgorithm(string algorithm) + { + CompressionAlgorithm = algorithm; + return this; + } /// public override void Configure() @@ -189,7 +200,10 @@ public class WorkflowManagementFeature : FeatureBase foreach (var activityType in ActivityTypes) options.ActivityTypes.Add(activityType); - foreach (var descriptor in VariableDescriptors) options.VariableDescriptors.Add(descriptor); + foreach (var descriptor in VariableDescriptors) + options.VariableDescriptors.Add(descriptor); + + options.CompressionAlgorithm = CompressionAlgorithm; }); } } \ No newline at end of file