using Comal.Classes; using InABox.Core; using InABox.Database; namespace PRS.Shared { public class Update_7_31 : DatabaseUpdateScript { public override VersionNumber Version => new VersionNumber(7, 31); private static void Migrate() where T : Entity, IPersistent, IPostable, new() { List items; do { items = DbFactory.NewProvider(Logger.Main).Query( new Filter(x => x.PostedStatus).IsEqualTo(null), Columns.None().Add(x => x.ID).Add(x => x.PostedStatus), null, CoreRange.Database(1000) ).ToObjects().ToList(); foreach (var item in items) { item.PostedStatus = PostedStatus.NeverPosted; item.OriginalValueList.TryAdd("PostedStatus", null); } DbFactory.NewProvider(Logger.Main).Save(items); Logger.Send(LogType.Information, "", $"{items.Count} {typeof(T).Name}s processed"); } while (items.Count > 0); } public override bool Update() { Migrate(); Migrate(); Migrate(); Migrate(); return true; } } }