diff --git a/Oqtane.Database.Sqlite/SqliteDatabase.cs b/Oqtane.Database.Sqlite/SqliteDatabase.cs index 8b91ffba..803bfc69 100644 --- a/Oqtane.Database.Sqlite/SqliteDatabase.cs +++ b/Oqtane.Database.Sqlite/SqliteDatabase.cs @@ -35,6 +35,11 @@ namespace Oqtane.Database.Sqlite // not implemented as SQLite does not support dropping columns } + public override void AlterStringColumn(MigrationBuilder builder, string name, string table, int length, bool nullable, bool unicode) + { + // not implemented as SQLite does not support altering columns + } + public override string ConcatenateSql(params string[] values) { var returnValue = String.Empty; diff --git a/Oqtane.Server/Databases/DatabaseBase.cs b/Oqtane.Server/Databases/DatabaseBase.cs index d9a25371..6a515a2a 100644 --- a/Oqtane.Server/Databases/DatabaseBase.cs +++ b/Oqtane.Server/Databases/DatabaseBase.cs @@ -81,6 +81,11 @@ namespace Oqtane.Databases builder.DropColumn(name, table); } + public virtual void AlterStringColumn(MigrationBuilder builder, string name, string table, int length, bool nullable, bool unicode) + { + builder.AlterColumn(RewriteName(name), RewriteName(table), maxLength: length, nullable: nullable, unicode: unicode); + } + public abstract DbContextOptionsBuilder UseDatabase(DbContextOptionsBuilder optionsBuilder, string connectionString); } } diff --git a/Oqtane.Server/Databases/Interfaces/IDatabase.cs b/Oqtane.Server/Databases/Interfaces/IDatabase.cs index 8d80e39e..e85a3bd0 100644 --- a/Oqtane.Server/Databases/Interfaces/IDatabase.cs +++ b/Oqtane.Server/Databases/Interfaces/IDatabase.cs @@ -34,6 +34,8 @@ namespace Oqtane.Databases.Interfaces public void DropColumn(MigrationBuilder builder, string name, string table); + public void AlterStringColumn(MigrationBuilder builder, string name, string table, int length, bool nullable, bool unicode); + public DbContextOptionsBuilder UseDatabase(DbContextOptionsBuilder optionsBuilder, string connectionString); } } diff --git a/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs b/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs index d9275734..24ded671 100644 --- a/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs +++ b/Oqtane.Server/Migrations/EntityBuilders/BaseEntityBuilder.cs @@ -109,7 +109,7 @@ namespace Oqtane.Migrations.EntityBuilders public void AlterStringColumn(string name, int length, bool nullable = false, bool unicode = true) { - _migrationBuilder.AlterColumn(RewriteName(name), RewriteName(EntityTableName), maxLength: length, nullable: nullable, unicode: unicode); + ActiveDatabase.AlterStringColumn(_migrationBuilder, RewriteName(name), RewriteName(EntityTableName), length, nullable, unicode); } public void AddDecimalColumn(string name, int precision, int scale, bool nullable = false) diff --git a/Oqtane.Server/Migrations/Tenant/02010001_ChangeFolderNameAndPathColumnsSize.cs b/Oqtane.Server/Migrations/Tenant/02010001_ChangeFolderNameAndPathColumnsSize.cs index c19f3511..17d10d07 100644 --- a/Oqtane.Server/Migrations/Tenant/02010001_ChangeFolderNameAndPathColumnsSize.cs +++ b/Oqtane.Server/Migrations/Tenant/02010001_ChangeFolderNameAndPathColumnsSize.cs @@ -16,33 +16,22 @@ namespace Oqtane.Migrations.Tenant protected override void Up(MigrationBuilder migrationBuilder) { - if (ActiveDatabase.Name != "Sqlite") - { - var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder, ActiveDatabase); - - folderEntityBuilder.AlterStringColumn("Name", 256); - - // Drop the index is needed because the Path is already associated with IX_Folder - folderEntityBuilder.DropForeignKey("FK_Folder_Site"); - folderEntityBuilder.DropIndex("IX_Folder"); - folderEntityBuilder.AlterStringColumn("Path", 512); - folderEntityBuilder.AddIndex("IX_Folder", new[] { "SiteId", "Path" }, true); - folderEntityBuilder.AddForeignKey("FK_Folder_Site"); - } + var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder, ActiveDatabase); + // Drop the index is needed because the Path is already associated with IX_Folder + folderEntityBuilder.DropIndex("IX_Folder"); + folderEntityBuilder.AlterStringColumn("Name", 256); + folderEntityBuilder.AlterStringColumn("Path", 512); + folderEntityBuilder.AddIndex("IX_Folder", new[] { "SiteId", "Path" }, true); } protected override void Down(MigrationBuilder migrationBuilder) { - if (ActiveDatabase.Name != "Sqlite") - { - var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder, ActiveDatabase); - - folderEntityBuilder.AlterStringColumn("Name", 50); - - folderEntityBuilder.DropIndex("IX_Folder"); - folderEntityBuilder.AlterStringColumn("Path", 50); - folderEntityBuilder.AddIndex("IX_Folder", new[] { "SiteId", "Path" }, true); - } + var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder, ActiveDatabase); + // Drop the index is needed because the Path is already associated with IX_Folder + folderEntityBuilder.DropIndex("IX_Folder"); + folderEntityBuilder.AlterStringColumn("Path", 50); + folderEntityBuilder.AlterStringColumn("Name", 50); + folderEntityBuilder.AddIndex("IX_Folder", new[] { "SiteId", "Path" }, true); } } } diff --git a/Oqtane.Server/Migrations/Tenant/03000101_ChangeFileNameColumnsSize.cs b/Oqtane.Server/Migrations/Tenant/03000101_ChangeFileNameColumnsSize.cs index c1b898a0..4363b013 100644 --- a/Oqtane.Server/Migrations/Tenant/03000101_ChangeFileNameColumnsSize.cs +++ b/Oqtane.Server/Migrations/Tenant/03000101_ChangeFileNameColumnsSize.cs @@ -16,29 +16,20 @@ namespace Oqtane.Migrations.Tenant protected override void Up(MigrationBuilder migrationBuilder) { - if (ActiveDatabase.Name != "Sqlite") - { - var fileEntityBuilder = new FileEntityBuilder(migrationBuilder, ActiveDatabase); - - // Drop the index is needed because the Name is already associated with IX_File - fileEntityBuilder.DropForeignKey("FK_File_Folder"); - fileEntityBuilder.DropIndex("IX_File"); - fileEntityBuilder.AlterStringColumn("Name", 256); - fileEntityBuilder.AddIndex("IX_File", new[] { "FolderId", "Name" }, true); - fileEntityBuilder.AddForeignKey("FK_File_Folder"); - } + var fileEntityBuilder = new FileEntityBuilder(migrationBuilder, ActiveDatabase); + // Drop the index is needed because the Name is already associated with IX_File + fileEntityBuilder.DropIndex("IX_File"); + fileEntityBuilder.AlterStringColumn("Name", 256); + fileEntityBuilder.AddIndex("IX_File", new[] { "FolderId", "Name" }, true); } protected override void Down(MigrationBuilder migrationBuilder) { - if (ActiveDatabase.Name != "Sqlite") - { - var fileEntityBuilder = new FileEntityBuilder(migrationBuilder, ActiveDatabase); - - fileEntityBuilder.DropIndex("IX_File"); - fileEntityBuilder.AlterStringColumn("Name", 50); - fileEntityBuilder.AddIndex("IX_File", new[] { "FolderId", "Name" }, true); - } + var fileEntityBuilder = new FileEntityBuilder(migrationBuilder, ActiveDatabase); + // Drop the index is needed because the Name is already associated with IX_File + fileEntityBuilder.DropIndex("IX_File"); + fileEntityBuilder.AlterStringColumn("Name", 50); + fileEntityBuilder.AddIndex("IX_File", new[] { "FolderId", "Name" }, true); } } } diff --git a/Oqtane.Server/Migrations/Tenant/03010001_ExpandVisitorAndUrlMappingUrls.cs b/Oqtane.Server/Migrations/Tenant/03010001_ExpandVisitorAndUrlMappingUrls.cs index 947fc6ec..754a5b7a 100644 --- a/Oqtane.Server/Migrations/Tenant/03010001_ExpandVisitorAndUrlMappingUrls.cs +++ b/Oqtane.Server/Migrations/Tenant/03010001_ExpandVisitorAndUrlMappingUrls.cs @@ -16,37 +16,28 @@ namespace Oqtane.Migrations.Tenant protected override void Up(MigrationBuilder migrationBuilder) { - if (ActiveDatabase.Name != "Sqlite") - { - var visitorEntityBuilder = new VisitorEntityBuilder(migrationBuilder, ActiveDatabase); - visitorEntityBuilder.AlterStringColumn("Url", 2048); + var visitorEntityBuilder = new VisitorEntityBuilder(migrationBuilder, ActiveDatabase); + visitorEntityBuilder.AlterStringColumn("Url", 2048); - // Drop the index is needed because the Url is already associated with IX_UrlMapping - var urlMappingEntityBuilder = new UrlMappingEntityBuilder(migrationBuilder, ActiveDatabase); - urlMappingEntityBuilder.DropForeignKey("FK_UrlMapping_Site"); - urlMappingEntityBuilder.DropIndex("IX_UrlMapping"); - urlMappingEntityBuilder.AlterStringColumn("Url", 2048); - urlMappingEntityBuilder.AlterStringColumn("MappedUrl", 2048); - urlMappingEntityBuilder.AddIndex("IX_UrlMapping", new[] { "SiteId", "Url" }, true); - urlMappingEntityBuilder.AddForeignKey("FK_UrlMapping_Site"); - } + var urlMappingEntityBuilder = new UrlMappingEntityBuilder(migrationBuilder, ActiveDatabase); + // Drop the index is needed because the Url is already associated with IX_UrlMapping + urlMappingEntityBuilder.DropIndex("IX_UrlMapping"); + urlMappingEntityBuilder.AlterStringColumn("Url", 2048); + urlMappingEntityBuilder.AlterStringColumn("MappedUrl", 2048); + urlMappingEntityBuilder.AddIndex("IX_UrlMapping", new[] { "SiteId", "Url" }, true); } protected override void Down(MigrationBuilder migrationBuilder) { - if (ActiveDatabase.Name != "Sqlite") - { - var visitorEntityBuilder = new VisitorEntityBuilder(migrationBuilder, ActiveDatabase); - visitorEntityBuilder.AlterStringColumn("Url", 500); + var visitorEntityBuilder = new VisitorEntityBuilder(migrationBuilder, ActiveDatabase); + visitorEntityBuilder.AlterStringColumn("Url", 500); - var urlMappingEntityBuilder = new UrlMappingEntityBuilder(migrationBuilder, ActiveDatabase); - urlMappingEntityBuilder.DropForeignKey("FK_UrlMapping_Site"); - urlMappingEntityBuilder.DropIndex("IX_UrlMapping"); - urlMappingEntityBuilder.AlterStringColumn("Url", 500); - urlMappingEntityBuilder.AlterStringColumn("MappedUrl", 500); - urlMappingEntityBuilder.AddIndex("IX_UrlMapping", new[] { "SiteId", "Url" }, true); - urlMappingEntityBuilder.AddForeignKey("FK_UrlMapping_Site"); - } + var urlMappingEntityBuilder = new UrlMappingEntityBuilder(migrationBuilder, ActiveDatabase); + // Drop the index is needed because the Url is already associated with IX_UrlMapping + urlMappingEntityBuilder.DropIndex("IX_UrlMapping"); + urlMappingEntityBuilder.AlterStringColumn("Url", 500); + urlMappingEntityBuilder.AlterStringColumn("MappedUrl", 500); + urlMappingEntityBuilder.AddIndex("IX_UrlMapping", new[] { "SiteId", "Url" }, true); } } } diff --git a/Oqtane.Server/wwwroot/Packages/Oqtane.Database.MySQL.nupkg.bak b/Oqtane.Server/wwwroot/Packages/Oqtane.Database.MySQL.nupkg.bak index a4866e07..5cd83996 100644 Binary files a/Oqtane.Server/wwwroot/Packages/Oqtane.Database.MySQL.nupkg.bak and b/Oqtane.Server/wwwroot/Packages/Oqtane.Database.MySQL.nupkg.bak differ diff --git a/Oqtane.Server/wwwroot/Packages/Oqtane.Database.PostgreSQL.nupkg.bak b/Oqtane.Server/wwwroot/Packages/Oqtane.Database.PostgreSQL.nupkg.bak index e5ebbf28..5a6873f9 100644 Binary files a/Oqtane.Server/wwwroot/Packages/Oqtane.Database.PostgreSQL.nupkg.bak and b/Oqtane.Server/wwwroot/Packages/Oqtane.Database.PostgreSQL.nupkg.bak differ diff --git a/Oqtane.Server/wwwroot/Packages/Oqtane.Database.SqlServer.nupkg.bak b/Oqtane.Server/wwwroot/Packages/Oqtane.Database.SqlServer.nupkg.bak index 6f38671f..bfa86bdf 100644 Binary files a/Oqtane.Server/wwwroot/Packages/Oqtane.Database.SqlServer.nupkg.bak and b/Oqtane.Server/wwwroot/Packages/Oqtane.Database.SqlServer.nupkg.bak differ diff --git a/Oqtane.Server/wwwroot/Packages/Oqtane.Database.Sqlite.nupkg.bak b/Oqtane.Server/wwwroot/Packages/Oqtane.Database.Sqlite.nupkg.bak index acf13f1c..5a9e5fbc 100644 Binary files a/Oqtane.Server/wwwroot/Packages/Oqtane.Database.Sqlite.nupkg.bak and b/Oqtane.Server/wwwroot/Packages/Oqtane.Database.Sqlite.nupkg.bak differ