Remove migration files for Management module

Deleted all migration files related to the Management module across MySql, SqlServer, Sqlite and PostgreSql data providers. These files included data compression algorithm and data format column additions in the WorkflowInstances table.
This commit is contained in:
Sipke Schoorstra 2024-02-04 01:24:03 +01:00
parent bc7d52d94c
commit 0bc46d3f74
31 changed files with 1745 additions and 102 deletions

View file

@ -1,7 +1,7 @@
#!/usr/bin/env zsh
# Define the modules to update
mods=("Management")
mods=("Management" "Runtime")
# mods=("Alterations" "Runtime" "Management" "Identity" "Labels")
# Define the list of providers

View file

@ -30,7 +30,7 @@ const bool useQuartz = true;
const bool useMassTransit = false;
const bool useMassTransitAzureServiceBus = true;
const bool useMassTransitRabbitMq = false;
const bool useZipCompression = false;
const bool useZipCompression = true;
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;

View file

@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
{
[DbContext(typeof(ManagementElsaDbContext))]
[Migration("20240203224836_V3_1")]
[Migration("20240203235204_V3_1")]
partial class V31
{
/// <inheritdoc />
@ -119,9 +119,6 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
b.Property<string>("DataCompressionAlgorithm")
.HasColumnType("longtext");
b.Property<string>("DataFormat")
.HasColumnType("longtext");
b.Property<string>("DefinitionId")
.IsRequired()
.HasColumnType("varchar(255)");

View file

@ -17,14 +17,6 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "DataFormat",
schema: "Elsa",
table: "WorkflowInstances",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
}
/// <inheritdoc />
@ -34,11 +26,6 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
name: "DataCompressionAlgorithm",
schema: "Elsa",
table: "WorkflowInstances");
migrationBuilder.DropColumn(
name: "DataFormat",
schema: "Elsa",
table: "WorkflowInstances");
}
}
}

View file

@ -116,9 +116,6 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Management
b.Property<string>("DataCompressionAlgorithm")
.HasColumnType("longtext");
b.Property<string>("DataFormat")
.HasColumnType("longtext");
b.Property<string>("DefinitionId")
.IsRequired()
.HasColumnType("varchar(255)");

View file

