Update_7_14.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using InABox.Core;
  2. using InABox.Database;
  3. namespace PRS.Shared;
  4. /// <summary>
  5. /// Updating Wpf and Timebench fields to use Platform.DesktopVersion and Platform.MobileVersion
  6. /// </summary>
  7. public class Update_7_14 : DatabaseUpdateScript
  8. {
  9. public override VersionNumber Version => new (7, 14);
  10. public override bool Update()
  11. {
  12. Logger.Send(LogType.Information, "", "Converting User.Wpf, User.Timebench -> User.Platform.DesktopVersion, User.Platform.MobileVersion");
  13. Logger.Send(LogType.Information, "", "Loading Wpf, Timebench properties");
  14. var props = DbFactory.NewProvider(Logger.Main).Query<CustomProperty>(new Filter<CustomProperty>(x => x.Name).InList("Wpf", "TimeBench"))
  15. .Rows.Select(x => x.ToObject<CustomProperty>()).ToArray();
  16. DatabaseSchema.Load(props);
  17. var columns = Columns.None<User>().Add(x => x.ID);
  18. columns.Add("Wpf", "TimeBench");
  19. var users = DbFactory.NewProvider(Logger.Main).Query<User>(
  20. new Filter<User>().All(),
  21. columns).ToObjects<User>().ToList();
  22. foreach(var user in users)
  23. {
  24. if(user.UserProperties.Dictionary.TryGetValue("Wpf", out var wpf))
  25. {
  26. user.Platform.DesktopVersion = wpf?.Value?.ToString() ?? "";
  27. }
  28. if (user.UserProperties.Dictionary.TryGetValue("TimeBench", out var timebench))
  29. {
  30. user.Platform.MobileVersion = timebench?.Value?.ToString() ?? "";
  31. }
  32. }
  33. DbFactory.NewProvider(Logger.Main).Save<User>(users);
  34. Logger.Send(LogType.Information, "", "Finished updating user versions");
  35. return true;
  36. }
  37. }