diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210308174917_AddIndicies.Designer.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210308174917_AddIndicies.Designer.cs
new file mode 100644
index 000000000..7b888e42a
--- /dev/null
+++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210308174917_AddIndicies.Designer.cs
@@ -0,0 +1,272 @@
+//
+using System;
+using Elsa.Persistence.EntityFramework.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+namespace Elsa.Persistence.EntityFramework.PostgreSql.Migrations
+{
+ [DbContext(typeof(ElsaContext))]
+ [Migration("20210308174917_AddIndicies")]
+ partial class AddIndicies
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .UseIdentityByDefaultColumns()
+ .HasAnnotation("Relational:MaxIdentifierLength", 63)
+ .HasAnnotation("ProductVersion", "5.0.2");
+
+ modelBuilder.Entity("Elsa.Models.Bookmark", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ActivityType")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Hash")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Model")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ModelType")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ActivityId")
+ .HasDatabaseName("IX_Bookmark_ActivityId");
+
+ b.HasIndex("ActivityType")
+ .HasDatabaseName("IX_Bookmark_ActivityType");
+
+ b.HasIndex("Hash")
+ .HasDatabaseName("IX_Bookmark_Hash");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_Bookmark_TenantId");
+
+ b.HasIndex("WorkflowInstanceId")
+ .HasDatabaseName("IX_Bookmark_WorkflowInstanceId");
+
+ b.HasIndex("ActivityType", "TenantId", "Hash")
+ .HasDatabaseName("IX_Bookmark_ActivityType_TenantId_Hash");
+
+ b.ToTable("Bookmarks");
+ });
+
+ modelBuilder.Entity("Elsa.Models.WorkflowDefinition", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("Data")
+ .HasColumnType("text");
+
+ b.Property("DefinitionId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DeleteCompletedInstances")
+ .HasColumnType("boolean");
+
+ b.Property("Description")
+ .HasColumnType("text");
+
+ b.Property("DisplayName")
+ .HasColumnType("text");
+
+ b.Property("IsLatest")
+ .HasColumnType("boolean");
+
+ b.Property("IsPublished")
+ .HasColumnType("boolean");
+
+ b.Property("IsSingleton")
+ .HasColumnType("boolean");
+
+ b.Property("Name")
+ .HasColumnType("text");
+
+ b.Property("PersistenceBehavior")
+ .HasColumnType("integer");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.Property("Version")
+ .HasColumnType("integer");
+
+ 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("TenantId")
+ .HasDatabaseName("IX_WorkflowDefinition_TenantId");
+
+ b.HasIndex("Version")
+ .HasDatabaseName("IX_WorkflowDefinition_Version");
+
+ b.HasIndex("DefinitionId", "Version")
+ .HasDatabaseName("IX_WorkflowDefinition_DefinitionId_VersionId");
+
+ b.ToTable("WorkflowDefinitions");
+ });
+
+ modelBuilder.Entity("Elsa.Models.WorkflowExecutionLogRecord", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("ActivityId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ActivityType")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Data")
+ .HasColumnType("text");
+
+ b.Property("Message")
+ .HasColumnType("text");
+
+ b.Property("Source")
+ .HasColumnType("text");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.Property("Timestamp")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("WorkflowInstanceId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("WorkflowExecutionLogRecords");
+ });
+
+ modelBuilder.Entity("Elsa.Models.WorkflowInstance", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text");
+
+ b.Property("CancelledAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("ContextId")
+ .HasColumnType("text");
+
+ b.Property("ContextType")
+ .HasColumnType("text");
+
+ b.Property("CorrelationId")
+ .HasColumnType("text");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Data")
+ .HasColumnType("text");
+
+ b.Property("DefinitionId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("FaultedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("FinishedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("LastExecutedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Name")
+ .HasColumnType("text");
+
+ b.Property("TenantId")
+ .HasColumnType("text");
+
+ b.Property("Version")
+ .HasColumnType("integer");
+
+ b.Property("WorkflowStatus")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ContextId")
+ .HasDatabaseName("IX_WorkflowInstance_ContextId");
+
+ b.HasIndex("ContextType")
+ .HasDatabaseName("IX_WorkflowInstance_ContextType");
+
+ 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("TenantId")
+ .HasDatabaseName("IX_WorkflowInstance_TenantId");
+
+ b.HasIndex("WorkflowStatus")
+ .HasDatabaseName("IX_WorkflowInstance_WorkflowStatus");
+
+ b.HasIndex("WorkflowStatus", "DefinitionId", "Version")
+ .HasDatabaseName("IX_WorkflowInstance_WorkflowStatus_DefinitionId_Version");
+
+ b.ToTable("WorkflowInstances");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210308174917_AddIndicies.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210308174917_AddIndicies.cs
new file mode 100644
index 000000000..0f19d6dd5
--- /dev/null
+++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210308174917_AddIndicies.cs
@@ -0,0 +1,229 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+namespace Elsa.Persistence.EntityFramework.PostgreSql.Migrations
+{
+ public partial class AddIndicies : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_ContextId",
+ table: "WorkflowInstances",
+ column: "ContextId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_ContextType",
+ table: "WorkflowInstances",
+ column: "ContextType");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_CorrelationId",
+ table: "WorkflowInstances",
+ column: "CorrelationId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_CreatedAt",
+ table: "WorkflowInstances",
+ column: "CreatedAt");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_DefinitionId",
+ table: "WorkflowInstances",
+ column: "DefinitionId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_FaultedAt",
+ table: "WorkflowInstances",
+ column: "FaultedAt");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_FinishedAt",
+ table: "WorkflowInstances",
+ column: "FinishedAt");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_LastExecutedAt",
+ table: "WorkflowInstances",
+ column: "LastExecutedAt");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_Name",
+ table: "WorkflowInstances",
+ column: "Name");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_TenantId",
+ table: "WorkflowInstances",
+ column: "TenantId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_WorkflowStatus",
+ table: "WorkflowInstances",
+ column: "WorkflowStatus");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowInstance_WorkflowStatus_DefinitionId_Version",
+ table: "WorkflowInstances",
+ columns: new[] { "WorkflowStatus", "DefinitionId", "Version" });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowDefinition_DefinitionId_VersionId",
+ table: "WorkflowDefinitions",
+ columns: new[] { "DefinitionId", "Version" });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowDefinition_IsLatest",
+ table: "WorkflowDefinitions",
+ column: "IsLatest");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowDefinition_IsPublished",
+ table: "WorkflowDefinitions",
+ column: "IsPublished");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowDefinition_Name",
+ table: "WorkflowDefinitions",
+ column: "Name");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowDefinition_TenantId",
+ table: "WorkflowDefinitions",
+ column: "TenantId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_WorkflowDefinition_Version",
+ table: "WorkflowDefinitions",
+ column: "Version");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Bookmark_ActivityId",
+ table: "Bookmarks",
+ column: "ActivityId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Bookmark_ActivityType",
+ table: "Bookmarks",
+ column: "ActivityType");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Bookmark_ActivityType_TenantId_Hash",
+ table: "Bookmarks",
+ columns: new[] { "ActivityType", "TenantId", "Hash" });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Bookmark_Hash",
+ table: "Bookmarks",
+ column: "Hash");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Bookmark_TenantId",
+ table: "Bookmarks",
+ column: "TenantId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Bookmark_WorkflowInstanceId",
+ table: "Bookmarks",
+ column: "WorkflowInstanceId");
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_ContextId",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_ContextType",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_CorrelationId",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_CreatedAt",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_DefinitionId",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_FaultedAt",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_FinishedAt",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_LastExecutedAt",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_Name",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_TenantId",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_WorkflowStatus",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowInstance_WorkflowStatus_DefinitionId_Version",
+ table: "WorkflowInstances");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowDefinition_DefinitionId_VersionId",
+ table: "WorkflowDefinitions");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowDefinition_IsLatest",
+ table: "WorkflowDefinitions");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowDefinition_IsPublished",
+ table: "WorkflowDefinitions");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowDefinition_Name",
+ table: "WorkflowDefinitions");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowDefinition_TenantId",
+ table: "WorkflowDefinitions");
+
+ migrationBuilder.DropIndex(
+ name: "IX_WorkflowDefinition_Version",
+ table: "WorkflowDefinitions");
+
+ migrationBuilder.DropIndex(
+ name: "IX_Bookmark_ActivityId",
+ table: "Bookmarks");
+
+ migrationBuilder.DropIndex(
+ name: "IX_Bookmark_ActivityType",
+ table: "Bookmarks");
+
+ migrationBuilder.DropIndex(
+ name: "IX_Bookmark_ActivityType_TenantId_Hash",
+ table: "Bookmarks");
+
+ migrationBuilder.DropIndex(
+ name: "IX_Bookmark_Hash",
+ table: "Bookmarks");
+
+ migrationBuilder.DropIndex(
+ name: "IX_Bookmark_TenantId",
+ table: "Bookmarks");
+
+ migrationBuilder.DropIndex(
+ name: "IX_Bookmark_WorkflowInstanceId",
+ table: "Bookmarks");
+ }
+ }
+}
diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/ElsaContextModelSnapshot.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/ElsaContextModelSnapshot.cs
index 77806e526..9ae160596 100644
--- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/ElsaContextModelSnapshot.cs
+++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/ElsaContextModelSnapshot.cs
@@ -53,6 +53,24 @@ namespace Elsa.Persistence.EntityFramework.PostgreSql.Migrations
b.HasKey("Id");
+ b.HasIndex("ActivityId")
+ .HasDatabaseName("IX_Bookmark_ActivityId");
+
+ b.HasIndex("ActivityType")
+ .HasDatabaseName("IX_Bookmark_ActivityType");
+
+ b.HasIndex("Hash")
+ .HasDatabaseName("IX_Bookmark_Hash");
+
+ b.HasIndex("TenantId")
+ .HasDatabaseName("IX_Bookmark_TenantId");
+
+ b.HasIndex("WorkflowInstanceId")
+ .HasDatabaseName("IX_Bookmark_WorkflowInstanceId");
+
+ b.HasIndex("ActivityType", "TenantId", "Hash")
+ .HasDatabaseName("IX_Bookmark_ActivityType_TenantId_Hash");
+
b.ToTable("Bookmarks");
});
@@ -100,6 +118,24 @@ namespace Elsa.Persistence.EntityFramework.PostgreSql.Migrations
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("TenantId")
+ .HasDatabaseName("IX_WorkflowDefinition_TenantId");
+
+ b.HasIndex("Version")
+ .HasDatabaseName("IX_WorkflowDefinition_Version");
+
+ b.HasIndex("DefinitionId", "Version")
+ .HasDatabaseName("IX_WorkflowDefinition_DefinitionId_VersionId");
+
b.ToTable("WorkflowDefinitions");
});
@@ -190,6 +226,42 @@ namespace Elsa.Persistence.EntityFramework.PostgreSql.Migrations
b.HasKey("Id");
+ b.HasIndex("ContextId")
+ .HasDatabaseName("IX_WorkflowInstance_ContextId");
+
+ b.HasIndex("ContextType")
+ .HasDatabaseName("IX_WorkflowInstance_ContextType");
+
+ 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("TenantId")
+ .HasDatabaseName("IX_WorkflowInstance_TenantId");
+
+ b.HasIndex("WorkflowStatus")
+ .HasDatabaseName("IX_WorkflowInstance_WorkflowStatus");
+
+ b.HasIndex("WorkflowStatus", "DefinitionId", "Version")
+ .HasDatabaseName("IX_WorkflowInstance_WorkflowStatus_DefinitionId_Version");
+
b.ToTable("WorkflowInstances");
});
#pragma warning restore 612, 618