using Comal.Classes; using InABox.Configuration; using InABox.Core; using InABox.Database; using NPOI.SS.Formula.Functions; using Columns = InABox.Core.Columns; namespace PRS.Shared.Database_Update_Scripts; internal class Update_8_22 : DatabaseUpdateScript { public override VersionNumber Version => new(8, 22); public override bool Update() { var _provider = DbFactory.NewProvider(Logger.Main); MigrateIssues(_provider); MigrateIssues(_provider); MigrateIssues(_provider); MigrateIssues(_provider); MigrateIssues(_provider); MigrateIssues(_provider); MigrateIssues(_provider); MigrateIssues(_provider); return true; } private void MigrateIssues(IProvider provider) where T : Entity, IPersistent, IIssues, IProblems, new() { var items = provider.Query( new Filter(x => x.Issues).IsNotEqualTo(""), Columns.None().Add(x=>x.ID).Add(x=>x.Issues) ).Rows.ToObjects().ToQueue(); while (items.Any()) { Logger.Send(LogType.Information,"",$"Migrating {typeof(T).Name.Split('.').Last()} Issues ({items.Count} remaining).."); var updates = items.Dequeue(100).ToArray(); foreach (var update in updates) { update.Problem.Notes = new string[] { update.Issues }; update.Issues = ""; } provider.Save(updates); } Logger.Send(LogType.Information,"",$"Migrating {typeof(T).Name.Split('.').Last()} Issues done."); } }