diff --git a/docker-compose.yaml b/docker-compose.yaml index 302bbab1a..cfca68741 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,37 +1,37 @@ version: '3.7' services: - - mongodb: - image: mongo - ports: - - "27017:27017" - - postgres: - image: postgres:11 - environment: - - POSTGRES_USER=root - - POSTGRES_PASSWORD=Password12! - - POSTGRES_DB=yessql - ports: - - "5432:5432" - - azureblobstorage: - image: mcr.microsoft.com/azure-blob-storage - - redis: - image: redis - ports: - - "6379:6379" - - rabbitmq: - image: "rabbitmq:3-management" - ports: - - "15672:15672" - - "5672:5672" - smtp4dev: - image: rnwood/smtp4dev:linux-amd64-3.1.0-ci0856 - ports: - - "3000:80" - - "2525:25" \ No newline at end of file + mongodb: + image: mongo + ports: + - "27017:27017" + + postgres: + image: postgres:11 + environment: + - POSTGRES_USER=root + - POSTGRES_PASSWORD=Password12! + - POSTGRES_DB=yessql + ports: + - "5432:5432" + + azureblobstorage: + image: mcr.microsoft.com/azure-blob-storage + + redis: + image: redis + ports: + - "6379:6379" + + rabbitmq: + image: "rabbitmq:3-management" + ports: + - "15672:15672" + - "5672:5672" + + smtp4dev: + image: rnwood/smtp4dev:linux-amd64-3.1.0-ci0856 + ports: + - "3000:80" + - "2525:25" \ No newline at end of file diff --git a/src/core/Elsa.Core/Persistence/Decorators/EventPublishingWorkflowDefinitionStore.cs b/src/core/Elsa.Core/Persistence/Decorators/EventPublishingWorkflowDefinitionStore.cs index ed55fc062..f68ef5564 100644 --- a/src/core/Elsa.Core/Persistence/Decorators/EventPublishingWorkflowDefinitionStore.cs +++ b/src/core/Elsa.Core/Persistence/Decorators/EventPublishingWorkflowDefinitionStore.cs @@ -2,13 +2,10 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; - using Elsa.Events; using Elsa.Models; using Elsa.Persistence.Specifications; - using MediatR; - using Open.Linq.AsyncExtensions; namespace Elsa.Persistence.Decorators @@ -28,22 +25,29 @@ namespace Elsa.Persistence.Decorators public async Task DeleteAsync(WorkflowDefinition entity, CancellationToken cancellationToken = default) { + await _mediator.Publish(new WorkflowDefinitionDeleting(entity), cancellationToken); await _store.DeleteAsync(entity, cancellationToken); await _mediator.Publish(new WorkflowDefinitionDeleted(entity), cancellationToken); } public async Task DeleteManyAsync(ISpecification specification, CancellationToken cancellationToken = default) { - var instances = await FindManyAsync(specification, cancellationToken: cancellationToken).ToList(); + var workflowDefinitions = await FindManyAsync(specification, cancellationToken: cancellationToken).ToList(); + + if (!workflowDefinitions.Any()) + return 0; + + foreach (var workflowDefinition in workflowDefinitions) + await _mediator.Publish(new WorkflowDefinitionDeleting(workflowDefinition), cancellationToken); + + await _mediator.Publish(new ManyWorkflowDefinitionsDeleting(workflowDefinitions), cancellationToken); + var count = await _store.DeleteManyAsync(specification, cancellationToken); - if (instances.Any()) - { - foreach (var instance in instances) - await _mediator.Publish(new WorkflowDefinitionDeleted(instance), cancellationToken); + foreach (var instance in workflowDefinitions) + await _mediator.Publish(new WorkflowDefinitionDeleted(instance), cancellationToken); - await _mediator.Publish(new ManyWorkflowDefinitionsDeleted(instances), cancellationToken); - } + await _mediator.Publish(new ManyWorkflowDefinitionsDeleted(workflowDefinitions), cancellationToken); return count; } @@ -55,27 +59,34 @@ namespace Elsa.Persistence.Decorators public async Task SaveAsync(WorkflowDefinition entity, CancellationToken cancellationToken = default) { + await _mediator.Publish(new WorkflowDefinitionSaving(entity), cancellationToken); await _store.SaveAsync(entity, cancellationToken); await _mediator.Publish(new WorkflowDefinitionSaved(entity), cancellationToken); } public async Task AddAsync(WorkflowDefinition entity, CancellationToken cancellationToken = default) { + await _mediator.Publish(new WorkflowDefinitionSaving(entity), cancellationToken); await _store.AddAsync(entity, cancellationToken); await _mediator.Publish(new WorkflowDefinitionSaved(entity), cancellationToken); } - + public async Task AddManyAsync(IEnumerable entities, CancellationToken cancellationToken = default) { var list = entities.ToList(); + + foreach (var entity in list) + await _mediator.Publish(new WorkflowDefinitionSaving(entity), cancellationToken); + await _store.AddManyAsync(list, cancellationToken); - foreach (var entity in list) + foreach (var entity in list) await _mediator.Publish(new WorkflowDefinitionSaved(entity), cancellationToken); } - - public async Task UpdateAsync(WorkflowDefinition entity, CancellationToken cancellationToken = default) + + public async Task UpdateAsync(WorkflowDefinition entity, CancellationToken cancellationToken = default) { + await _mediator.Publish(new WorkflowDefinitionSaving(entity), cancellationToken); await _store.UpdateAsync(entity, cancellationToken); await _mediator.Publish(new WorkflowDefinitionSaved(entity), cancellationToken); } diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/ElsaContext.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/ElsaContext.cs index a1b2bd886..c6d8e3233 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/ElsaContext.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/ElsaContext.cs @@ -8,11 +8,14 @@ namespace Elsa.Persistence.EntityFramework.Core { public class ElsaContext : DbContext { + public const string ElsaSchema = "Elsa"; + public const string MigrationsHistoryTable = "__EFMigrationsHistory"; + public ElsaContext(DbContextOptions options) : base(options) { } - public virtual string Schema => "Elsa"; + public virtual string Schema => ElsaSchema; public DbSet WorkflowDefinitions { get; set; } = default!; public DbSet WorkflowInstances { get; set; } = default!; public DbSet WorkflowExecutionLogRecords { get; set; } = default!; @@ -20,9 +23,9 @@ namespace Elsa.Persistence.EntityFramework.Core protected override void OnModelCreating(ModelBuilder modelBuilder) { - if (!string.IsNullOrWhiteSpace(Schema)) + if (!string.IsNullOrWhiteSpace(Schema)) modelBuilder.HasDefaultSchema(Schema); - + modelBuilder.ApplyConfigurationsFromAssembly(typeof(ElsaContext).Assembly); if (Database.IsSqlite()) diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/StartupTasks/RunMigrations.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/StartupTasks/RunMigrations.cs index c3ef8f111..fc3d6358b 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/StartupTasks/RunMigrations.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Core/StartupTasks/RunMigrations.cs @@ -24,6 +24,7 @@ namespace Elsa.Persistence.EntityFramework.Core.StartupTasks { await using var dbContext = _dbContextFactory.CreateDbContext(); await dbContext.Database.MigrateAsync(cancellationToken); + await dbContext.DisposeAsync(); } } } \ No newline at end of file diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/DbContextOptionsBuilderExtensions.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/DbContextOptionsBuilderExtensions.cs index 9c43f9209..43aad8503 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/DbContextOptionsBuilderExtensions.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/DbContextOptionsBuilderExtensions.cs @@ -1,3 +1,4 @@ +using Elsa.Persistence.EntityFramework.Core; using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFramework.MySql @@ -8,6 +9,8 @@ namespace Elsa.Persistence.EntityFramework.MySql /// Configures the context to use MySql /// public static DbContextOptionsBuilder UseMySql(this DbContextOptionsBuilder builder, string connectionString) => - builder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString), db => db.MigrationsAssembly(typeof(MySqlElsaContextFactory).Assembly.GetName().Name)); + builder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString), db => db + .MigrationsAssembly(typeof(MySqlElsaContextFactory).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaContext.MigrationsHistoryTable, ElsaContext.ElsaSchema)); } } \ No newline at end of file diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210506160115_Initial.Designer.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210511074305_Initial.Designer.cs similarity index 99% rename from src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210506160115_Initial.Designer.cs rename to src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210511074305_Initial.Designer.cs index 4570d674f..242d81942 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210506160115_Initial.Designer.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210511074305_Initial.Designer.cs @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFramework.MySql.Migrations { [DbContext(typeof(ElsaContext))] - [Migration("20210506160115_Initial")] + [Migration("20210511074305_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210506160115_Initial.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210511074305_Initial.cs similarity index 79% rename from src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210506160115_Initial.cs rename to src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210511074305_Initial.cs index 9c1dd3ee0..ee07483ea 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210506160115_Initial.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/Migrations/20210511074305_Initial.cs @@ -18,91 +18,128 @@ namespace Elsa.Persistence.EntityFramework.MySql.Migrations schema: "Elsa", columns: table => new { - Id = table.Column(type: "varchar(255)", nullable: false), - TenantId = table.Column(type: "varchar(255)", nullable: true), - Hash = table.Column(type: "varchar(255)", nullable: false), - Model = table.Column(type: "longtext", nullable: false), - ModelType = table.Column(type: "longtext", nullable: false), - ActivityType = table.Column(type: "varchar(255)", nullable: false), - ActivityId = table.Column(type: "varchar(255)", nullable: false), + Id = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + TenantId = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Hash = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Model = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ModelType = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ActivityType = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ActivityId = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), WorkflowInstanceId = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_Bookmarks", x => x.Id); - }); + }) + .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "WorkflowDefinitions", schema: "Elsa", columns: table => new { - Id = table.Column(type: "varchar(255)", nullable: false), - DefinitionId = table.Column(type: "varchar(255)", nullable: false), - TenantId = table.Column(type: "varchar(255)", nullable: true), - Name = table.Column(type: "varchar(255)", nullable: true), - DisplayName = table.Column(type: "longtext", nullable: true), - Description = table.Column(type: "longtext", nullable: true), + Id = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + DefinitionId = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + TenantId = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Name = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + DisplayName = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), Version = table.Column(type: "int", nullable: false), IsSingleton = table.Column(type: "tinyint(1)", nullable: false), PersistenceBehavior = table.Column(type: "int", nullable: false), DeleteCompletedInstances = table.Column(type: "tinyint(1)", nullable: false), IsPublished = table.Column(type: "tinyint(1)", nullable: false), IsLatest = table.Column(type: "tinyint(1)", nullable: false), - Tag = table.Column(type: "varchar(255)", nullable: true), + Tag = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), Data = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_WorkflowDefinitions", x => x.Id); - }); + }) + .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "WorkflowExecutionLogRecords", schema: "Elsa", columns: table => new { - Id = table.Column(type: "varchar(255)", nullable: false), - TenantId = table.Column(type: "varchar(255)", nullable: true), - WorkflowInstanceId = table.Column(type: "varchar(255)", nullable: false), - ActivityId = table.Column(type: "varchar(255)", nullable: false), - ActivityType = table.Column(type: "varchar(255)", nullable: false), + Id = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + TenantId = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + WorkflowInstanceId = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ActivityId = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ActivityType = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), Timestamp = table.Column(type: "datetime(6)", nullable: false), - EventName = table.Column(type: "longtext", nullable: true), - Message = table.Column(type: "longtext", nullable: true), - Source = table.Column(type: "longtext", nullable: true), + EventName = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Message = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Source = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), Data = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_WorkflowExecutionLogRecords", x => x.Id); - }); + }) + .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "WorkflowInstances", schema: "Elsa", columns: table => new { - Id = table.Column(type: "varchar(255)", nullable: false), - DefinitionId = table.Column(type: "varchar(255)", nullable: false), - TenantId = table.Column(type: "varchar(255)", nullable: true), + Id = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + DefinitionId = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + TenantId = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), Version = table.Column(type: "int", nullable: false), WorkflowStatus = table.Column(type: "int", nullable: false), - CorrelationId = table.Column(type: "varchar(255)", nullable: true), - ContextType = table.Column(type: "varchar(255)", nullable: true), - ContextId = table.Column(type: "varchar(255)", nullable: true), - Name = table.Column(type: "varchar(255)", nullable: true), + CorrelationId = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ContextType = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ContextId = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Name = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), CreatedAt = table.Column(type: "datetime(6)", nullable: false), LastExecutedAt = table.Column(type: "datetime(6)", nullable: true), FinishedAt = table.Column(type: "datetime(6)", nullable: true), CancelledAt = table.Column(type: "datetime(6)", nullable: true), FaultedAt = table.Column(type: "datetime(6)", nullable: true), Data = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_WorkflowInstances", x => x.Id); - }); + }) + .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_Bookmark_ActivityId", diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/MySqlElsaContextFactory.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/MySqlElsaContextFactory.cs index 6b768b0a2..5faf861bb 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/MySqlElsaContextFactory.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.MySql/MySqlElsaContextFactory.cs @@ -18,7 +18,9 @@ namespace Elsa.Persistence.EntityFramework.MySql builder.UseMySql( connectionString, serverVersion != null ? ServerVersion.Parse(serverVersion) : ServerVersion.AutoDetect(connectionString), - db => db.MigrationsAssembly(typeof(MySqlElsaContextFactory).Assembly.GetName().Name)); + db => db + .MigrationsAssembly(typeof(MySqlElsaContextFactory).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaContext.MigrationsHistoryTable, ElsaContext.ElsaSchema)); return new ElsaContext(builder.Options); } diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/DbContextOptionsBuilderExtensions.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/DbContextOptionsBuilderExtensions.cs index 72e340bca..32714e565 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/DbContextOptionsBuilderExtensions.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/DbContextOptionsBuilderExtensions.cs @@ -1,3 +1,4 @@ +using Elsa.Persistence.EntityFramework.Core; using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFramework.PostgreSql @@ -8,6 +9,8 @@ namespace Elsa.Persistence.EntityFramework.PostgreSql /// Configures the context to use PostgreSql. /// public static DbContextOptionsBuilder UsePostgreSql(this DbContextOptionsBuilder builder, string connectionString) => - builder.UseNpgsql(connectionString, db => db.MigrationsAssembly(typeof(PostgreSqlElsaContextFactory).Assembly.GetName().Name)); + builder.UseNpgsql(connectionString, db => db + .MigrationsAssembly(typeof(PostgreSqlElsaContextFactory).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaContext.MigrationsHistoryTable, ElsaContext.ElsaSchema)); } } \ No newline at end of file diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210506160122_Initial.Designer.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210511074312_Initial.Designer.cs similarity index 99% rename from src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210506160122_Initial.Designer.cs rename to src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210511074312_Initial.Designer.cs index 41230d477..ef91ea8c2 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210506160122_Initial.Designer.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210511074312_Initial.Designer.cs @@ -10,7 +10,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Elsa.Persistence.EntityFramework.PostgreSql.Migrations { [DbContext(typeof(ElsaContext))] - [Migration("20210506160122_Initial")] + [Migration("20210511074312_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210506160122_Initial.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210511074312_Initial.cs similarity index 100% rename from src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210506160122_Initial.cs rename to src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/Migrations/20210511074312_Initial.cs diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/PostgreSqlElsaContextFactory.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/PostgreSqlElsaContextFactory.cs index 14d397239..47537189d 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/PostgreSqlElsaContextFactory.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.PostgreSql/PostgreSqlElsaContextFactory.cs @@ -11,9 +11,12 @@ namespace Elsa.Persistence.EntityFramework.PostgreSql { var builder = new DbContextOptionsBuilder(); var connectionString = args.Any() ? args[0] : "Server=127.0.0.1;Port=5432;Database=elsa;User Id=postgres;Password=password;"; + builder.UseNpgsql( connectionString, - db => db.MigrationsAssembly(typeof(PostgreSqlElsaContextFactory).Assembly.GetName().Name)); + db => db.MigrationsAssembly(typeof(PostgreSqlElsaContextFactory).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaContext.MigrationsHistoryTable, ElsaContext.ElsaSchema)); + return new ElsaContext(builder.Options); } } diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/DbContextOptionsBuilderExtensions.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/DbContextOptionsBuilderExtensions.cs index f16e322b7..d347650a0 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/DbContextOptionsBuilderExtensions.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/DbContextOptionsBuilderExtensions.cs @@ -1,3 +1,4 @@ +using Elsa.Persistence.EntityFramework.Core; using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFramework.SqlServer @@ -8,6 +9,8 @@ namespace Elsa.Persistence.EntityFramework.SqlServer /// Configures the context to use SqlServer. /// public static DbContextOptionsBuilder UseSqlServer(this DbContextOptionsBuilder builder, string connectionString) => - builder.UseSqlServer(connectionString, db => db.MigrationsAssembly(typeof(SqlServerElsaContextFactory).Assembly.GetName().Name)); + builder.UseSqlServer(connectionString, db => db + .MigrationsAssembly(typeof(SqlServerElsaContextFactory).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaContext.MigrationsHistoryTable, ElsaContext.ElsaSchema)); } } \ No newline at end of file diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210506160211_Initial.Designer.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210511074331_Initial.Designer.cs similarity index 99% rename from src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210506160211_Initial.Designer.cs rename to src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210511074331_Initial.Designer.cs index 18b015661..1069af152 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210506160211_Initial.Designer.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210511074331_Initial.Designer.cs @@ -10,7 +10,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFramework.SqlServer.Migrations { [DbContext(typeof(ElsaContext))] - [Migration("20210506160211_Initial")] + [Migration("20210511074331_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210506160211_Initial.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210511074331_Initial.cs similarity index 100% rename from src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210506160211_Initial.cs rename to src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/Migrations/20210511074331_Initial.cs diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/SqlServerElsaContextFactory.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/SqlServerElsaContextFactory.cs index 049fa45dd..304066d48 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/SqlServerElsaContextFactory.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.SqlServer/SqlServerElsaContextFactory.cs @@ -12,7 +12,9 @@ namespace Elsa.Persistence.EntityFramework.SqlServer { var builder = new DbContextOptionsBuilder(); var connectionString = args.Any() ? args[0] : throw new InvalidOperationException("Please specify a connection string. E.g. dotnet ef database update -- \"Server=Local;Database=elsa\""); - builder.UseSqlServer(connectionString, db => db.MigrationsAssembly(typeof(SqlServerElsaContextFactory).Assembly.GetName().Name)); + builder.UseSqlServer(connectionString, db => db + .MigrationsAssembly(typeof(SqlServerElsaContextFactory).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaContext.MigrationsHistoryTable, ElsaContext.ElsaSchema)); return new ElsaContext(builder.Options); } } diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/DbContextOptionsBuilderExtensions.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/DbContextOptionsBuilderExtensions.cs index 54b310741..dd414ec13 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/DbContextOptionsBuilderExtensions.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/DbContextOptionsBuilderExtensions.cs @@ -1,9 +1,12 @@ -using Microsoft.EntityFrameworkCore; +using Elsa.Persistence.EntityFramework.Core; +using Microsoft.EntityFrameworkCore; namespace Elsa.Persistence.EntityFramework.Sqlite { public static class DbContextOptionsBuilderExtensions { - public static DbContextOptionsBuilder UseSqlite(this DbContextOptionsBuilder builder) => builder.UseSqlite("Data Source=elsa.sqlite.db;Cache=Shared;", db => db.MigrationsAssembly(typeof(SqliteElsaContextFactory).Assembly.GetName().Name)); + public static DbContextOptionsBuilder UseSqlite(this DbContextOptionsBuilder builder) => builder.UseSqlite("Data Source=elsa.sqlite.db;Cache=Shared;", db => db + .MigrationsAssembly(typeof(SqliteElsaContextFactory).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaContext.MigrationsHistoryTable, ElsaContext.ElsaSchema)); } } \ No newline at end of file diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210506160129_Initial.Designer.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210511074322_Initial.Designer.cs similarity index 99% rename from src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210506160129_Initial.Designer.cs rename to src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210511074322_Initial.Designer.cs index b254b9a43..5bce1fec1 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210506160129_Initial.Designer.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210511074322_Initial.Designer.cs @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Elsa.Persistence.EntityFramework.Sqlite.Migrations { [DbContext(typeof(ElsaContext))] - [Migration("20210506160129_Initial")] + [Migration("20210511074322_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210506160129_Initial.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210511074322_Initial.cs similarity index 100% rename from src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210506160129_Initial.cs rename to src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/Migrations/20210511074322_Initial.cs diff --git a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/SqliteElsaContextFactory.cs b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/SqliteElsaContextFactory.cs index b21874ee5..b1dd98eb7 100644 --- a/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/SqliteElsaContextFactory.cs +++ b/src/persistence/Elsa.Persistence.EntityFramework/Elsa.Persistence.EntityFramework.Sqlite/SqliteElsaContextFactory.cs @@ -11,7 +11,11 @@ namespace Elsa.Persistence.EntityFramework.Sqlite { var builder = new DbContextOptionsBuilder(); var connectionString = args.Any() ? args[0] : "Data Source=elsa.db;Cache=Shared"; - builder.UseSqlite(connectionString, db => db.MigrationsAssembly(typeof(SqliteElsaContextFactory).Assembly.GetName().Name)); + + builder.UseSqlite(connectionString, db => db + .MigrationsAssembly(typeof(SqliteElsaContextFactory).Assembly.GetName().Name) + .MigrationsHistoryTable(ElsaContext.MigrationsHistoryTable, ElsaContext.ElsaSchema)); + return new ElsaContext(builder.Options); } }