@ -0,0 +1,388 @@
// <auto-generated />
using System;
using Elsa.EntityFrameworkCore.Modules.Runtime;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime
{
[DbContext(typeof(RuntimeElsaDbContext))]
[Migration("20240203235808_V3_1")]
partial class V31
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("Elsa")
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b =>
{
b.Property<string>("Id")
.HasColumnType("varchar(255)");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("ActivityName")
.HasColumnType("varchar(255)");
b.Property<string>("ActivityNodeId")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("ActivityType")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<int>("ActivityTypeVersion")
.HasColumnType("int");
b.Property<DateTimeOffset?>("CompletedAt")
.HasColumnType("datetime(6)");
b.Property<bool>("HasBookmarks")
.HasColumnType("tinyint(1)");
b.Property<string>("SerializedActivityState")
.HasColumnType("longtext");
b.Property<string>("SerializedActivityStateCompressionAlgorithm")
.HasColumnType("longtext");
b.Property<string>("SerializedException")
.HasColumnType("longtext");
b.Property<string>("SerializedOutputs")
.HasColumnType("longtext");
b.Property<string>("SerializedPayload")
.HasColumnType("longtext");
b.Property<DateTimeOffset>("StartedAt")
.HasColumnType("datetime(6)");
b.Property<string>("Status")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("varchar(255)");
b.HasKey("Id");
b.HasIndex("ActivityId")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityId");
b.HasIndex("ActivityName")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityName");
b.HasIndex("ActivityNodeId")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityNodeId");
b.HasIndex("ActivityType")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityType");
b.HasIndex("ActivityTypeVersion")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityTypeVersion");
b.HasIndex("CompletedAt")
.HasDatabaseName("IX_ActivityExecutionRecord_CompletedAt");
b.HasIndex("HasBookmarks")
.HasDatabaseName("IX_ActivityExecutionRecord_HasBookmarks");
b.HasIndex("StartedAt")
.HasDatabaseName("IX_ActivityExecutionRecord_StartedAt");
b.HasIndex("Status")
.HasDatabaseName("IX_ActivityExecutionRecord_Status");
b.HasIndex("WorkflowInstanceId")
.HasDatabaseName("IX_ActivityExecutionRecord_WorkflowInstanceId");
b.HasIndex("ActivityType", "ActivityTypeVersion")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityType_ActivityTypeVersion");
b.ToTable("ActivityExecutionRecords", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredBookmark", b =>
{
b.Property<string>("BookmarkId")
.HasColumnType("varchar(255)");
b.Property<string>("ActivityInstanceId")
.HasColumnType("varchar(255)");
b.Property<string>("ActivityTypeName")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("CorrelationId")
.HasColumnType("longtext");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("datetime(6)");
b.Property<string>("Hash")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("SerializedMetadata")
.HasColumnType("longtext");
b.Property<string>("SerializedPayload")
.HasColumnType("longtext");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("varchar(255)");
b.HasKey("BookmarkId");
b.HasIndex(new[] { "ActivityInstanceId" }, "IX_StoredBookmark_ActivityInstanceId");
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[] { "CreatedAt" }, "IX_StoredBookmark_CreatedAt");
b.HasIndex(new[] { "Hash" }, "IX_StoredBookmark_Hash");
b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId");
b.ToTable("Bookmarks", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b =>
{
b.Property<string>("Id")
.HasColumnType("varchar(255)");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("Hash")
.HasColumnType("varchar(255)");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("SerializedPayload")
.HasColumnType("longtext");
b.Property<string>("WorkflowDefinitionId")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("WorkflowDefinitionVersionId")
.IsRequired()
.HasColumnType("varchar(255)");
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.HasIndex("WorkflowDefinitionVersionId")
.HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionVersionId");
b.ToTable("Triggers", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowExecutionLogRecord", b =>
{
b.Property<string>("Id")
.HasColumnType("varchar(255)");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("ActivityInstanceId")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("ActivityName")
.HasColumnType("varchar(255)");
b.Property<string>("ActivityNodeId")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("ActivityType")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<int>("ActivityTypeVersion")
.HasColumnType("int");
b.Property<string>("EventName")
.HasColumnType("varchar(255)");
b.Property<string>("Message")
.HasColumnType("longtext");
b.Property<string>("ParentActivityInstanceId")
.HasColumnType("varchar(255)");
b.Property<long>("Sequence")
.HasColumnType("bigint");
b.Property<string>("SerializedActivityState")
.HasColumnType("longtext");
b.Property<string>("SerializedPayload")
.HasColumnType("longtext");
b.Property<string>("Source")
.HasColumnType("longtext");
b.Property<DateTimeOffset>("Timestamp")
.HasColumnType("datetime(6)");
b.Property<string>("WorkflowDefinitionId")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("WorkflowDefinitionVersionId")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<int>("WorkflowVersion")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ActivityId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId");
b.HasIndex("ActivityInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityInstanceId");
b.HasIndex("ActivityName")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityName");
b.HasIndex("ActivityNodeId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityNodeId");
b.HasIndex("ActivityType")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType");
b.HasIndex("ActivityTypeVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion");
b.HasIndex("EventName")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName");
b.HasIndex("ParentActivityInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ParentActivityInstanceId");
b.HasIndex("Sequence")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Sequence");
b.HasIndex("Timestamp")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp");
b.HasIndex("WorkflowDefinitionId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionId");
b.HasIndex("WorkflowDefinitionVersionId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionVersionId");
b.HasIndex("WorkflowInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId");
b.HasIndex("WorkflowVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion");
b.HasIndex("ActivityType", "ActivityTypeVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion");
b.HasIndex("Timestamp", "Sequence")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence");
b.ToTable("WorkflowExecutionLogRecords", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowInboxMessage", b =>
{
b.Property<string>("Id")
.HasColumnType("varchar(255)");
b.Property<string>("ActivityInstanceId")
.HasColumnType("varchar(255)");
b.Property<string>("ActivityTypeName")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("CorrelationId")
.HasColumnType("varchar(255)");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("datetime(6)");
b.Property<DateTimeOffset>("ExpiresAt")
.HasColumnType("datetime(6)");
b.Property<string>("Hash")
.IsRequired()
.HasColumnType("varchar(255)");
b.Property<string>("SerializedBookmarkPayload")
.HasColumnType("longtext");
b.Property<string>("SerializedInput")
.HasColumnType("longtext");
b.Property<string>("WorkflowInstanceId")
.HasColumnType("varchar(255)");
b.HasKey("Id");
b.HasIndex(new[] { "ActivityInstanceId" }, "IX_WorkflowInboxMessage_ActivityInstanceId");
b.HasIndex(new[] { "ActivityTypeName" }, "IX_WorkflowInboxMessage_ActivityTypeName");
b.HasIndex(new[] { "CorrelationId" }, "IX_WorkflowInboxMessage_CorrelationId");
b.HasIndex(new[] { "CreatedAt" }, "IX_WorkflowInboxMessage_CreatedAt");
b.HasIndex(new[] { "ExpiresAt" }, "IX_WorkflowInboxMessage_ExpiresAt");
b.HasIndex(new[] { "Hash" }, "IX_WorkflowInboxMessage_Hash");
b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_WorkflowInboxMessage_WorkflowInstanceId");
b.ToTable("WorkflowInboxMessages", "Elsa");
});
#pragma warning restore 612, 618
}
}
}

View file

@ -0,0 +1,31 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime
{
/// <inheritdoc />
public partial class V31 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "SerializedActivityStateCompressionAlgorithm",
schema: "Elsa",
table: "ActivityExecutionRecords",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "SerializedActivityStateCompressionAlgorithm",
schema: "Elsa",
table: "ActivityExecutionRecords");
}
}
}

View file

@ -17,7 +17,7 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("Elsa")
.HasAnnotation("ProductVersion", "7.0.11")
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b =>
@ -52,6 +52,9 @@ namespace Elsa.EntityFrameworkCore.MySql.Migrations.Runtime
b.Property<string>("SerializedActivityState")
.HasColumnType("longtext");
b.Property<string>("SerializedActivityStateCompressionAlgorithm")
.HasColumnType("longtext");
b.Property<string>("SerializedException")
.HasColumnType("longtext");

View file

@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
{
[DbContext(typeof(ManagementElsaDbContext))]
[Migration("20240203224851_V3_1")]
[Migration("20240203235709_V3_1")]
partial class V3_1
{
/// <inheritdoc />
@ -122,9 +122,6 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
b.Property<string>("DataCompressionAlgorithm")
.HasColumnType("text");
b.Property<string>("DataFormat")
.HasColumnType("text");
b.Property<string>("DefinitionId")
.IsRequired()
.HasColumnType("text");

View file

@ -16,13 +16,6 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
table: "WorkflowInstances",
type: "text",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "DataFormat",
schema: "Elsa",
table: "WorkflowInstances",
type: "text",
nullable: true);
}
/// <inheritdoc />
@ -32,11 +25,6 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
name: "DataCompressionAlgorithm",
schema: "Elsa",
table: "WorkflowInstances");
migrationBuilder.DropColumn(
name: "DataFormat",
schema: "Elsa",
table: "WorkflowInstances");
}
}
}

View file

@ -119,9 +119,6 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Management
b.Property<string>("DataCompressionAlgorithm")
.HasColumnType("text");
b.Property<string>("DataFormat")
.HasColumnType("text");
b.Property<string>("DefinitionId")
.IsRequired()
.HasColumnType("text");

View file

