diff --git a/Directory.Packages.props b/Directory.Packages.props index 4ed98d627a..e87bdeee62 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -133,6 +133,7 @@ + @@ -164,6 +165,7 @@ + diff --git a/Elsa.sln b/Elsa.sln index 0cccd0d7a6..0802dfe5d5 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -272,6 +272,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Quartz.EntityFramework EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Quartz.EntityFrameworkCore.PostgreSql", "src\modules\Elsa.Quartz.EntityFrameworkCore.PostgreSql\Elsa.Quartz.EntityFrameworkCore.PostgreSql.csproj", "{CCCCEF8C-7D96-4BEA-B9D0-E91EDF08E65D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.EntityFrameworkCore.Oracle", "src\modules\Elsa.EntityFrameworkCore.Oracle\Elsa.EntityFrameworkCore.Oracle.csproj", "{49D8D2CF-AF68-40FA-951F-018247C97443}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.FileStorage", "src\modules\Elsa.FileStorage\Elsa.FileStorage.csproj", "{732BF088-6AD7-4C4D-9A48-8074253596D4}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "storage", "storage", "{B818988E-639C-4E6E-85C1-B231BCAD9DAB}" @@ -746,6 +748,10 @@ Global {CCCCEF8C-7D96-4BEA-B9D0-E91EDF08E65D}.Debug|Any CPU.Build.0 = Debug|Any CPU {CCCCEF8C-7D96-4BEA-B9D0-E91EDF08E65D}.Release|Any CPU.ActiveCfg = Release|Any CPU {CCCCEF8C-7D96-4BEA-B9D0-E91EDF08E65D}.Release|Any CPU.Build.0 = Release|Any CPU + {49D8D2CF-AF68-40FA-951F-018247C97443}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {49D8D2CF-AF68-40FA-951F-018247C97443}.Debug|Any CPU.Build.0 = Debug|Any CPU + {49D8D2CF-AF68-40FA-951F-018247C97443}.Release|Any CPU.ActiveCfg = Release|Any CPU + {49D8D2CF-AF68-40FA-951F-018247C97443}.Release|Any CPU.Build.0 = Release|Any CPU {732BF088-6AD7-4C4D-9A48-8074253596D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {732BF088-6AD7-4C4D-9A48-8074253596D4}.Debug|Any CPU.Build.0 = Debug|Any CPU {732BF088-6AD7-4C4D-9A48-8074253596D4}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -989,6 +995,7 @@ Global {05F3B23E-CF28-467B-AD3C-595EA4ED6B96} = {AB797AF0-C12C-46DE-A157-7E25625C6200} {74ACD9D0-8B4C-42FA-A582-E93BF0075023} = {AB797AF0-C12C-46DE-A157-7E25625C6200} {CCCCEF8C-7D96-4BEA-B9D0-E91EDF08E65D} = {AB797AF0-C12C-46DE-A157-7E25625C6200} + {49D8D2CF-AF68-40FA-951F-018247C97443} = {9B4F139F-7D26-435C-A561-89E65A67A8E5} {732BF088-6AD7-4C4D-9A48-8074253596D4} = {B818988E-639C-4E6E-85C1-B231BCAD9DAB} {B818988E-639C-4E6E-85C1-B231BCAD9DAB} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79} {29638A67-E79F-44FE-AC05-DA499EBA929E} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79} diff --git a/migrations/efcore-3.0.sh b/migrations/efcore-3.0.sh index b2f25f01e6..e66bcb3558 100644 --- a/migrations/efcore-3.0.sh +++ b/migrations/efcore-3.0.sh @@ -4,7 +4,7 @@ mods=("Alterations" "Runtime" "Management" "Identity" "Labels") # Define the list of providers -providers=("MySql" "SqlServer" "Sqlite" "PostgreSql") +providers=("MySql" "SqlServer" "Sqlite" "PostgreSql" "Oracle") # Connection strings for each provider typeset -A connStrings diff --git a/migrations/efcore-3.1-sql.sh b/migrations/efcore-3.1-sql.sh index f3414ad7f5..6fffe06396 100755 --- a/migrations/efcore-3.1-sql.sh +++ b/migrations/efcore-3.1-sql.sh @@ -4,7 +4,7 @@ mods=("Alterations" "Runtime" "Management" "Identity") # Define the list of providers -providers=("MySql" "SqlServer" "Sqlite" "PostgreSql") +providers=("MySql" "SqlServer" "Sqlite" "PostgreSql" "Oracle") # Loop through each module for module in "${mods[@]}"; do diff --git a/migrations/efcore-3.1.sh b/migrations/efcore-3.1.sh index 236951e6a8..158880741c 100755 --- a/migrations/efcore-3.1.sh +++ b/migrations/efcore-3.1.sh @@ -4,7 +4,7 @@ mods=("Alterations" "Runtime" "Management" "Identity" "Labels") # Define the list of providers -providers=("MySql" "SqlServer" "Sqlite" "PostgreSql") +providers=("MySql" "SqlServer" "Sqlite" "PostgreSql" "Oracle") # Loop through each module for module in "${mods[@]}"; do diff --git a/migrations/efcore-3.2.sh b/migrations/efcore-3.2.sh index 16cd1a66ea..0a2edd654e 100755 --- a/migrations/efcore-3.2.sh +++ b/migrations/efcore-3.2.sh @@ -4,7 +4,7 @@ mods=("Alterations" "Runtime" "Management" "Identity" "Labels") # Define the list of providers -providers=("MySql" "SqlServer" "Sqlite" "PostgreSql") +providers=("MySql" "SqlServer" "Sqlite" "PostgreSql" "Oracle") # Loop through each module for module in "${mods[@]}"; do diff --git a/migrations/efcore-3.3.sh b/migrations/efcore-3.3.sh index 4f43b0cd88..fd265176cb 100755 --- a/migrations/efcore-3.3.sh +++ b/migrations/efcore-3.3.sh @@ -4,7 +4,7 @@ mods=("Alterations" "Runtime" "Management" "Identity" "Labels") # Define the list of providers -providers=("MySql" "SqlServer" "Sqlite" "PostgreSql") +providers=("MySql" "SqlServer" "Sqlite" "PostgreSql" "Oracle") # Loop through each module for module in "${mods[@]}"; do diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/DbContextFactories.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/DbContextFactories.cs new file mode 100644 index 0000000000..bc7fcd943e --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/DbContextFactories.cs @@ -0,0 +1,46 @@ +using Elsa.EntityFrameworkCore.Common.Abstractions; +using Elsa.EntityFrameworkCore.Extensions; +using Elsa.EntityFrameworkCore.Modules.Alterations; +using Elsa.EntityFrameworkCore.Modules.Identity; +using Elsa.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.Modules.Runtime; +using JetBrains.Annotations; +using Microsoft.EntityFrameworkCore; + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace Elsa.EntityFrameworkCore.Oracle; + +[UsedImplicitly] +public class IdentityDbContextFactory : OracleDesignTimeDbContextFactory +{ +} + +[UsedImplicitly] +public class ManagementDbContextFactory : OracleDesignTimeDbContextFactory +{ +} + +[UsedImplicitly] +public class RuntimeDbContextFactory : OracleDesignTimeDbContextFactory +{ +} + +[UsedImplicitly] +public class LabelsDbContextFactory : OracleDesignTimeDbContextFactory +{ +} + +[UsedImplicitly] +public class AlterationsDbContextFactories : OracleDesignTimeDbContextFactory +{ +} + +public class OracleDesignTimeDbContextFactory : DesignTimeDbContextFactoryBase where TDbContext : DbContext +{ + protected override void ConfigureBuilder(DbContextOptionsBuilder builder, string connectionString) + { + builder.UseElsaOracle(GetType().Assembly, connectionString); + } +} \ No newline at end of file diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/DbContextOptionsBuilder.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/DbContextOptionsBuilder.cs new file mode 100644 index 0000000000..efd9b9d5ba --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/DbContextOptionsBuilder.cs @@ -0,0 +1,28 @@ +using System.Reflection; +using Elsa.EntityFrameworkCore.Common; +using Microsoft.EntityFrameworkCore; +using Oracle.EntityFrameworkCore.Infrastructure; + +// ReSharper disable once CheckNamespace +namespace Elsa.EntityFrameworkCore.Extensions; + +/// +/// Contains extension methods for . +/// +public static class DbContextOptionsBuilderExtensions +{ + /// + /// Configures Entity Framework Core with Oracle. + /// + public static DbContextOptionsBuilder UseElsaOracle(this DbContextOptionsBuilder builder, Assembly migrationsAssembly, string connectionString, ElsaDbContextOptions? options = default, Action? configure = default) => + builder + .UseElsaDbContextOptions(options) + .UseOracle(connectionString, db => + { + db + .MigrationsAssembly(options.GetMigrationsAssemblyName(migrationsAssembly)) + .MigrationsHistoryTable(options.GetMigrationsHistoryTableName(), options.GetSchemaName()); + + configure?.Invoke(db); + }); +} \ No newline at end of file diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Elsa.EntityFrameworkCore.Oracle.csproj b/src/modules/Elsa.EntityFrameworkCore.Oracle/Elsa.EntityFrameworkCore.Oracle.csproj new file mode 100644 index 0000000000..1157e64ec5 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Elsa.EntityFrameworkCore.Oracle.csproj @@ -0,0 +1,19 @@ + + + + + Provides Oracle EF Core migrations for various modules. + + elsa module persistence efcore oracle + + + + + + + + + + + + diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Features.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Features.cs new file mode 100644 index 0000000000..c026605aff --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Features.cs @@ -0,0 +1,81 @@ +using System.Reflection; +using Elsa.EntityFrameworkCore.Common; +using Elsa.EntityFrameworkCore.Modules.Alterations; +using Elsa.EntityFrameworkCore.Modules.Identity; +using Elsa.EntityFrameworkCore.Modules.Labels; +using Elsa.EntityFrameworkCore.Modules.Management; +using Elsa.EntityFrameworkCore.Modules.Runtime; + +// ReSharper disable once CheckNamespace +namespace Elsa.EntityFrameworkCore.Extensions; + +/// +/// Provides extensions to configure EF Core to use Oracle. +/// +public static class OracleProvidersExtensions +{ + private static Assembly Assembly => typeof(OracleProvidersExtensions).Assembly; + + /// + /// Configures the to use Oracle. + /// + public static EFCoreIdentityPersistenceFeature UseOracle(this EFCoreIdentityPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaOracle(Assembly, connectionString, options); + return feature; + } + + /// + /// Configures the to use Oracle. + /// + public static EFCoreAlterationsPersistenceFeature UseOracle(this EFCoreAlterationsPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaOracle(Assembly, connectionString, options); + return feature; + } + + /// + /// Configures the to use Oracle. + /// + public static EFCoreLabelPersistenceFeature UseOracle(this EFCoreLabelPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaOracle(Assembly, connectionString, options); + return feature; + } + + /// + /// Configures the to use Oracle. + /// + public static EFCoreWorkflowDefinitionPersistenceFeature UseOracle(this EFCoreWorkflowDefinitionPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaOracle(Assembly, connectionString, options); + return feature; + } + + /// + /// Configures the to use Oracle. + /// + public static EFCoreWorkflowInstancePersistenceFeature UseOracle(this EFCoreWorkflowInstancePersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaOracle(Assembly, connectionString, options); + return feature; + } + + /// + /// Configures the to use Oracle. + /// + public static WorkflowManagementPersistenceFeature UseOracle(this WorkflowManagementPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaOracle(Assembly, connectionString, options); + return feature; + } + + /// + /// Configures the to use Oracle. + /// + public static EFCoreWorkflowRuntimePersistenceFeature UseOracle(this EFCoreWorkflowRuntimePersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = default) + { + feature.DbContextOptionsBuilder = (_, db) => db.UseElsaOracle(Assembly, connectionString, options); + return feature; + } +} \ No newline at end of file diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/FodyWeavers.xml b/src/modules/Elsa.EntityFrameworkCore.Oracle/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Alterations/20240619130951_V3_2.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Alterations/20240619130951_V3_2.Designer.cs new file mode 100644 index 0000000000..58a3bc9cae --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Alterations/20240619130951_V3_2.Designer.cs @@ -0,0 +1,136 @@ +// +using System; +using Elsa.EntityFrameworkCore.Modules.Alterations; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Alterations +{ + [DbContext(typeof(AlterationsElsaDbContext))] + [Migration("20240619130951_V3_2")] + partial class V3_2 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.Alterations.Core.Entities.AlterationJob", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CompletedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("PlanId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SerializedLog") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("StartedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Status") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("CompletedAt") + .HasDatabaseName("IX_AlterationJob_CompletedAt"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_AlterationJob_CreatedAt"); + + b.HasIndex("PlanId") + .HasDatabaseName("IX_AlterationJob_PlanId"); + + b.HasIndex("StartedAt") + .HasDatabaseName("IX_AlterationJob_StartedAt"); + + b.HasIndex("Status") + .HasDatabaseName("IX_AlterationJob_Status"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_AlterationJob_TenantId"); + + b.HasIndex("WorkflowInstanceId") + .HasDatabaseName("IX_AlterationJob_WorkflowInstanceId"); + + b.ToTable("AlterationJobs", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Alterations.Core.Entities.AlterationPlan", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CompletedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("SerializedAlterations") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedWorkflowInstanceFilter") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("StartedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Status") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("CompletedAt") + .HasDatabaseName("IX_AlterationPlan_CompletedAt"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_AlterationPlan_CreatedAt"); + + b.HasIndex("StartedAt") + .HasDatabaseName("IX_AlterationPlan_StartedAt"); + + b.HasIndex("Status") + .HasDatabaseName("IX_AlterationPlan_Status"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_AlterationPlan_TenantId"); + + b.ToTable("AlterationPlans", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Alterations/20240619130951_V3_2.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Alterations/20240619130951_V3_2.cs new file mode 100644 index 0000000000..662748a030 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Alterations/20240619130951_V3_2.cs @@ -0,0 +1,149 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Alterations +{ + /// + public partial class V3_2 : Migration + { + private readonly Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema _schema; + + /// + public V3_2(Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema schema) + { + _schema = schema; + } + + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "Elsa"); + + migrationBuilder.CreateTable( + name: "AlterationJobs", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + PlanId = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowInstanceId = table.Column(type: "NVARCHAR2(450)", nullable: false), + Status = table.Column(type: "NVARCHAR2(450)", nullable: false), + CreatedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: false), + StartedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: true), + CompletedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: true), + SerializedLog = table.Column(type: "NVARCHAR2(2000)", nullable: true), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AlterationJobs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AlterationPlans", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + Status = table.Column(type: "NVARCHAR2(450)", nullable: false), + CreatedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: false), + StartedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: true), + CompletedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: true), + SerializedAlterations = table.Column(type: "NVARCHAR2(2000)", nullable: true), + SerializedWorkflowInstanceFilter = table.Column(type: "NVARCHAR2(2000)", nullable: true), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AlterationPlans", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_AlterationJob_CompletedAt", + schema: _schema.Schema, + table: "AlterationJobs", + column: "CompletedAt"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationJob_CreatedAt", + schema: _schema.Schema, + table: "AlterationJobs", + column: "CreatedAt"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationJob_PlanId", + schema: _schema.Schema, + table: "AlterationJobs", + column: "PlanId"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationJob_StartedAt", + schema: _schema.Schema, + table: "AlterationJobs", + column: "StartedAt"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationJob_Status", + schema: _schema.Schema, + table: "AlterationJobs", + column: "Status"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationJob_TenantId", + schema: _schema.Schema, + table: "AlterationJobs", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationJob_WorkflowInstanceId", + schema: _schema.Schema, + table: "AlterationJobs", + column: "WorkflowInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationPlan_CompletedAt", + schema: _schema.Schema, + table: "AlterationPlans", + column: "CompletedAt"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationPlan_CreatedAt", + schema: _schema.Schema, + table: "AlterationPlans", + column: "CreatedAt"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationPlan_StartedAt", + schema: _schema.Schema, + table: "AlterationPlans", + column: "StartedAt"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationPlan_Status", + schema: _schema.Schema, + table: "AlterationPlans", + column: "Status"); + + migrationBuilder.CreateIndex( + name: "IX_AlterationPlan_TenantId", + schema: _schema.Schema, + table: "AlterationPlans", + column: "TenantId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AlterationJobs", + schema: _schema.Schema); + + migrationBuilder.DropTable( + name: "AlterationPlans", + schema: _schema.Schema); + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Alterations/AlterationsElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Alterations/AlterationsElsaDbContextModelSnapshot.cs new file mode 100644 index 0000000000..7a7b4f7391 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Alterations/AlterationsElsaDbContextModelSnapshot.cs @@ -0,0 +1,133 @@ +// +using System; +using Elsa.EntityFrameworkCore.Modules.Alterations; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Alterations +{ + [DbContext(typeof(AlterationsElsaDbContext))] + partial class AlterationsElsaDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.Alterations.Core.Entities.AlterationJob", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CompletedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("PlanId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SerializedLog") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("StartedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Status") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("CompletedAt") + .HasDatabaseName("IX_AlterationJob_CompletedAt"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_AlterationJob_CreatedAt"); + + b.HasIndex("PlanId") + .HasDatabaseName("IX_AlterationJob_PlanId"); + + b.HasIndex("StartedAt") + .HasDatabaseName("IX_AlterationJob_StartedAt"); + + b.HasIndex("Status") + .HasDatabaseName("IX_AlterationJob_Status"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_AlterationJob_TenantId"); + + b.HasIndex("WorkflowInstanceId") + .HasDatabaseName("IX_AlterationJob_WorkflowInstanceId"); + + b.ToTable("AlterationJobs", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Alterations.Core.Entities.AlterationPlan", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CompletedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("SerializedAlterations") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedWorkflowInstanceFilter") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("StartedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Status") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("CompletedAt") + .HasDatabaseName("IX_AlterationPlan_CompletedAt"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_AlterationPlan_CreatedAt"); + + b.HasIndex("StartedAt") + .HasDatabaseName("IX_AlterationPlan_StartedAt"); + + b.HasIndex("Status") + .HasDatabaseName("IX_AlterationPlan_Status"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_AlterationPlan_TenantId"); + + b.ToTable("AlterationPlans", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Identity/20240619131023_V3_2.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Identity/20240619131023_V3_2.Designer.cs new file mode 100644 index 0000000000..31c30a9717 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Identity/20240619131023_V3_2.Designer.cs @@ -0,0 +1,149 @@ +// +using Elsa.EntityFrameworkCore.Modules.Identity; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Identity +{ + [DbContext(typeof(IdentityElsaDbContext))] + [Migration("20240619131023_V3_2")] + partial class V3_2 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.Identity.Entities.Application", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("HashedApiKey") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("HashedApiKeySalt") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("HashedClientSecret") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("HashedClientSecretSalt") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Roles") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)") + .HasColumnName("Roles"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId") + .IsUnique() + .HasDatabaseName("IX_Application_ClientId"); + + b.HasIndex("Name") + .IsUnique() + .HasDatabaseName("IX_Application_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_Application_TenantId"); + + b.ToTable("Applications", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Identity.Entities.Role", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Permissions") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)") + .HasColumnName("Permissions"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique() + .HasDatabaseName("IX_Role_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_Role_TenantId"); + + b.ToTable("Roles", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Identity.Entities.User", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("HashedPassword") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("HashedPasswordSalt") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Roles") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)") + .HasColumnName("Roles"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique() + .HasDatabaseName("IX_User_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_User_TenantId"); + + b.ToTable("Users", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Identity/20240619131023_V3_2.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Identity/20240619131023_V3_2.cs new file mode 100644 index 0000000000..d43e759245 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Identity/20240619131023_V3_2.cs @@ -0,0 +1,139 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Identity +{ + /// + public partial class V3_2 : Migration + { + private readonly Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema _schema; + + /// + public V3_2(Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema schema) + { + _schema = schema; + } + + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "Elsa"); + + migrationBuilder.CreateTable( + name: "Applications", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + ClientId = table.Column(type: "NVARCHAR2(450)", nullable: false), + HashedClientSecret = table.Column(type: "NVARCHAR2(2000)", nullable: false), + HashedClientSecretSalt = table.Column(type: "NVARCHAR2(2000)", nullable: false), + Name = table.Column(type: "NVARCHAR2(450)", nullable: false), + HashedApiKey = table.Column(type: "NVARCHAR2(2000)", nullable: false), + HashedApiKeySalt = table.Column(type: "NVARCHAR2(2000)", nullable: false), + Roles = table.Column(type: "NVARCHAR2(2000)", nullable: false), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Applications", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Roles", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + Name = table.Column(type: "NVARCHAR2(450)", nullable: false), + Permissions = table.Column(type: "NVARCHAR2(2000)", nullable: false), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Roles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Users", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + Name = table.Column(type: "NVARCHAR2(450)", nullable: false), + HashedPassword = table.Column(type: "NVARCHAR2(2000)", nullable: false), + HashedPasswordSalt = table.Column(type: "NVARCHAR2(2000)", nullable: false), + Roles = table.Column(type: "NVARCHAR2(2000)", nullable: false), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_Application_ClientId", + schema: _schema.Schema, + table: "Applications", + column: "ClientId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Application_Name", + schema: _schema.Schema, + table: "Applications", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Application_TenantId", + schema: _schema.Schema, + table: "Applications", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_Role_Name", + schema: _schema.Schema, + table: "Roles", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Role_TenantId", + schema: _schema.Schema, + table: "Roles", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_User_Name", + schema: _schema.Schema, + table: "Users", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_User_TenantId", + schema: _schema.Schema, + table: "Users", + column: "TenantId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Applications", + schema: _schema.Schema); + + migrationBuilder.DropTable( + name: "Roles", + schema: _schema.Schema); + + migrationBuilder.DropTable( + name: "Users", + schema: _schema.Schema); + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Identity/IdentityElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Identity/IdentityElsaDbContextModelSnapshot.cs new file mode 100644 index 0000000000..6b6a40e5af --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Identity/IdentityElsaDbContextModelSnapshot.cs @@ -0,0 +1,146 @@ +// +using Elsa.EntityFrameworkCore.Modules.Identity; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Identity +{ + [DbContext(typeof(IdentityElsaDbContext))] + partial class IdentityElsaDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.Identity.Entities.Application", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("HashedApiKey") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("HashedApiKeySalt") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("HashedClientSecret") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("HashedClientSecretSalt") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Roles") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)") + .HasColumnName("Roles"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId") + .IsUnique() + .HasDatabaseName("IX_Application_ClientId"); + + b.HasIndex("Name") + .IsUnique() + .HasDatabaseName("IX_Application_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_Application_TenantId"); + + b.ToTable("Applications", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Identity.Entities.Role", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Permissions") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)") + .HasColumnName("Permissions"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique() + .HasDatabaseName("IX_Role_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_Role_TenantId"); + + b.ToTable("Roles", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Identity.Entities.User", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("HashedPassword") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("HashedPasswordSalt") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Roles") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)") + .HasColumnName("Roles"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique() + .HasDatabaseName("IX_User_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_User_TenantId"); + + b.ToTable("Users", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Labels/20240619131032_V3_2.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Labels/20240619131032_V3_2.Designer.cs new file mode 100644 index 0000000000..08254ad00f --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Labels/20240619131032_V3_2.Designer.cs @@ -0,0 +1,94 @@ +// +using Elsa.EntityFrameworkCore.Modules.Labels; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Labels +{ + [DbContext(typeof(LabelsElsaDbContext))] + [Migration("20240619131032_V3_2")] + partial class V3_2 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.Labels.Entities.Label", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Color") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Description") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("NormalizedName") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(2000)"); + + b.HasKey("Id"); + + b.ToTable("Labels", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Labels.Entities.WorkflowDefinitionLabel", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("LabelId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionVersionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("LabelId") + .HasDatabaseName("WorkflowDefinitionLabel_LabelId"); + + b.HasIndex("TenantId") + .HasDatabaseName("WorkflowDefinitionLabel_TenantId"); + + b.HasIndex("WorkflowDefinitionId") + .HasDatabaseName("WorkflowDefinitionLabel_WorkflowDefinitionId"); + + b.HasIndex("WorkflowDefinitionVersionId") + .HasDatabaseName("WorkflowDefinitionLabel_WorkflowDefinitionVersionId"); + + b.ToTable("WorkflowDefinitionLabels", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Labels/20240619131032_V3_2.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Labels/20240619131032_V3_2.cs new file mode 100644 index 0000000000..8a3c17cd8b --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Labels/20240619131032_V3_2.cs @@ -0,0 +1,94 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Labels +{ + /// + public partial class V3_2 : Migration + { + private readonly Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema _schema; + + /// + public V3_2(Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema schema) + { + _schema = schema; + } + + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "Elsa"); + + migrationBuilder.CreateTable( + name: "Labels", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + Name = table.Column(type: "NVARCHAR2(2000)", nullable: false), + NormalizedName = table.Column(type: "NVARCHAR2(2000)", nullable: false), + Description = table.Column(type: "NVARCHAR2(2000)", nullable: true), + Color = table.Column(type: "NVARCHAR2(2000)", nullable: true), + TenantId = table.Column(type: "NVARCHAR2(2000)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Labels", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "WorkflowDefinitionLabels", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowDefinitionId = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowDefinitionVersionId = table.Column(type: "NVARCHAR2(450)", nullable: false), + LabelId = table.Column(type: "NVARCHAR2(450)", nullable: false), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowDefinitionLabels", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "WorkflowDefinitionLabel_LabelId", + schema: _schema.Schema, + table: "WorkflowDefinitionLabels", + column: "LabelId"); + + migrationBuilder.CreateIndex( + name: "WorkflowDefinitionLabel_TenantId", + schema: _schema.Schema, + table: "WorkflowDefinitionLabels", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "WorkflowDefinitionLabel_WorkflowDefinitionId", + schema: _schema.Schema, + table: "WorkflowDefinitionLabels", + column: "WorkflowDefinitionId"); + + migrationBuilder.CreateIndex( + name: "WorkflowDefinitionLabel_WorkflowDefinitionVersionId", + schema: _schema.Schema, + table: "WorkflowDefinitionLabels", + column: "WorkflowDefinitionVersionId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Labels", + schema: _schema.Schema); + + migrationBuilder.DropTable( + name: "WorkflowDefinitionLabels", + schema: _schema.Schema); + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs new file mode 100644 index 0000000000..8ff391a49f --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Labels/LabelsElsaDbContextModelSnapshot.cs @@ -0,0 +1,91 @@ +// +using Elsa.EntityFrameworkCore.Modules.Labels; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Labels +{ + [DbContext(typeof(LabelsElsaDbContext))] + partial class LabelsElsaDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.Labels.Entities.Label", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Color") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Description") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("NormalizedName") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(2000)"); + + b.HasKey("Id"); + + b.ToTable("Labels", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Labels.Entities.WorkflowDefinitionLabel", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("LabelId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionVersionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("LabelId") + .HasDatabaseName("WorkflowDefinitionLabel_LabelId"); + + b.HasIndex("TenantId") + .HasDatabaseName("WorkflowDefinitionLabel_TenantId"); + + b.HasIndex("WorkflowDefinitionId") + .HasDatabaseName("WorkflowDefinitionLabel_WorkflowDefinitionId"); + + b.HasIndex("WorkflowDefinitionVersionId") + .HasDatabaseName("WorkflowDefinitionLabel_WorkflowDefinitionVersionId"); + + b.ToTable("WorkflowDefinitionLabels", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Management/20240619131013_V3_2.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Management/20240619131013_V3_2.Designer.cs new file mode 100644 index 0000000000..f0d1046059 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Management/20240619131013_V3_2.Designer.cs @@ -0,0 +1,226 @@ +// +using System; +using Elsa.EntityFrameworkCore.Modules.Management; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Management +{ + [DbContext(typeof(ManagementElsaDbContext))] + [Migration("20240619131013_V3_2")] + partial class V3_2 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowDefinition", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("BinaryData") + .HasColumnType("RAW(2000)"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Data") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Description") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("IsLatest") + .HasColumnType("NUMBER(1)"); + + b.Property("IsPublished") + .HasColumnType("NUMBER(1)"); + + b.Property("IsReadonly") + .HasColumnType("NUMBER(1)"); + + b.Property("IsSystem") + .HasColumnType("NUMBER(1)"); + + b.Property("MaterializerContext") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("MaterializerName") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Name") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ProviderName") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("StringData") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ToolVersion") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("UsableAsActivity") + .HasColumnType("NUMBER(1)"); + + b.Property("Version") + .HasColumnType("NUMBER(10)"); + + b.HasKey("Id"); + + b.HasIndex("IsLatest") + .HasDatabaseName("IX_WorkflowDefinition_IsLatest"); + + b.HasIndex("IsPublished") + .HasDatabaseName("IX_WorkflowDefinition_IsPublished"); + + b.HasIndex("IsSystem") + .HasDatabaseName("IX_WorkflowDefinition_IsSystem"); + + b.HasIndex("Name") + .HasDatabaseName("IX_WorkflowDefinition_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_WorkflowDefinition_TenantId"); + + b.HasIndex("UsableAsActivity") + .HasDatabaseName("IX_WorkflowDefinition_UsableAsActivity"); + + b.HasIndex("Version") + .HasDatabaseName("IX_WorkflowDefinition_Version"); + + b.HasIndex("DefinitionId", "Version") + .IsUnique() + .HasDatabaseName("IX_WorkflowDefinition_DefinitionId_Version"); + + b.ToTable("WorkflowDefinitions", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowInstance", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CorrelationId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Data") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("DataCompressionAlgorithm") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("DefinitionVersionId") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("FinishedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("IncidentCount") + .HasColumnType("NUMBER(10)"); + + b.Property("IsSystem") + .HasColumnType("NUMBER(1)"); + + b.Property("Name") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ParentWorkflowInstanceId") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Status") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SubStatus") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("UpdatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Version") + .HasColumnType("NUMBER(10)"); + + b.HasKey("Id"); + + b.HasIndex("CorrelationId") + .HasDatabaseName("IX_WorkflowInstance_CorrelationId"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_WorkflowInstance_CreatedAt"); + + b.HasIndex("DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_DefinitionId"); + + b.HasIndex("FinishedAt") + .HasDatabaseName("IX_WorkflowInstance_FinishedAt"); + + b.HasIndex("IsSystem") + .HasDatabaseName("IX_WorkflowInstance_IsSystem"); + + b.HasIndex("Name") + .HasDatabaseName("IX_WorkflowInstance_Name"); + + b.HasIndex("Status") + .HasDatabaseName("IX_WorkflowInstance_Status"); + + b.HasIndex("SubStatus") + .HasDatabaseName("IX_WorkflowInstance_SubStatus"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_WorkflowInstance_TenantId"); + + b.HasIndex("UpdatedAt") + .HasDatabaseName("IX_WorkflowInstance_UpdatedAt"); + + b.HasIndex("Status", "DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_Status_DefinitionId"); + + b.HasIndex("Status", "SubStatus") + .HasDatabaseName("IX_WorkflowInstance_Status_SubStatus"); + + b.HasIndex("SubStatus", "DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_SubStatus_DefinitionId"); + + b.HasIndex("Status", "SubStatus", "DefinitionId", "Version") + .HasDatabaseName("IX_WorkflowInstance_Status_SubStatus_DefinitionId_Version"); + + b.ToTable("WorkflowInstances", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Management/20240619131013_V3_2.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Management/20240619131013_V3_2.cs new file mode 100644 index 0000000000..7ce7bc207a --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Management/20240619131013_V3_2.cs @@ -0,0 +1,229 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Management +{ + /// + public partial class V3_2 : Migration + { + private readonly Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema _schema; + + /// + public V3_2(Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema schema) + { + _schema = schema; + } + + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "Elsa"); + + migrationBuilder.CreateTable( + name: "WorkflowDefinitions", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + DefinitionId = table.Column(type: "NVARCHAR2(450)", nullable: false), + Name = table.Column(type: "NVARCHAR2(450)", nullable: true), + Description = table.Column(type: "NVARCHAR2(2000)", nullable: true), + ToolVersion = table.Column(type: "NVARCHAR2(2000)", nullable: true), + ProviderName = table.Column(type: "NVARCHAR2(2000)", nullable: true), + MaterializerName = table.Column(type: "NVARCHAR2(2000)", nullable: false), + MaterializerContext = table.Column(type: "NVARCHAR2(2000)", nullable: true), + StringData = table.Column(type: "NVARCHAR2(2000)", nullable: true), + BinaryData = table.Column(type: "RAW(2000)", nullable: true), + IsReadonly = table.Column(type: "NUMBER(1)", nullable: false), + IsSystem = table.Column(type: "NUMBER(1)", nullable: false), + Data = table.Column(type: "NVARCHAR2(2000)", nullable: true), + UsableAsActivity = table.Column(type: "NUMBER(1)", nullable: true), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true), + CreatedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: false), + Version = table.Column(type: "NUMBER(10)", nullable: false), + IsLatest = table.Column(type: "NUMBER(1)", nullable: false), + IsPublished = table.Column(type: "NUMBER(1)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowDefinitions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "WorkflowInstances", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + DefinitionId = table.Column(type: "NVARCHAR2(450)", nullable: false), + DefinitionVersionId = table.Column(type: "NVARCHAR2(2000)", nullable: false), + Version = table.Column(type: "NUMBER(10)", nullable: false), + ParentWorkflowInstanceId = table.Column(type: "NVARCHAR2(2000)", nullable: true), + Status = table.Column(type: "NVARCHAR2(450)", nullable: false), + SubStatus = table.Column(type: "NVARCHAR2(450)", nullable: false), + CorrelationId = table.Column(type: "NVARCHAR2(450)", nullable: true), + Name = table.Column(type: "NVARCHAR2(450)", nullable: true), + IncidentCount = table.Column(type: "NUMBER(10)", nullable: false), + IsSystem = table.Column(type: "NUMBER(1)", nullable: false), + CreatedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: false), + UpdatedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: false), + FinishedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: true), + Data = table.Column(type: "NVARCHAR2(2000)", nullable: true), + DataCompressionAlgorithm = table.Column(type: "NVARCHAR2(2000)", nullable: true), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowInstances", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_DefinitionId_Version", + schema: _schema.Schema, + table: "WorkflowDefinitions", + columns: new[] { "DefinitionId", "Version" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_IsLatest", + schema: _schema.Schema, + table: "WorkflowDefinitions", + column: "IsLatest"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_IsPublished", + schema: _schema.Schema, + table: "WorkflowDefinitions", + column: "IsPublished"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_IsSystem", + schema: _schema.Schema, + table: "WorkflowDefinitions", + column: "IsSystem"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_Name", + schema: _schema.Schema, + table: "WorkflowDefinitions", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_TenantId", + schema: _schema.Schema, + table: "WorkflowDefinitions", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_UsableAsActivity", + schema: _schema.Schema, + table: "WorkflowDefinitions", + column: "UsableAsActivity"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowDefinition_Version", + schema: _schema.Schema, + table: "WorkflowDefinitions", + column: "Version"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_CorrelationId", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "CorrelationId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_CreatedAt", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "CreatedAt"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_DefinitionId", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "DefinitionId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_FinishedAt", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "FinishedAt"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_IsSystem", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "IsSystem"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Name", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Status", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "Status"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Status_DefinitionId", + schema: _schema.Schema, + table: "WorkflowInstances", + columns: new[] { "Status", "DefinitionId" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Status_SubStatus", + schema: _schema.Schema, + table: "WorkflowInstances", + columns: new[] { "Status", "SubStatus" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_Status_SubStatus_DefinitionId_Version", + schema: _schema.Schema, + table: "WorkflowInstances", + columns: new[] { "Status", "SubStatus", "DefinitionId", "Version" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_SubStatus", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "SubStatus"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_SubStatus_DefinitionId", + schema: _schema.Schema, + table: "WorkflowInstances", + columns: new[] { "SubStatus", "DefinitionId" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_TenantId", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowInstance_UpdatedAt", + schema: _schema.Schema, + table: "WorkflowInstances", + column: "UpdatedAt"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "WorkflowDefinitions", + schema: _schema.Schema); + + migrationBuilder.DropTable( + name: "WorkflowInstances", + schema: _schema.Schema); + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs new file mode 100644 index 0000000000..d28aebf43b --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Management/ManagementElsaDbContextModelSnapshot.cs @@ -0,0 +1,223 @@ +// +using System; +using Elsa.EntityFrameworkCore.Modules.Management; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Management +{ + [DbContext(typeof(ManagementElsaDbContext))] + partial class ManagementElsaDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowDefinition", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("BinaryData") + .HasColumnType("RAW(2000)"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Data") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Description") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("IsLatest") + .HasColumnType("NUMBER(1)"); + + b.Property("IsPublished") + .HasColumnType("NUMBER(1)"); + + b.Property("IsReadonly") + .HasColumnType("NUMBER(1)"); + + b.Property("IsSystem") + .HasColumnType("NUMBER(1)"); + + b.Property("MaterializerContext") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("MaterializerName") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Name") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ProviderName") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("StringData") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ToolVersion") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("UsableAsActivity") + .HasColumnType("NUMBER(1)"); + + b.Property("Version") + .HasColumnType("NUMBER(10)"); + + b.HasKey("Id"); + + b.HasIndex("IsLatest") + .HasDatabaseName("IX_WorkflowDefinition_IsLatest"); + + b.HasIndex("IsPublished") + .HasDatabaseName("IX_WorkflowDefinition_IsPublished"); + + b.HasIndex("IsSystem") + .HasDatabaseName("IX_WorkflowDefinition_IsSystem"); + + b.HasIndex("Name") + .HasDatabaseName("IX_WorkflowDefinition_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_WorkflowDefinition_TenantId"); + + b.HasIndex("UsableAsActivity") + .HasDatabaseName("IX_WorkflowDefinition_UsableAsActivity"); + + b.HasIndex("Version") + .HasDatabaseName("IX_WorkflowDefinition_Version"); + + b.HasIndex("DefinitionId", "Version") + .IsUnique() + .HasDatabaseName("IX_WorkflowDefinition_DefinitionId_Version"); + + b.ToTable("WorkflowDefinitions", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Management.Entities.WorkflowInstance", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CorrelationId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Data") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("DataCompressionAlgorithm") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("DefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("DefinitionVersionId") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("FinishedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("IncidentCount") + .HasColumnType("NUMBER(10)"); + + b.Property("IsSystem") + .HasColumnType("NUMBER(1)"); + + b.Property("Name") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ParentWorkflowInstanceId") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Status") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SubStatus") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("UpdatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Version") + .HasColumnType("NUMBER(10)"); + + b.HasKey("Id"); + + b.HasIndex("CorrelationId") + .HasDatabaseName("IX_WorkflowInstance_CorrelationId"); + + b.HasIndex("CreatedAt") + .HasDatabaseName("IX_WorkflowInstance_CreatedAt"); + + b.HasIndex("DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_DefinitionId"); + + b.HasIndex("FinishedAt") + .HasDatabaseName("IX_WorkflowInstance_FinishedAt"); + + b.HasIndex("IsSystem") + .HasDatabaseName("IX_WorkflowInstance_IsSystem"); + + b.HasIndex("Name") + .HasDatabaseName("IX_WorkflowInstance_Name"); + + b.HasIndex("Status") + .HasDatabaseName("IX_WorkflowInstance_Status"); + + b.HasIndex("SubStatus") + .HasDatabaseName("IX_WorkflowInstance_SubStatus"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_WorkflowInstance_TenantId"); + + b.HasIndex("UpdatedAt") + .HasDatabaseName("IX_WorkflowInstance_UpdatedAt"); + + b.HasIndex("Status", "DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_Status_DefinitionId"); + + b.HasIndex("Status", "SubStatus") + .HasDatabaseName("IX_WorkflowInstance_Status_SubStatus"); + + b.HasIndex("SubStatus", "DefinitionId") + .HasDatabaseName("IX_WorkflowInstance_SubStatus_DefinitionId"); + + b.HasIndex("Status", "SubStatus", "DefinitionId", "Version") + .HasDatabaseName("IX_WorkflowInstance_Status_SubStatus_DefinitionId_Version"); + + b.ToTable("WorkflowInstances", "Elsa"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Runtime/20240619131003_V3_2.Designer.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Runtime/20240619131003_V3_2.Designer.cs new file mode 100644 index 0000000000..1afcd6a1ba --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Runtime/20240619131003_V3_2.Designer.cs @@ -0,0 +1,383 @@ +// +using System; +using Elsa.EntityFrameworkCore.Modules.Runtime; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Runtime +{ + [DbContext(typeof(RuntimeElsaDbContext))] + [Migration("20240619131003_V3_2")] + partial class V3_2 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.KeyValues.Entities.SerializedKeyValuePair", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SerializedValue") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "TenantId" }, "IX_SerializedKeyValuePair_TenantId"); + + b.ToTable("KeyValuePairs", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityName") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityNodeId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityType") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityTypeVersion") + .HasColumnType("NUMBER(10)"); + + b.Property("CompletedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("HasBookmarks") + .HasColumnType("NUMBER(1)"); + + b.Property("SerializedActivityState") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedActivityStateCompressionAlgorithm") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedException") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedOutputs") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedPayload") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedProperties") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("StartedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Status") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(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("TenantId") + .HasDatabaseName("IX_ActivityExecutionRecord_TenantId"); + + 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("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityInstanceId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityTypeName") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CorrelationId") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Hash") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SerializedMetadata") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedPayload") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + 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[] { "TenantId" }, "IX_StoredBookmark_TenantId"); + + b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId"); + + b.ToTable("Bookmarks", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Hash") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SerializedPayload") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionVersionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("Hash") + .HasDatabaseName("IX_StoredTrigger_Hash"); + + b.HasIndex("Name") + .HasDatabaseName("IX_StoredTrigger_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_StoredTrigger_TenantId"); + + 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("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityName") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityNodeId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityType") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityTypeVersion") + .HasColumnType("NUMBER(10)"); + + b.Property("EventName") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Message") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("ParentActivityInstanceId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Sequence") + .HasColumnType("NUMBER(19)"); + + b.Property("SerializedActivityState") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedPayload") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Source") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Timestamp") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionVersionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowVersion") + .HasColumnType("NUMBER(10)"); + + 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("TenantId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_TenantId"); + + 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"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Runtime/20240619131003_V3_2.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Runtime/20240619131003_V3_2.cs new file mode 100644 index 0000000000..f31c1d3057 --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Runtime/20240619131003_V3_2.cs @@ -0,0 +1,422 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Runtime +{ + /// + public partial class V3_2 : Migration + { + private readonly Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema _schema; + + /// + public V3_2(Elsa.EntityFrameworkCore.Common.Contracts.IElsaDbContextSchema schema) + { + _schema = schema; + } + + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.EnsureSchema( + name: "Elsa"); + + migrationBuilder.CreateTable( + name: "ActivityExecutionRecords", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowInstanceId = table.Column(type: "NVARCHAR2(450)", nullable: false), + ActivityId = table.Column(type: "NVARCHAR2(450)", nullable: false), + ActivityNodeId = table.Column(type: "NVARCHAR2(450)", nullable: false), + ActivityType = table.Column(type: "NVARCHAR2(450)", nullable: false), + ActivityTypeVersion = table.Column(type: "NUMBER(10)", nullable: false), + ActivityName = table.Column(type: "NVARCHAR2(450)", nullable: true), + StartedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: false), + HasBookmarks = table.Column(type: "NUMBER(1)", nullable: false), + Status = table.Column(type: "NVARCHAR2(450)", nullable: false), + CompletedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: true), + SerializedActivityState = table.Column(type: "NVARCHAR2(2000)", nullable: true), + SerializedActivityStateCompressionAlgorithm = table.Column(type: "NVARCHAR2(2000)", nullable: true), + SerializedException = table.Column(type: "NVARCHAR2(2000)", nullable: true), + SerializedOutputs = table.Column(type: "NVARCHAR2(2000)", nullable: true), + SerializedPayload = table.Column(type: "NVARCHAR2(2000)", nullable: true), + SerializedProperties = table.Column(type: "NVARCHAR2(2000)", nullable: true), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ActivityExecutionRecords", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Bookmarks", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + ActivityTypeName = table.Column(type: "NVARCHAR2(450)", nullable: false), + Hash = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowInstanceId = table.Column(type: "NVARCHAR2(450)", nullable: false), + ActivityInstanceId = table.Column(type: "NVARCHAR2(450)", nullable: true), + CorrelationId = table.Column(type: "NVARCHAR2(2000)", nullable: true), + CreatedAt = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: false), + SerializedMetadata = table.Column(type: "NVARCHAR2(2000)", nullable: true), + SerializedPayload = table.Column(type: "NVARCHAR2(2000)", nullable: true), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Bookmarks", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "KeyValuePairs", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + SerializedValue = table.Column(type: "NVARCHAR2(2000)", nullable: false), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_KeyValuePairs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Triggers", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowDefinitionId = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowDefinitionVersionId = table.Column(type: "NVARCHAR2(450)", nullable: false), + Name = table.Column(type: "NVARCHAR2(450)", nullable: false), + ActivityId = table.Column(type: "NVARCHAR2(2000)", nullable: false), + Hash = table.Column(type: "NVARCHAR2(450)", nullable: true), + SerializedPayload = table.Column(type: "NVARCHAR2(2000)", nullable: true), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Triggers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "WorkflowExecutionLogRecords", + schema: _schema.Schema, + columns: table => new + { + Id = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowDefinitionId = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowDefinitionVersionId = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowInstanceId = table.Column(type: "NVARCHAR2(450)", nullable: false), + WorkflowVersion = table.Column(type: "NUMBER(10)", nullable: false), + ActivityInstanceId = table.Column(type: "NVARCHAR2(450)", nullable: false), + ParentActivityInstanceId = table.Column(type: "NVARCHAR2(450)", nullable: true), + ActivityId = table.Column(type: "NVARCHAR2(450)", nullable: false), + ActivityType = table.Column(type: "NVARCHAR2(450)", nullable: false), + ActivityTypeVersion = table.Column(type: "NUMBER(10)", nullable: false), + ActivityName = table.Column(type: "NVARCHAR2(450)", nullable: true), + ActivityNodeId = table.Column(type: "NVARCHAR2(450)", nullable: false), + Timestamp = table.Column(type: "TIMESTAMP(7) WITH TIME ZONE", nullable: false), + Sequence = table.Column(type: "NUMBER(19)", nullable: false), + EventName = table.Column(type: "NVARCHAR2(450)", nullable: true), + Message = table.Column(type: "NVARCHAR2(2000)", nullable: true), + Source = table.Column(type: "NVARCHAR2(2000)", nullable: true), + SerializedActivityState = table.Column(type: "NVARCHAR2(2000)", nullable: true), + SerializedPayload = table.Column(type: "NVARCHAR2(2000)", nullable: true), + TenantId = table.Column(type: "NVARCHAR2(450)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkflowExecutionLogRecords", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_ActivityId", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "ActivityId"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_ActivityName", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "ActivityName"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_ActivityNodeId", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "ActivityNodeId"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_ActivityType", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "ActivityType"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_ActivityType_ActivityTypeVersion", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + columns: new[] { "ActivityType", "ActivityTypeVersion" }); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_ActivityTypeVersion", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "ActivityTypeVersion"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_CompletedAt", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "CompletedAt"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_HasBookmarks", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "HasBookmarks"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_StartedAt", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "StartedAt"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_Status", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "Status"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_TenantId", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_ActivityExecutionRecord_WorkflowInstanceId", + schema: _schema.Schema, + table: "ActivityExecutionRecords", + column: "WorkflowInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_ActivityInstanceId", + schema: _schema.Schema, + table: "Bookmarks", + column: "ActivityInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_ActivityTypeName", + schema: _schema.Schema, + table: "Bookmarks", + column: "ActivityTypeName"); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_ActivityTypeName_Hash", + schema: _schema.Schema, + table: "Bookmarks", + columns: new[] { "ActivityTypeName", "Hash" }); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_ActivityTypeName_Hash_WorkflowInstanceId", + schema: _schema.Schema, + table: "Bookmarks", + columns: new[] { "ActivityTypeName", "Hash", "WorkflowInstanceId" }); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_CreatedAt", + schema: _schema.Schema, + table: "Bookmarks", + column: "CreatedAt"); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_Hash", + schema: _schema.Schema, + table: "Bookmarks", + column: "Hash"); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_TenantId", + schema: _schema.Schema, + table: "Bookmarks", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_StoredBookmark_WorkflowInstanceId", + schema: _schema.Schema, + table: "Bookmarks", + column: "WorkflowInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_SerializedKeyValuePair_TenantId", + schema: _schema.Schema, + table: "KeyValuePairs", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_StoredTrigger_Hash", + schema: _schema.Schema, + table: "Triggers", + column: "Hash"); + + migrationBuilder.CreateIndex( + name: "IX_StoredTrigger_Name", + schema: _schema.Schema, + table: "Triggers", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_StoredTrigger_TenantId", + schema: _schema.Schema, + table: "Triggers", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_StoredTrigger_WorkflowDefinitionId", + schema: _schema.Schema, + table: "Triggers", + column: "WorkflowDefinitionId"); + + migrationBuilder.CreateIndex( + name: "IX_StoredTrigger_WorkflowDefinitionVersionId", + schema: _schema.Schema, + table: "Triggers", + column: "WorkflowDefinitionVersionId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityId", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "ActivityId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityInstanceId", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "ActivityInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityName", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "ActivityName"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityNodeId", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "ActivityNodeId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityType", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "ActivityType"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityType_ActivityTypeVersion", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + columns: new[] { "ActivityType", "ActivityTypeVersion" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ActivityTypeVersion", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "ActivityTypeVersion"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_EventName", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "EventName"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_ParentActivityInstanceId", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "ParentActivityInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_Sequence", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "Sequence"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_TenantId", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_Timestamp", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "Timestamp"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_Timestamp_Sequence", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + columns: new[] { "Timestamp", "Sequence" }); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_WorkflowDefinitionId", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "WorkflowDefinitionId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_WorkflowDefinitionVersionId", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "WorkflowDefinitionVersionId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_WorkflowInstanceId", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "WorkflowInstanceId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkflowExecutionLogRecord_WorkflowVersion", + schema: _schema.Schema, + table: "WorkflowExecutionLogRecords", + column: "WorkflowVersion"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ActivityExecutionRecords", + schema: _schema.Schema); + + migrationBuilder.DropTable( + name: "Bookmarks", + schema: _schema.Schema); + + migrationBuilder.DropTable( + name: "KeyValuePairs", + schema: _schema.Schema); + + migrationBuilder.DropTable( + name: "Triggers", + schema: _schema.Schema); + + migrationBuilder.DropTable( + name: "WorkflowExecutionLogRecords", + schema: _schema.Schema); + } + } +} diff --git a/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs new file mode 100644 index 0000000000..b94c157eeb --- /dev/null +++ b/src/modules/Elsa.EntityFrameworkCore.Oracle/Migrations/Runtime/RuntimeElsaDbContextModelSnapshot.cs @@ -0,0 +1,380 @@ +// +using System; +using Elsa.EntityFrameworkCore.Modules.Runtime; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Oracle.EntityFrameworkCore.Metadata; + +#nullable disable + +namespace Elsa.EntityFrameworkCore.Oracle.Migrations.Runtime +{ + [DbContext(typeof(RuntimeElsaDbContext))] + partial class RuntimeElsaDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("Elsa") + .HasAnnotation("ProductVersion", "7.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + OracleModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Elsa.KeyValues.Entities.SerializedKeyValuePair", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SerializedValue") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "TenantId" }, "IX_SerializedKeyValuePair_TenantId"); + + b.ToTable("KeyValuePairs", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.ActivityExecutionRecord", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityName") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityNodeId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityType") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityTypeVersion") + .HasColumnType("NUMBER(10)"); + + b.Property("CompletedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("HasBookmarks") + .HasColumnType("NUMBER(1)"); + + b.Property("SerializedActivityState") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedActivityStateCompressionAlgorithm") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedException") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedOutputs") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedPayload") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedProperties") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("StartedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Status") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(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("TenantId") + .HasDatabaseName("IX_ActivityExecutionRecord_TenantId"); + + 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("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityInstanceId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityTypeName") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("CorrelationId") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("CreatedAt") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("Hash") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SerializedMetadata") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedPayload") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + 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[] { "TenantId" }, "IX_StoredBookmark_TenantId"); + + b.HasIndex(new[] { "WorkflowInstanceId" }, "IX_StoredBookmark_WorkflowInstanceId"); + + b.ToTable("Bookmarks", "Elsa"); + }); + + modelBuilder.Entity("Elsa.Workflows.Runtime.Entities.StoredTrigger", b => + { + b.Property("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Hash") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("SerializedPayload") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionVersionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.HasKey("Id"); + + b.HasIndex("Hash") + .HasDatabaseName("IX_StoredTrigger_Hash"); + + b.HasIndex("Name") + .HasDatabaseName("IX_StoredTrigger_Name"); + + b.HasIndex("TenantId") + .HasDatabaseName("IX_StoredTrigger_TenantId"); + + 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("Id") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityName") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityNodeId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityType") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("ActivityTypeVersion") + .HasColumnType("NUMBER(10)"); + + b.Property("EventName") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Message") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("ParentActivityInstanceId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Sequence") + .HasColumnType("NUMBER(19)"); + + b.Property("SerializedActivityState") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("SerializedPayload") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("Source") + .HasColumnType("NVARCHAR2(2000)"); + + b.Property("TenantId") + .HasColumnType("NVARCHAR2(450)"); + + b.Property("Timestamp") + .HasColumnType("TIMESTAMP(7) WITH TIME ZONE"); + + b.Property("WorkflowDefinitionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowDefinitionVersionId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowInstanceId") + .IsRequired() + .HasColumnType("NVARCHAR2(450)"); + + b.Property("WorkflowVersion") + .HasColumnType("NUMBER(10)"); + + 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("TenantId") + .HasDatabaseName("IX_WorkflowExecutionLogRecord_TenantId"); + + 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"); + }); +#pragma warning restore 612, 618 + } + } +}