using System.Text; using DataModel; using Microsoft.Data.Sqlite; namespace Processor; public static class ExtensionsError { public static ProcessorResult ToProcessorResult(this Exception exception) where TResult : class { if(exception.InnerException is SqliteException sqliteException) if (sqliteException.SqliteErrorCode is 14) { var blockingProcesses = SystemUtil.WhoIsLocking(Setup.DataFile); var sb = new StringBuilder(); sb.AppendLine($"The data file is used by the {blockingProcesses.Count} other process(es) listed below:"); foreach (var blockingProcess in blockingProcesses) sb.AppendLine($"- {blockingProcess.ProcessName} (id={blockingProcess.Id})"); return new ProcessorResult(null, false, sb.ToString()); } else return new ProcessorResult(null, false, $"A database error occurred: '{sqliteException.Message}'"); return new ProcessorResult(null, false, $"A database error occurred: '{exception.Message}'"); } }