@ -0,0 +1,391 @@
// <auto-generated />
using System;
using Elsa.EntityFrameworkCore.Modules.Runtime;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime
{
[DbContext(typeof(RuntimeElsaDbContext))]
[Migration("20240204000155_V3_1")]
partial class V3_1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("Elsa")
.HasAnnotation("ProductVersion", "7.0.14")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b =>
{
b.Property<string>("Id")
.HasColumnType("text");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("ActivityName")
.HasColumnType("text");
b.Property<string>("ActivityNodeId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("ActivityType")
.IsRequired()
.HasColumnType("text");
b.Property<int>("ActivityTypeVersion")
.HasColumnType("integer");
b.Property<DateTimeOffset?>("CompletedAt")
.HasColumnType("timestamp with time zone");
b.Property<bool>("HasBookmarks")
.HasColumnType("boolean");
b.Property<string>("SerializedActivityState")
.HasColumnType("text");
b.Property<string>("SerializedActivityStateCompressionAlgorithm")
.HasColumnType("text");
b.Property<string>("SerializedException")
.HasColumnType("text");
b.Property<string>("SerializedOutputs")
.HasColumnType("text");
b.Property<string>("SerializedPayload")
.HasColumnType("text");
b.Property<DateTimeOffset>("StartedAt")
.HasColumnType("timestamp with time zone");
b.Property<string>("Status")
.IsRequired()
.HasColumnType("text");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ActivityId")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityId");
b.HasIndex("ActivityName")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityName");
b.HasIndex("ActivityNodeId")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityNodeId");
b.HasIndex("ActivityType")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityType");
b.HasIndex("ActivityTypeVersion")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityTypeVersion");
b.HasIndex("CompletedAt")
.HasDatabaseName("IX_ActivityExecutionRecord_CompletedAt");
b.HasIndex("HasBookmarks")
.HasDatabaseName("IX_ActivityExecutionRecord_HasBookmarks");
b.HasIndex("StartedAt")
.HasDatabaseName("IX_ActivityExecutionRecord_StartedAt");
b.HasIndex("Status")
.HasDatabaseName("IX_ActivityExecutionRecord_Status");
b.HasIndex("WorkflowInstanceId")
.HasDatabaseName("IX_ActivityExecutionRecord_WorkflowInstanceId");
b.HasIndex("ActivityType", "ActivityTypeVersion")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityType_ActivityTypeVersion");
b.ToTable("ActivityExecutionRecords", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredBookmark", b =>
{
b.Property<string>("BookmarkId")
.HasColumnType("text");
b.Property<string>("ActivityInstanceId")
.HasColumnType("text");
b.Property<string>("ActivityTypeName")
.IsRequired()
.HasColumnType("text");
b.Property<string>("CorrelationId")
.HasColumnType("text");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property<string>("Hash")
.IsRequired()
.HasColumnType("text");
b.Property<string>("SerializedMetadata")
.HasColumnType("text");
b.Property<string>("SerializedPayload")
.HasColumnType("text");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("text");
b.HasKey("BookmarkId");
b.HasIndex(new[] { "ActivityInstanceId" }, "IX_StoredBookmark_ActivityInstanceId");
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[] { "CreatedAt" }, "IX_StoredBookmark_CreatedAt");
b.HasIndex(new[] { "Hash" }, "IX_StoredBookmark_Hash");
b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId");
b.ToTable("Bookmarks", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b =>
{
b.Property<string>("Id")
.HasColumnType("text");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Hash")
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<string>("SerializedPayload")
.HasColumnType("text");
b.Property<string>("WorkflowDefinitionId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("WorkflowDefinitionVersionId")
.IsRequired()
.HasColumnType("text");
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.HasIndex("WorkflowDefinitionVersionId")
.HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionVersionId");
b.ToTable("Triggers", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowExecutionLogRecord", b =>
{
b.Property<string>("Id")
.HasColumnType("text");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("ActivityInstanceId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("ActivityName")
.HasColumnType("text");
b.Property<string>("ActivityNodeId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("ActivityType")
.IsRequired()
.HasColumnType("text");
b.Property<int>("ActivityTypeVersion")
.HasColumnType("integer");
b.Property<string>("EventName")
.HasColumnType("text");
b.Property<string>("Message")
.HasColumnType("text");
b.Property<string>("ParentActivityInstanceId")
.HasColumnType("text");
b.Property<long>("Sequence")
.HasColumnType("bigint");
b.Property<string>("SerializedActivityState")
.HasColumnType("text");
b.Property<string>("SerializedPayload")
.HasColumnType("text");
b.Property<string>("Source")
.HasColumnType("text");
b.Property<DateTimeOffset>("Timestamp")
.HasColumnType("timestamp with time zone");
b.Property<string>("WorkflowDefinitionId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("WorkflowDefinitionVersionId")
.IsRequired()
.HasColumnType("text");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("text");
b.Property<int>("WorkflowVersion")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ActivityId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId");
b.HasIndex("ActivityInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityInstanceId");
b.HasIndex("ActivityName")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityName");
b.HasIndex("ActivityNodeId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityNodeId");
b.HasIndex("ActivityType")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType");
b.HasIndex("ActivityTypeVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion");
b.HasIndex("EventName")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName");
b.HasIndex("ParentActivityInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ParentActivityInstanceId");
b.HasIndex("Sequence")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Sequence");
b.HasIndex("Timestamp")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp");
b.HasIndex("WorkflowDefinitionId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionId");
b.HasIndex("WorkflowDefinitionVersionId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionVersionId");
b.HasIndex("WorkflowInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId");
b.HasIndex("WorkflowVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion");
b.HasIndex("ActivityType", "ActivityTypeVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion");
b.HasIndex("Timestamp", "Sequence")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence");
b.ToTable("WorkflowExecutionLogRecords", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowInboxMessage", b =>
{
b.Property<string>("Id")
.HasColumnType("text");
b.Property<string>("ActivityInstanceId")
.HasColumnType("text");
b.Property<string>("ActivityTypeName")
.IsRequired()
.HasColumnType("text");
b.Property<string>("CorrelationId")
.HasColumnType("text");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property<DateTimeOffset>("ExpiresAt")
.HasColumnType("timestamp with time zone");
b.Property<string>("Hash")
.IsRequired()
.HasColumnType("text");
b.Property<string>("SerializedBookmarkPayload")
.HasColumnType("text");
b.Property<string>("SerializedInput")
.HasColumnType("text");
b.Property<string>("WorkflowInstanceId")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex(new[] { "ActivityInstanceId" }, "IX_WorkflowInboxMessage_ActivityInstanceId");
b.HasIndex(new[] { "ActivityTypeName" }, "IX_WorkflowInboxMessage_ActivityTypeName");
b.HasIndex(new[] { "CorrelationId" }, "IX_WorkflowInboxMessage_CorrelationId");
b.HasIndex(new[] { "CreatedAt" }, "IX_WorkflowInboxMessage_CreatedAt");
b.HasIndex(new[] { "ExpiresAt" }, "IX_WorkflowInboxMessage_ExpiresAt");
b.HasIndex(new[] { "Hash" }, "IX_WorkflowInboxMessage_Hash");
b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_WorkflowInboxMessage_WorkflowInstanceId");
b.ToTable("WorkflowInboxMessages", "Elsa");
});
#pragma warning restore 612, 618
}
}
}

View file

@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime
{
/// <inheritdoc />
public partial class V3_1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "SerializedActivityStateCompressionAlgorithm",
schema: "Elsa",
table: "ActivityExecutionRecords",
type: "text",
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "SerializedActivityStateCompressionAlgorithm",
schema: "Elsa",
table: "ActivityExecutionRecords");
}
}
}

View file

@ -18,7 +18,7 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("Elsa")
.HasAnnotation("ProductVersion", "7.0.11")
.HasAnnotation("ProductVersion", "7.0.14")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@ -55,6 +55,9 @@ namespace Elsa.EntityFrameworkCore.PostgreSql.Migrations.Runtime
b.Property<string>("SerializedActivityState")
.HasColumnType("text");
b.Property<string>("SerializedActivityStateCompressionAlgorithm")
.HasColumnType("text");
b.Property<string>("SerializedException")
.HasColumnType("text");

View file

@ -12,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
{
[DbContext(typeof(ManagementElsaDbContext))]
[Migration("20240203224841_V3_1")]
[Migration("20240203235345_V3_1")]
partial class V3_1
{
/// <inheritdoc />
@ -122,9 +122,6 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
b.Property<string>("DataCompressionAlgorithm")
.HasColumnType("nvarchar(max)");
b.Property<string>("DataFormat")
.HasColumnType("nvarchar(max)");
b.Property<string>("DefinitionId")
.IsRequired()
.HasColumnType("nvarchar(450)");

View file

@ -16,13 +16,6 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
table: "WorkflowInstances",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "DataFormat",
schema: "Elsa",
table: "WorkflowInstances",
type: "nvarchar(max)",
nullable: true);
}
/// <inheritdoc />
@ -32,11 +25,6 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
name: "DataCompressionAlgorithm",
schema: "Elsa",
table: "WorkflowInstances");
migrationBuilder.DropColumn(
name: "DataFormat",
schema: "Elsa",
table: "WorkflowInstances");
}
}
}

View file

@ -119,9 +119,6 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Management
b.Property<string>("DataCompressionAlgorithm")
.HasColumnType("nvarchar(max)");
b.Property<string>("DataFormat")
.HasColumnType("nvarchar(max)");
b.Property<string>("DefinitionId")
.IsRequired()
.HasColumnType("nvarchar(450)");

View file

@ -0,0 +1,391 @@
// <auto-generated />
using System;
using Elsa.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.EntityFrameworkCore.SqlServer.Migrations.Runtime
{
[DbContext(typeof(RuntimeElsaDbContext))]
[Migration("20240203235912_V3_1")]
partial class V3_1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("Elsa")
.HasAnnotation("ProductVersion", "7.0.14")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b =>
{
b.Property<string>("Id")
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityName")
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityNodeId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityType")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<int>("ActivityTypeVersion")
.HasColumnType("int");
b.Property<DateTimeOffset?>("CompletedAt")
.HasColumnType("datetimeoffset");
b.Property<bool>("HasBookmarks")
.HasColumnType("bit");
b.Property<string>("SerializedActivityState")
.HasColumnType("nvarchar(max)");
b.Property<string>("SerializedActivityStateCompressionAlgorithm")
.HasColumnType("nvarchar(max)");
b.Property<string>("SerializedException")
.HasColumnType("nvarchar(max)");
b.Property<string>("SerializedOutputs")
.HasColumnType("nvarchar(max)");
b.Property<string>("SerializedPayload")
.HasColumnType("nvarchar(max)");
b.Property<DateTimeOffset>("StartedAt")
.HasColumnType("datetimeoffset");
b.Property<string>("Status")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.HasKey("Id");
b.HasIndex("ActivityId")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityId");
b.HasIndex("ActivityName")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityName");
b.HasIndex("ActivityNodeId")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityNodeId");
b.HasIndex("ActivityType")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityType");
b.HasIndex("ActivityTypeVersion")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityTypeVersion");
b.HasIndex("CompletedAt")
.HasDatabaseName("IX_ActivityExecutionRecord_CompletedAt");
b.HasIndex("HasBookmarks")
.HasDatabaseName("IX_ActivityExecutionRecord_HasBookmarks");
b.HasIndex("StartedAt")
.HasDatabaseName("IX_ActivityExecutionRecord_StartedAt");
b.HasIndex("Status")
.HasDatabaseName("IX_ActivityExecutionRecord_Status");
b.HasIndex("WorkflowInstanceId")
.HasDatabaseName("IX_ActivityExecutionRecord_WorkflowInstanceId");
b.HasIndex("ActivityType", "ActivityTypeVersion")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityType_ActivityTypeVersion");
b.ToTable("ActivityExecutionRecords", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredBookmark", b =>
{
b.Property<string>("BookmarkId")
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityInstanceId")
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityTypeName")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("CorrelationId")
.HasColumnType("nvarchar(max)");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("datetimeoffset");
b.Property<string>("Hash")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("SerializedMetadata")
.HasColumnType("nvarchar(max)");
b.Property<string>("SerializedPayload")
.HasColumnType("nvarchar(max)");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.HasKey("BookmarkId");
b.HasIndex(new[] { "ActivityInstanceId" }, "IX_StoredBookmark_ActivityInstanceId");
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[] { "CreatedAt" }, "IX_StoredBookmark_CreatedAt");
b.HasIndex(new[] { "Hash" }, "IX_StoredBookmark_Hash");
b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId");
b.ToTable("Bookmarks", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b =>
{
b.Property<string>("Id")
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Hash")
.HasColumnType("nvarchar(450)");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("SerializedPayload")
.HasColumnType("nvarchar(max)");
b.Property<string>("WorkflowDefinitionId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("WorkflowDefinitionVersionId")
.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.HasIndex("WorkflowDefinitionVersionId")
.HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionVersionId");
b.ToTable("Triggers", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowExecutionLogRecord", b =>
{
b.Property<string>("Id")
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityInstanceId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityName")
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityNodeId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityType")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<int>("ActivityTypeVersion")
.HasColumnType("int");
b.Property<string>("EventName")
.HasColumnType("nvarchar(450)");
b.Property<string>("Message")
.HasColumnType("nvarchar(max)");
b.Property<string>("ParentActivityInstanceId")
.HasColumnType("nvarchar(450)");
b.Property<long>("Sequence")
.HasColumnType("bigint");
b.Property<string>("SerializedActivityState")
.HasColumnType("nvarchar(max)");
b.Property<string>("SerializedPayload")
.HasColumnType("nvarchar(max)");
b.Property<string>("Source")
.HasColumnType("nvarchar(max)");
b.Property<DateTimeOffset>("Timestamp")
.HasColumnType("datetimeoffset");
b.Property<string>("WorkflowDefinitionId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("WorkflowDefinitionVersionId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<int>("WorkflowVersion")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ActivityId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId");
b.HasIndex("ActivityInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityInstanceId");
b.HasIndex("ActivityName")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityName");
b.HasIndex("ActivityNodeId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityNodeId");
b.HasIndex("ActivityType")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType");
b.HasIndex("ActivityTypeVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion");
b.HasIndex("EventName")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName");
b.HasIndex("ParentActivityInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ParentActivityInstanceId");
b.HasIndex("Sequence")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Sequence");
b.HasIndex("Timestamp")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp");
b.HasIndex("WorkflowDefinitionId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionId");
b.HasIndex("WorkflowDefinitionVersionId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionVersionId");
b.HasIndex("WorkflowInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId");
b.HasIndex("WorkflowVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion");
b.HasIndex("ActivityType", "ActivityTypeVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion");
b.HasIndex("Timestamp", "Sequence")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence");
b.ToTable("WorkflowExecutionLogRecords", "Elsa");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowInboxMessage", b =>
{
b.Property<string>("Id")
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityInstanceId")
.HasColumnType("nvarchar(450)");
b.Property<string>("ActivityTypeName")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("CorrelationId")
.HasColumnType("nvarchar(450)");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("datetimeoffset");
b.Property<DateTimeOffset>("ExpiresAt")
.HasColumnType("datetimeoffset");
b.Property<string>("Hash")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property<string>("SerializedBookmarkPayload")
.HasColumnType("nvarchar(max)");
b.Property<string>("SerializedInput")
.HasColumnType("nvarchar(max)");
b.Property<string>("WorkflowInstanceId")
.HasColumnType("nvarchar(450)");
b.HasKey("Id");
b.HasIndex(new[] { "ActivityInstanceId" }, "IX_WorkflowInboxMessage_ActivityInstanceId");
b.HasIndex(new[] { "ActivityTypeName" }, "IX_WorkflowInboxMessage_ActivityTypeName");
b.HasIndex(new[] { "CorrelationId" }, "IX_WorkflowInboxMessage_CorrelationId");
b.HasIndex(new[] { "CreatedAt" }, "IX_WorkflowInboxMessage_CreatedAt");
b.HasIndex(new[] { "ExpiresAt" }, "IX_WorkflowInboxMessage_ExpiresAt");
b.HasIndex(new[] { "Hash" }, "IX_WorkflowInboxMessage_Hash");
b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_WorkflowInboxMessage_WorkflowInstanceId");
b.ToTable("WorkflowInboxMessages", "Elsa");
});
#pragma warning restore 612, 618
}
}
}

View file

@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime
{
/// <inheritdoc />
public partial class V3_1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "SerializedActivityStateCompressionAlgorithm",
schema: "Elsa",
table: "ActivityExecutionRecords",
type: "nvarchar(max)",
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "SerializedActivityStateCompressionAlgorithm",
schema: "Elsa",
table: "ActivityExecutionRecords");
}
}
}

View file

@ -18,7 +18,7 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("Elsa")
.HasAnnotation("ProductVersion", "7.0.11")
.HasAnnotation("ProductVersion", "7.0.14")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
@ -55,6 +55,9 @@ namespace Elsa.EntityFrameworkCore.SqlServer.Migrations.Runtime
b.Property<string>("SerializedActivityState")
.HasColumnType("nvarchar(max)");
b.Property<string>("SerializedActivityStateCompressionAlgorithm")
.HasColumnType("nvarchar(max)");
b.Property<string>("SerializedException")
.HasColumnType("nvarchar(max)");

View file

@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
{
[DbContext(typeof(ManagementElsaDbContext))]
[Migration("20240203224846_V3_1")]
[Migration("20240203235547_V3_1")]
partial class V3_1
{
/// <inheritdoc />
@ -118,9 +118,6 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
b.Property<string>("DataCompressionAlgorithm")
.HasColumnType("TEXT");
b.Property<string>("DataFormat")
.HasColumnType("TEXT");
b.Property<string>("DefinitionId")
.IsRequired()
.HasColumnType("TEXT");

View file

@ -15,12 +15,6 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
table: "WorkflowInstances",
type: "TEXT",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "DataFormat",
table: "WorkflowInstances",
type: "TEXT",
nullable: true);
}
/// <inheritdoc />
@ -29,10 +23,6 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
migrationBuilder.DropColumn(
name: "DataCompressionAlgorithm",
table: "WorkflowInstances");
migrationBuilder.DropColumn(
name: "DataFormat",
table: "WorkflowInstances");
}
}
}

