From 475894b680757f4eb9c8bcb180b976cba4308cf6 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Wed, 8 Feb 2023 08:05:25 -0500 Subject: [PATCH] fix #2584 - added IsDeleted columns back to Folder and File tables to preserve compatibility for SQLite --- .../Infrastructure/DatabaseManager.cs | 20 +++++------ .../03030201_AddFolderFileIsDeletedColumns.cs | 35 +++++++++++++++++++ Oqtane.Server/Repository/FileRepository.cs | 1 + Oqtane.Server/Repository/FolderRepository.cs | 1 + Oqtane.Shared/Models/File.cs | 5 +++ Oqtane.Shared/Models/Folder.cs | 5 +++ 6 files changed, 57 insertions(+), 10 deletions(-) create mode 100644 Oqtane.Server/Migrations/Tenant/03030201_AddFolderFileIsDeletedColumns.cs diff --git a/Oqtane.Server/Infrastructure/DatabaseManager.cs b/Oqtane.Server/Infrastructure/DatabaseManager.cs index 0889a84c..82bfffd4 100644 --- a/Oqtane.Server/Infrastructure/DatabaseManager.cs +++ b/Oqtane.Server/Infrastructure/DatabaseManager.cs @@ -62,7 +62,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - result.Message = "Master Database Not Installed Correctly. " + ex.Message; + result.Message = "Master Database Not Installed Correctly. " + ex.ToString(); } } else // cannot connect @@ -74,7 +74,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - result.Message = "Cannot Connect To Master Database. " + ex.Message; + result.Message = "Cannot Connect To Master Database. " + ex.ToString(); } } } @@ -247,7 +247,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - result.Message = ex.Message; + result.Message = ex.ToString(); _filelogger.LogError(Utilities.LogMessage(this, result.Message)); } @@ -286,7 +286,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - result.Message = "An Error Occurred Creating The Database. This Is Usually Related To Your User Not Having Sufficient Rights To Perform This Operation. Please Note That You Can Also Create The Database Manually Prior To Initiating The Install Wizard. " + ex.Message; + result.Message = "An Error Occurred Creating The Database. This Is Usually Related To Your User Not Having Sufficient Rights To Perform This Operation. Please Note That You Can Also Create The Database Manually Prior To Initiating The Install Wizard. " + ex.ToString(); _filelogger.LogError(Utilities.LogMessage(this, result.Message)); } } @@ -327,7 +327,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - result.Message = "An Error Occurred Provisioning The Master Database. This Is Usually Related To The Master Database Not Being In A Supported State. " + ex.Message; + result.Message = "An Error Occurred Provisioning The Master Database. This Is Usually Related To The Master Database Not Being In A Supported State. " + ex.ToString(); _filelogger.LogError(Utilities.LogMessage(this, result.Message)); } } @@ -435,7 +435,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - result.Message = "An Error Occurred Migrating A Tenant Database. This Is Usually Related To A Tenant Database Not Being In A Supported State. " + ex.Message; + result.Message = "An Error Occurred Migrating A Tenant Database. This Is Usually Related To A Tenant Database Not Being In A Supported State. " + ex.ToString(); _filelogger.LogError(Utilities.LogMessage(this, result.Message)); } @@ -456,7 +456,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - result.Message = "An Error Occurred Executing Upgrade Logic. " + ex.Message; + result.Message = "An Error Occurred Executing Upgrade Logic. " + ex.ToString(); _filelogger.LogError(Utilities.LogMessage(this, result.Message)); } } @@ -526,7 +526,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - result.Message = "An Error Occurred Installing " + moduleDefinition.Name + " Version " + versions[i] + " - " + ex.Message; + result.Message = "An Error Occurred Installing " + moduleDefinition.Name + " Version " + versions[i] + " - " + ex.ToString(); } } } @@ -664,7 +664,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - result.Message = "An Error Occurred Creating Site. " + ex.Message; + result.Message = "An Error Occurred Creating Site. " + ex.ToString(); } } @@ -737,7 +737,7 @@ namespace Oqtane.Infrastructure } catch (Exception ex) { - logger.Log(alias.SiteId, Shared.LogLevel.Error, "Site Migration", LogFunction.Other, "An Error Occurred Executing Site Migration {Type} For {Alias} And Version {Version} {Error}", upgrade.Value, alias.Name, version, ex.Message); + logger.Log(alias.SiteId, Shared.LogLevel.Error, "Site Migration", LogFunction.Other, ex, "An Error Occurred Executing Site Migration {Type} For {Alias} And Version {Version}", upgrade.Value, alias.Name, version); } } } diff --git a/Oqtane.Server/Migrations/Tenant/03030201_AddFolderFileIsDeletedColumns.cs b/Oqtane.Server/Migrations/Tenant/03030201_AddFolderFileIsDeletedColumns.cs new file mode 100644 index 00000000..d012a5b7 --- /dev/null +++ b/Oqtane.Server/Migrations/Tenant/03030201_AddFolderFileIsDeletedColumns.cs @@ -0,0 +1,35 @@ +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.03.03.02.01")] + public class AddFolderFileIsDeletedColumns : MultiDatabaseMigration + { + public AddFolderFileIsDeletedColumns(IDatabase database) : base(database) + { + } + + protected override void Up(MigrationBuilder migrationBuilder) + { + // IsDeleted columns were removed in 3.2.2 however SQLite does not support column removal so they had to be restored + if (ActiveDatabase.Name != "Sqlite") + { + var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder, ActiveDatabase); + folderEntityBuilder.AddBooleanColumn("IsDeleted"); + + var fileEntityBuilder = new FileEntityBuilder(migrationBuilder, ActiveDatabase); + fileEntityBuilder.AddBooleanColumn("IsDeleted"); + } + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + // not implemented + } + } +} diff --git a/Oqtane.Server/Repository/FileRepository.cs b/Oqtane.Server/Repository/FileRepository.cs index bd76e18f..da233e29 100644 --- a/Oqtane.Server/Repository/FileRepository.cs +++ b/Oqtane.Server/Repository/FileRepository.cs @@ -41,6 +41,7 @@ namespace Oqtane.Repository public File AddFile(File file) { + file.IsDeleted = false; _db.File.Add(file); _db.SaveChanges(); file.Folder = _folderRepository.GetFolder(file.FolderId); diff --git a/Oqtane.Server/Repository/FolderRepository.cs b/Oqtane.Server/Repository/FolderRepository.cs index d82ac0e4..111f7c79 100644 --- a/Oqtane.Server/Repository/FolderRepository.cs +++ b/Oqtane.Server/Repository/FolderRepository.cs @@ -37,6 +37,7 @@ namespace Oqtane.Repository public Folder AddFolder(Folder folder) { + folder.IsDeleted = false; _db.Folder.Add(folder); _db.SaveChanges(); _permissions.UpdatePermissions(folder.SiteId, EntityNames.Folder, folder.FolderId, folder.Permissions); diff --git a/Oqtane.Shared/Models/File.cs b/Oqtane.Shared/Models/File.cs index 2e240403..9fdae1a0 100644 --- a/Oqtane.Shared/Models/File.cs +++ b/Oqtane.Shared/Models/File.cs @@ -55,6 +55,11 @@ namespace Oqtane.Models /// public string Description { get; set; } + /// + /// Deprecated - not used + /// + public bool IsDeleted { get; set; } + /// /// Object reference to the object. /// Use this if you need to determine what the file belongs to. diff --git a/Oqtane.Shared/Models/Folder.cs b/Oqtane.Shared/Models/Folder.cs index c7627714..f6530c23 100644 --- a/Oqtane.Shared/Models/Folder.cs +++ b/Oqtane.Shared/Models/Folder.cs @@ -59,6 +59,11 @@ namespace Oqtane.Models /// public bool IsSystem { get; set; } + /// + /// Deprecated - not used + /// + public bool IsDeleted { get; set; } + /// /// TODO: todoc what would this contain? ///