Update_7_31.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.Database;
  4. namespace PRS.Shared
  5. {
  6. public class Update_7_31 : DatabaseUpdateScript
  7. {
  8. public override VersionNumber Version => new VersionNumber(7, 31);
  9. private static void Migrate<T>()
  10. where T : Entity, IPersistent, IPostable, new()
  11. {
  12. List<T> items;
  13. do
  14. {
  15. items = DbFactory.NewProvider(Logger.Main).Query<T>(
  16. new Filter<T>(x => x.PostedStatus).IsEqualTo(null),
  17. Columns.None<T>().Add(x => x.ID).Add(x => x.PostedStatus),
  18. null,
  19. CoreRange.Database(1000)
  20. ).ToObjects<T>().ToList();
  21. foreach (var item in items)
  22. {
  23. item.PostedStatus = PostedStatus.NeverPosted;
  24. item.OriginalValues.TryAdd("PostedStatus", null);
  25. }
  26. DbFactory.NewProvider(Logger.Main).Save(items);
  27. Logger.Send(LogType.Information, "", $"{items.Count} {typeof(T).Name}s processed");
  28. } while (items.Count > 0);
  29. }
  30. public override bool Update()
  31. {
  32. Migrate<Bill>();
  33. Migrate<Invoice>();
  34. Migrate<PurchaseOrder>();
  35. Migrate<TimeSheet>();
  36. return true;
  37. }
  38. }
  39. }