View file

@ -115,9 +115,6 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Management
b.Property<string>("DataCompressionAlgorithm")
.HasColumnType("TEXT");
b.Property<string>("DataFormat")
.HasColumnType("TEXT");
b.Property<string>("DefinitionId")
.IsRequired()
.HasColumnType("TEXT");

View file

@ -0,0 +1,389 @@
// <auto-generated />
using Elsa.EntityFrameworkCore.Modules.Runtime;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime
{
[DbContext(typeof(RuntimeElsaDbContext))]
[Migration("20240204000026_V3_1")]
partial class V3_1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "7.0.14");
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b =>
{
b.Property<string>("Id")
.HasColumnType("TEXT");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("ActivityName")
.HasColumnType("TEXT");
b.Property<string>("ActivityNodeId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("ActivityType")
.IsRequired()
.HasColumnType("TEXT");
b.Property<int>("ActivityTypeVersion")
.HasColumnType("INTEGER");
b.Property<string>("CompletedAt")
.HasColumnType("TEXT");
b.Property<bool>("HasBookmarks")
.HasColumnType("INTEGER");
b.Property<string>("SerializedActivityState")
.HasColumnType("TEXT");
b.Property<string>("SerializedActivityStateCompressionAlgorithm")
.HasColumnType("TEXT");
b.Property<string>("SerializedException")
.HasColumnType("TEXT");
b.Property<string>("SerializedOutputs")
.HasColumnType("TEXT");
b.Property<string>("SerializedPayload")
.HasColumnType("TEXT");
b.Property<string>("StartedAt")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Status")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("ActivityId")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityId");
b.HasIndex("ActivityName")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityName");
b.HasIndex("ActivityNodeId")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityNodeId");
b.HasIndex("ActivityType")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityType");
b.HasIndex("ActivityTypeVersion")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityTypeVersion");
b.HasIndex("CompletedAt")
.HasDatabaseName("IX_ActivityExecutionRecord_CompletedAt");
b.HasIndex("HasBookmarks")
.HasDatabaseName("IX_ActivityExecutionRecord_HasBookmarks");
b.HasIndex("StartedAt")
.HasDatabaseName("IX_ActivityExecutionRecord_StartedAt");
b.HasIndex("Status")
.HasDatabaseName("IX_ActivityExecutionRecord_Status");
b.HasIndex("WorkflowInstanceId")
.HasDatabaseName("IX_ActivityExecutionRecord_WorkflowInstanceId");
b.HasIndex("ActivityType", "ActivityTypeVersion")
.HasDatabaseName("IX_ActivityExecutionRecord_ActivityType_ActivityTypeVersion");
b.ToTable("ActivityExecutionRecords");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredBookmark", b =>
{
b.Property<string>("BookmarkId")
.HasColumnType("TEXT");
b.Property<string>("ActivityInstanceId")
.HasColumnType("TEXT");
b.Property<string>("ActivityTypeName")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("CorrelationId")
.HasColumnType("TEXT");
b.Property<string>("CreatedAt")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Hash")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("SerializedMetadata")
.HasColumnType("TEXT");
b.Property<string>("SerializedPayload")
.HasColumnType("TEXT");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("BookmarkId");
b.HasIndex(new[] { "ActivityInstanceId" }, "IX_StoredBookmark_ActivityInstanceId");
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[] { "CreatedAt" }, "IX_StoredBookmark_CreatedAt");
b.HasIndex(new[] { "Hash" }, "IX_StoredBookmark_Hash");
b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId");
b.ToTable("Bookmarks");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b =>
{
b.Property<string>("Id")
.HasColumnType("TEXT");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Hash")
.HasColumnType("TEXT");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("SerializedPayload")
.HasColumnType("TEXT");
b.Property<string>("WorkflowDefinitionId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("WorkflowDefinitionVersionId")
.IsRequired()
.HasColumnType("TEXT");
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.HasIndex("WorkflowDefinitionVersionId")
.HasDatabaseName("IX_StoredTrigger_WorkflowDefinitionVersionId");
b.ToTable("Triggers");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowExecutionLogRecord", b =>
{
b.Property<string>("Id")
.HasColumnType("TEXT");
b.Property<string>("ActivityId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("ActivityInstanceId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("ActivityName")
.HasColumnType("TEXT");
b.Property<string>("ActivityNodeId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("ActivityType")
.IsRequired()
.HasColumnType("TEXT");
b.Property<int>("ActivityTypeVersion")
.HasColumnType("INTEGER");
b.Property<string>("EventName")
.HasColumnType("TEXT");
b.Property<string>("Message")
.HasColumnType("TEXT");
b.Property<string>("ParentActivityInstanceId")
.HasColumnType("TEXT");
b.Property<long>("Sequence")
.HasColumnType("INTEGER");
b.Property<string>("SerializedActivityState")
.HasColumnType("TEXT");
b.Property<string>("SerializedPayload")
.HasColumnType("TEXT");
b.Property<string>("Source")
.HasColumnType("TEXT");
b.Property<string>("Timestamp")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("WorkflowDefinitionId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("WorkflowDefinitionVersionId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("WorkflowInstanceId")
.IsRequired()
.HasColumnType("TEXT");
b.Property<int>("WorkflowVersion")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("ActivityId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId");
b.HasIndex("ActivityInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityInstanceId");
b.HasIndex("ActivityName")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityName");
b.HasIndex("ActivityNodeId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityNodeId");
b.HasIndex("ActivityType")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType");
b.HasIndex("ActivityTypeVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityTypeVersion");
b.HasIndex("EventName")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_EventName");
b.HasIndex("ParentActivityInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ParentActivityInstanceId");
b.HasIndex("Sequence")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Sequence");
b.HasIndex("Timestamp")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp");
b.HasIndex("WorkflowDefinitionId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionId");
b.HasIndex("WorkflowDefinitionVersionId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowDefinitionVersionId");
b.HasIndex("WorkflowInstanceId")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId");
b.HasIndex("WorkflowVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowVersion");
b.HasIndex("ActivityType", "ActivityTypeVersion")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion");
b.HasIndex("Timestamp", "Sequence")
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp_Sequence");
b.ToTable("WorkflowExecutionLogRecords");
});
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.WorkflowInboxMessage", b =>
{
b.Property<string>("Id")
.HasColumnType("TEXT");
b.Property<string>("ActivityInstanceId")
.HasColumnType("TEXT");
b.Property<string>("ActivityTypeName")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("CorrelationId")
.HasColumnType("TEXT");
b.Property<string>("CreatedAt")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("ExpiresAt")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Hash")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("SerializedBookmarkPayload")
.HasColumnType("TEXT");
b.Property<string>("SerializedInput")
.HasColumnType("TEXT");
b.Property<string>("WorkflowInstanceId")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex(new[] { "ActivityInstanceId" }, "IX_WorkflowInboxMessage_ActivityInstanceId");
b.HasIndex(new[] { "ActivityTypeName" }, "IX_WorkflowInboxMessage_ActivityTypeName");
b.HasIndex(new[] { "CorrelationId" }, "IX_WorkflowInboxMessage_CorrelationId");
b.HasIndex(new[] { "CreatedAt" }, "IX_WorkflowInboxMessage_CreatedAt");
b.HasIndex(new[] { "ExpiresAt" }, "IX_WorkflowInboxMessage_ExpiresAt");
b.HasIndex(new[] { "Hash" }, "IX_WorkflowInboxMessage_Hash");
b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_WorkflowInboxMessage_WorkflowInstanceId");
b.ToTable("WorkflowInboxMessages");
});
#pragma warning restore 612, 618
}
}
}

View file

@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime
{
/// <inheritdoc />
public partial class V3_1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "SerializedActivityStateCompressionAlgorithm",
table: "ActivityExecutionRecords",
type: "TEXT",
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "SerializedActivityStateCompressionAlgorithm",
table: "ActivityExecutionRecords");
}
}
}

