using InABox.Core; using InABox.Database; namespace PRS.Shared; /// /// Updating Wpf and Timebench fields to use Platform.DesktopVersion and Platform.MobileVersion /// public class Update_7_14 : DatabaseUpdateScript { public override VersionNumber Version => new (7, 14); public override bool Update() { Logger.Send(LogType.Information, "", "Converting User.Wpf, User.Timebench -> User.Platform.DesktopVersion, User.Platform.MobileVersion"); Logger.Send(LogType.Information, "", "Loading Wpf, Timebench properties"); var props = DbFactory.NewProvider(Logger.Main).Query(new Filter(x => x.Name).InList("Wpf", "TimeBench")) .Rows.Select(x => x.ToObject()).ToArray(); DatabaseSchema.Load(props); var columns = Columns.None().Add(x => x.ID); columns.Add("Wpf", "TimeBench"); var users = DbFactory.NewProvider(Logger.Main).Query( new Filter().All(), columns).ToObjects().ToList(); foreach(var user in users) { if(user.UserProperties.Dictionary.TryGetValue("Wpf", out var wpf)) { user.Platform.DesktopVersion = wpf?.Value?.ToString() ?? ""; } if (user.UserProperties.Dictionary.TryGetValue("TimeBench", out var timebench)) { user.Platform.MobileVersion = timebench?.Value?.ToString() ?? ""; } } DbFactory.NewProvider(Logger.Main).Save(users); Logger.Send(LogType.Information, "", "Finished updating user versions"); return true; } }