Merge AppVersions information into EFMigrationsHistory table
This commit is contained in:
@ -726,7 +726,10 @@ namespace Oqtane.Infrastructure
|
||||
{
|
||||
var script = (isMaster) ? "MigrateMaster.sql" : "MigrateTenant.sql";
|
||||
|
||||
sql.ExecuteScript(connectionString, databaseType, Assembly.GetExecutingAssembly(), script);
|
||||
var query = sql.GetScriptFromAssembly(Assembly.GetExecutingAssembly(), script);
|
||||
query = query.Replace("{{Version}}", Constants.Version);
|
||||
|
||||
sql.ExecuteNonQuery(connectionString, databaseType, query);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
42
Oqtane.Server/Migrations/Framework/MigrationUtils.cs
Normal file
42
Oqtane.Server/Migrations/Framework/MigrationUtils.cs
Normal file
@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage;
|
||||
using Oqtane.Models;
|
||||
using Oqtane.Shared;
|
||||
|
||||
namespace Oqtane.Migrations.Framework
|
||||
{
|
||||
public static class MigrationUtils
|
||||
{
|
||||
public static string BuildInsertScript(HistoryRow row, HistoryRepositoryDependencies dependencies, MigrationHistoryTable historyTable )
|
||||
{
|
||||
var sqlGenerationHelper = dependencies.SqlGenerationHelper;
|
||||
var stringTypeMapping = dependencies.TypeMappingSource.GetMapping(typeof(string));
|
||||
|
||||
return new StringBuilder().Append("INSERT INTO ")
|
||||
.Append(sqlGenerationHelper.DelimitIdentifier(historyTable.TableName, historyTable.TableSchema))
|
||||
.Append(" (")
|
||||
.Append(sqlGenerationHelper.DelimitIdentifier(historyTable.MigrationIdColumnName))
|
||||
.Append(", ")
|
||||
.Append(sqlGenerationHelper.DelimitIdentifier(historyTable.ProductVersionColumnName))
|
||||
.Append(", ")
|
||||
.Append(sqlGenerationHelper.DelimitIdentifier(historyTable.AppliedVersionColumnName))
|
||||
.Append(", ")
|
||||
.Append(sqlGenerationHelper.DelimitIdentifier(historyTable.AppliedDateColumnName))
|
||||
.AppendLine(")")
|
||||
.Append("VALUES (")
|
||||
.Append(stringTypeMapping.GenerateSqlLiteral(row.MigrationId))
|
||||
.Append(", ")
|
||||
.Append(stringTypeMapping.GenerateSqlLiteral(row.ProductVersion))
|
||||
.Append(", ")
|
||||
.Append(stringTypeMapping.GenerateSqlLiteral(Constants.Version))
|
||||
.Append(", ")
|
||||
.Append(stringTypeMapping.GenerateSqlLiteral(DateTime.Now.ToString("yyyy'-'MM'-'dd' 'HH':'mm':'ss'.'fffffffK")))
|
||||
.Append(")")
|
||||
.AppendLine(sqlGenerationHelper.StatementTerminator)
|
||||
.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Oqtane.Databases.Interfaces;
|
||||
using Oqtane.Migrations.EntityBuilders;
|
||||
using Oqtane.Repository;
|
||||
|
||||
namespace Oqtane.Migrations.Tenant
|
||||
{
|
||||
[DbContext(typeof(TenantDBContext))]
|
||||
[Migration("Tenant.02.01.00.02")]
|
||||
public class DropAppVersionsTableinTenant : MultiDatabaseMigration
|
||||
{
|
||||
public DropAppVersionsTableinTenant(IDatabase database) : base(database)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
//Drop AppVersions table
|
||||
var appVersionsEntityBuilder = new AppVersionsEntityBuilder(migrationBuilder, ActiveDatabase);
|
||||
appVersionsEntityBuilder.Drop();
|
||||
}
|
||||
}
|
||||
}
|
@ -14,6 +14,10 @@ namespace Oqtane.Repository
|
||||
|
||||
int ExecuteNonQuery(Tenant tenant, string query);
|
||||
|
||||
int ExecuteNonQuery(string connectionString, string databaseType, string query);
|
||||
|
||||
IDataReader ExecuteReader(Tenant tenant, string query);
|
||||
|
||||
string GetScriptFromAssembly(Assembly assembly, string fileName);
|
||||
}
|
||||
}
|
||||
|
@ -78,13 +78,13 @@ namespace Oqtane.Repository
|
||||
return db.ExecuteReader(tenant.DBConnectionString, query);
|
||||
}
|
||||
|
||||
private int ExecuteNonQuery(string connectionString, string databaseType, string query)
|
||||
public int ExecuteNonQuery(string connectionString, string databaseType, string query)
|
||||
{
|
||||
var db = GetActiveDatabase(databaseType);
|
||||
return db.ExecuteNonQuery(connectionString, query);
|
||||
}
|
||||
|
||||
private string GetScriptFromAssembly(Assembly assembly, string fileName)
|
||||
public string GetScriptFromAssembly(Assembly assembly, string fileName)
|
||||
{
|
||||
// script must be included as an Embedded Resource within an assembly
|
||||
var script = "";
|
||||
|
@ -5,13 +5,17 @@ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'dbo.SchemaVersion
|
||||
CREATE TABLE __EFMigrationsHistory
|
||||
(
|
||||
MigrationId nvarchar(150) NOT NULL CONSTRAINT PK___EFMigrationsHistory PRIMARY KEY,
|
||||
ProductVersion nvarchar(32) NOT NULL
|
||||
ProductVersion nvarchar(32) NOT NULL,
|
||||
AppliedVersion nvarchar(10) NOT NULL,
|
||||
AppliedDate datetime DEFAULT GETDATE()
|
||||
)
|
||||
END
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion)
|
||||
VALUES ('Master.01.00.00.00', '5.0.0')
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion)
|
||||
SELECT REPLACE(REPLACE(ScriptName, 'Oqtane.Scripts.', ''), '.sql', '') As MigrationId, ProductVersion = '5.0.0'
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion, AppliedVersion)
|
||||
VALUES ('Master.01.00.00.00', '5.0.0', '{{Version}}')
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion, AppliedVersion)
|
||||
SELECT REPLACE(REPLACE(ScriptName, 'Oqtane.Scripts.', ''), '.sql', '') As MigrationId,
|
||||
ProductVersion = '5.0.0',
|
||||
AppliedVersion = '{{Version}}'
|
||||
FROM SchemaVersions
|
||||
WHERE ScriptName LIKE 'Oqtane.Scripts.Master.01%'
|
||||
END
|
@ -5,16 +5,20 @@ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'dbo.SchemaVersion
|
||||
CREATE TABLE __EFMigrationsHistory
|
||||
(
|
||||
MigrationId nvarchar(150) NOT NULL CONSTRAINT PK___EFMigrationsHistory PRIMARY KEY,
|
||||
ProductVersion nvarchar(32) NOT NULL
|
||||
ProductVersion nvarchar(32) NOT NULL,
|
||||
AppliedVersion nvarchar(10) NOT NULL,
|
||||
AppliedDate datetime DEFAULT GETDATE()
|
||||
)
|
||||
END
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion)
|
||||
VALUES ('Tenant.01.00.00.00', '5.0.0')
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion)
|
||||
SELECT REPLACE(REPLACE(ScriptName, 'Oqtane.Scripts.', ''), '.sql', '') As MigrationId, ProductVersion = '5.0.0'
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion, AppliedVersion)
|
||||
VALUES ('Tenant.01.00.00.00', '5.0.0', '{{Version}}')
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion, AppliedVersion)
|
||||
SELECT REPLACE(REPLACE(ScriptName, 'Oqtane.Scripts.', ''), '.sql', '') As MigrationId,
|
||||
ProductVersion = '5.0.0',
|
||||
AppliedVersion = '{{Version}}'
|
||||
FROM SchemaVersions
|
||||
WHERE ScriptName LIKE 'Oqtane.Scripts.Tenant.01%'
|
||||
OR ScriptName LIKE 'Oqtane.Scripts.Tenant.02%'
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion)
|
||||
VALUES ('HtmlText.01.00.00.00', '5.0.0')
|
||||
INSERT INTO __EFMigrationsHistory(MigrationId, ProductVersion, AppliedVersion)
|
||||
VALUES ('HtmlText.01.00.00.00', '5.0.0', '{{Version}}')
|
||||
END
|
Reference in New Issue
Block a user