View file

@ -14,7 +14,7 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "7.0.11");
modelBuilder.HasAnnotation("ProductVersion", "7.0.14");
modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b =>
{
@ -48,6 +48,9 @@ namespace Elsa.EntityFrameworkCore.Sqlite.Migrations.Runtime
b.Property<string>("SerializedActivityState")
.HasColumnType("TEXT");
b.Property<string>("SerializedActivityStateCompressionAlgorithm")
.HasColumnType("TEXT");
b.Property<string>("SerializedException")
.HasColumnType("TEXT");

View file

@ -34,7 +34,6 @@ internal class Configurations : IEntityTypeConfiguration<WorkflowDefinition>, IE
{
builder.Ignore(x => x.WorkflowState);
builder.Property<string>("Data");
builder.Property<string>("DataFormat");
builder.Property<string>("DataCompressionAlgorithm");
builder.Property(x => x.Status).HasConversion<string>();
builder.Property(x => x.SubStatus).HasConversion<string>();

View file

@ -141,7 +141,6 @@ public class EFCoreWorkflowInstanceStore : IWorkflowInstanceStore
var compressedJson = await compressionStrategy.CompressAsync(json, cancellationToken);
managementElsaDbContext.Entry(entity).Property("Data").CurrentValue = compressedJson;
managementElsaDbContext.Entry(entity).Property("DataFormat").CurrentValue = "Json";
managementElsaDbContext.Entry(entity).Property("DataCompressionAlgorithm").CurrentValue = compressionAlgorithm;
}
@ -151,7 +150,6 @@ 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);

