From 0aa2f7d8b09867000c63ea8d7ab553039da4f87c Mon Sep 17 00:00:00 2001 From: David Peters Date: Mon, 8 Mar 2021 11:25:21 -0600 Subject: [PATCH] added EFCore indicies --- .../Configuration/BookmarkConfiguration.cs | 22 +++++++++++++++++++ .../WorkflowDefinitionConfiguration.cs | 8 ++++++- .../WorkflowInstanceConfiguration.cs | 14 +++++++++++- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/BookmarkConfiguration.cs diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/BookmarkConfiguration.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/BookmarkConfiguration.cs new file mode 100644 index 000000000..0a5745131 --- /dev/null +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/BookmarkConfiguration.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Elsa.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace Elsa.Persistence.EntityFramework.Core.Configuration +{ + public class BookmarkConfiguration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.HasIndex(x => new { x.ActivityType, x.TenantId, x.Hash}).HasDatabaseName($"IX_{nameof(Bookmark)}_{nameof(Bookmark.ActivityType)}_{nameof(Bookmark.TenantId)}_{nameof(Bookmark.Hash)}"); + builder.HasIndex(x => x.TenantId).HasDatabaseName($"IX_{nameof(Bookmark)}_{nameof(Bookmark.TenantId)}"); + builder.HasIndex(x => x.Hash).HasDatabaseName($"IX_{nameof(Bookmark)}_{nameof(Bookmark.Hash)}"); + builder.HasIndex(x => x.ActivityType).HasDatabaseName($"IX_{nameof(Bookmark)}_{nameof(Bookmark.ActivityType)}"); + builder.HasIndex(x => x.ActivityId).HasDatabaseName($"IX_{nameof(Bookmark)}_{nameof(Bookmark.ActivityId)}"); + builder.HasIndex(x => x.WorkflowInstanceId).HasDatabaseName($"IX_{nameof(Bookmark)}_{nameof(Bookmark.WorkflowInstanceId)}"); + } + } +} diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/WorkflowDefinitionConfiguration.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/WorkflowDefinitionConfiguration.cs index e7f7f5036..4d57e540c 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/WorkflowDefinitionConfiguration.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/WorkflowDefinitionConfiguration.cs @@ -1,4 +1,4 @@ -using Elsa.Models; +using Elsa.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -14,6 +14,12 @@ namespace Elsa.Persistence.EntityFramework.Core.Configuration builder.Ignore(x => x.CustomAttributes); builder.Ignore(x => x.ContextOptions); builder.Property("Data"); + builder.HasIndex(x => new {x.DefinitionId, x.Version}).HasDatabaseName($"IX_{nameof(WorkflowDefinition)}_{nameof(WorkflowDefinition.DefinitionId)}_{nameof(WorkflowDefinition.VersionId)}"); + builder.HasIndex(x => x.TenantId).HasDatabaseName($"IX_{nameof(WorkflowDefinition)}_{nameof(WorkflowDefinition.TenantId)}"); + builder.HasIndex(x => x.Version).HasDatabaseName($"IX_{nameof(WorkflowDefinition)}_{nameof(WorkflowDefinition.Version)}"); + builder.HasIndex(x => x.Name).HasDatabaseName($"IX_{nameof(WorkflowDefinition)}_{nameof(WorkflowDefinition.Name)}"); + builder.HasIndex(x => x.IsLatest).HasDatabaseName($"IX_{nameof(WorkflowDefinition)}_{nameof(WorkflowDefinition.IsLatest)}"); + builder.HasIndex(x => x.IsPublished).HasDatabaseName($"IX_{nameof(WorkflowDefinition)}_{nameof(WorkflowDefinition.IsPublished)}"); } } } \ No newline at end of file diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/WorkflowInstanceConfiguration.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/WorkflowInstanceConfiguration.cs index 0b3088504..c3c97282d 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/WorkflowInstanceConfiguration.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/Configuration/WorkflowInstanceConfiguration.cs @@ -1,4 +1,4 @@ -using Elsa.Models; +using Elsa.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -23,6 +23,18 @@ namespace Elsa.Persistence.EntityFramework.Core.Configuration builder.Ignore(x => x.Variables); builder.Ignore(x => x.CurrentActivity); builder.Property("Data"); + builder.HasIndex(x => new { x.WorkflowStatus, x.DefinitionId, x.Version }).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.WorkflowStatus)}_{nameof(WorkflowInstance.DefinitionId)}_{nameof(WorkflowInstance.Version)}"); + builder.HasIndex(x => x.TenantId).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.TenantId)}"); + builder.HasIndex(x => x.DefinitionId).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.DefinitionId)}"); + builder.HasIndex(x => x.WorkflowStatus).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.WorkflowStatus)}"); + builder.HasIndex(x => x.CorrelationId).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.CorrelationId)}"); + builder.HasIndex(x => x.ContextType).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.ContextType)}"); + builder.HasIndex(x => x.ContextId).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.ContextId)}"); + builder.HasIndex(x => x.Name).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.Name)}"); + builder.HasIndex(x => x.CreatedAt).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.CreatedAt)}"); + builder.HasIndex(x => x.LastExecutedAt).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.LastExecutedAt)}"); + builder.HasIndex(x => x.FinishedAt).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.FinishedAt)}"); + builder.HasIndex(x => x.FaultedAt).HasDatabaseName($"IX_{nameof(WorkflowInstance)}_{nameof(WorkflowInstance.FaultedAt)}"); } } } \ No newline at end of file