View file

@ -2,11 +2,16 @@ using System.Text.Json;
using Elsa.EntityFrameworkCore.Common;
using Elsa.Extensions;
using Elsa.Workflows.Contracts;
using Elsa.Workflows.Management.Compression;
using Elsa.Workflows.Management.Contracts;
using Elsa.Workflows.Management.Options;
using Elsa.Workflows.Runtime.Contracts;
using Elsa.Workflows.Runtime.Entities;
using Elsa.Workflows.Runtime.Filters;
using Elsa.Workflows.Runtime.OrderDefinitions;
using Elsa.Workflows.State;
using JetBrains.Annotations;
using Microsoft.Extensions.Options;
using Open.Linq.AsyncExtensions;
namespace Elsa.EntityFrameworkCore.Modules.Runtime;
@ -14,20 +19,30 @@ namespace Elsa.EntityFrameworkCore.Modules.Runtime;
/// <summary>
/// An EF Core implementation of <see cref="IActivityExecutionStore"/>.
/// </summary>
[UsedImplicitly]
public class EFCoreActivityExecutionStore : IActivityExecutionStore
{
private readonly EntityStore<RuntimeElsaDbContext, ActivityExecutionRecord> _store;
private readonly ISafeSerializer _safeSerializer;
private readonly IPayloadSerializer _payloadSerializer;
private readonly ICompressionStrategyResolver _compressionStrategyResolver;
private readonly IOptions<ManagementOptions> _options;
/// <summary>
/// Initializes a new instance of the <see cref="EFCoreActivityExecutionStore"/> class.
/// </summary>
public EFCoreActivityExecutionStore(EntityStore<RuntimeElsaDbContext, ActivityExecutionRecord> store, ISafeSerializer safeSerializer, IPayloadSerializer payloadSerializer)
public EFCoreActivityExecutionStore(
EntityStore<RuntimeElsaDbContext, ActivityExecutionRecord> store,
ISafeSerializer safeSerializer,
IPayloadSerializer payloadSerializer,
ICompressionStrategyResolver compressionStrategyResolver,
IOptions<ManagementOptions> options)
{
_store = store;
_safeSerializer = safeSerializer;
_payloadSerializer = payloadSerializer;
_compressionStrategyResolver = compressionStrategyResolver;
_options = options;
}
/// <inheritdoc />
@ -58,42 +73,56 @@ public class EFCoreActivityExecutionStore : IActivityExecutionStore
private async ValueTask OnSaveAsync(RuntimeElsaDbContext dbContext, ActivityExecutionRecord entity, CancellationToken cancellationToken)
{
dbContext.Entry(entity).Property("SerializedActivityState").CurrentValue = entity.ActivityState != null ? await _safeSerializer.SerializeAsync(entity.ActivityState, cancellationToken) : default;
var compressionAlgorithm = _options.Value.CompressionAlgorithm ?? nameof(None);
var serializedActivityState = entity.ActivityState != null ? await _safeSerializer.SerializeAsync(entity.ActivityState, cancellationToken) : default;
var compressedSerializedActivityState = serializedActivityState != null ? await _compressionStrategyResolver.Resolve(compressionAlgorithm).CompressAsync(serializedActivityState, cancellationToken) : default;
dbContext.Entry(entity).Property("SerializedActivityState").CurrentValue = compressedSerializedActivityState;
dbContext.Entry(entity).Property("SerializedActivityStateCompressionAlgorithm").CurrentValue = compressionAlgorithm;
dbContext.Entry(entity).Property("SerializedOutputs").CurrentValue = entity.Outputs != null ? await _safeSerializer.SerializeAsync(entity.Outputs, cancellationToken) : default;
dbContext.Entry(entity).Property("SerializedException").CurrentValue = entity.Exception != null ? _payloadSerializer.Serialize(entity.Exception) : default;
dbContext.Entry(entity).Property("SerializedPayload").CurrentValue = entity.Payload != null ? _payloadSerializer.Serialize(entity.Payload) : default;
}
private ValueTask OnLoadAsync(RuntimeElsaDbContext dbContext, ActivityExecutionRecord? entity, CancellationToken cancellationToken)
private async ValueTask OnLoadAsync(RuntimeElsaDbContext dbContext, ActivityExecutionRecord? entity, CancellationToken cancellationToken)
{
if (entity is null)
return ValueTask.CompletedTask;
return;
entity.ActivityState = DeserializeActivityState(dbContext, entity);
entity.ActivityState = await DeserializeActivityState(dbContext, entity, cancellationToken)!;
entity.Outputs = Deserialize<IDictionary<string, object>>(dbContext, entity, "SerializedOutputs");
entity.Exception = DeserializePayload<ExceptionState>(dbContext, entity, "SerializedException");
entity.Payload = DeserializePayload<IDictionary<string, object>>(dbContext, entity, "SerializedPayload");
return ValueTask.CompletedTask;
}
private IDictionary<string, object>? DeserializeActivityState(RuntimeElsaDbContext dbContext, ActivityExecutionRecord entity)
private async Task<IDictionary<string, object>>? DeserializeActivityState(RuntimeElsaDbContext dbContext, ActivityExecutionRecord entity, CancellationToken cancellationToken)
{
var dictionary = Deserialize<Dictionary<string, JsonElement>>(dbContext, entity, "SerializedActivityState");
return dictionary?.ToDictionary(x => x.Key, x => (object)x.Value);
var json = dbContext.Entry(entity).Property<string>("SerializedActivityState").CurrentValue;
if (!string.IsNullOrWhiteSpace(json))
{
var compressionAlgorithm = (string?)dbContext.Entry(entity).Property("SerializedActivityStateCompressionAlgorithm").CurrentValue ?? nameof(None);
var compressionStrategy = _compressionStrategyResolver.Resolve(compressionAlgorithm);
json = await compressionStrategy.DecompressAsync(json, cancellationToken);
var dictionary = JsonSerializer.Deserialize<IDictionary<string, object>>(json);
return dictionary?.ToDictionary(x => x.Key, x => (object)x.Value);
}
return default;
}
private T? Deserialize<T>(RuntimeElsaDbContext dbContext, ActivityExecutionRecord entity, string propertyName)
private T Deserialize<T>(RuntimeElsaDbContext dbContext, ActivityExecutionRecord entity, string propertyName)
{
var json = dbContext.Entry(entity).Property<string>(propertyName).CurrentValue;
var value = !string.IsNullOrEmpty(json) ? JsonSerializer.Deserialize<T>(json) : default;
return value;
return value!;
}
private T? DeserializePayload<T>(RuntimeElsaDbContext dbContext, ActivityExecutionRecord entity, string propertyName)
private T DeserializePayload<T>(RuntimeElsaDbContext dbContext, ActivityExecutionRecord entity, string propertyName)
{
var json = dbContext.Entry(entity).Property<string>(propertyName).CurrentValue;
var payload = !string.IsNullOrEmpty(json) ? _payloadSerializer.Deserialize<T>(json) : default;
return payload;
return payload!;
}
private static IQueryable<ActivityExecutionRecord> Filter(IQueryable<ActivityExecutionRecord> queryable, ActivityExecutionRecordFilter filter) => filter.Apply(queryable);

View file

@ -59,6 +59,7 @@ public class Configurations :
builder.Ignore(x => x.Payload);
builder.Ignore(x => x.Outputs);
builder.Property<string>("SerializedActivityState");
builder.Property<string>("SerializedActivityStateCompressionAlgorithm");
builder.Property<string>("SerializedException");
builder.Property<string>("SerializedPayload");
builder.Property<string>("SerializedOutputs");

View file

@ -8,13 +8,10 @@ public interface ICompressionStrategy
/// <summary>
/// Compresses the input.
/// </summary>
ValueTask<string> CompressAsync(string input, CancellationToken cancellationToken);
ValueTask<string> CompressAsync(string input, CancellationToken cancellationToken = default);
/// <summary>
/// Decompresses the input.
/// </summary>
/// <param name="input"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
ValueTask<string> DecompressAsync(string input, CancellationToken cancellationToken);
ValueTask<string> DecompressAsync(string input, CancellationToken cancellationToken = default);
}