Update_7_77.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.Database;
  4. namespace PRS.Shared.Database_Update_Scripts;
  5. public class Update_7_77 : DatabaseUpdateScript
  6. {
  7. public override VersionNumber Version => new VersionNumber(7, 77);
  8. public override bool Update()
  9. {
  10. var formtypes = CoreUtils.Entities
  11. .Where(x => x.IsSubclassOfRawGeneric(typeof(EntityForm<,,>)))
  12. .ToList();
  13. int iType = 0;
  14. foreach (var formtype in formtypes)
  15. {
  16. iType++;
  17. Logger.Send(LogType.Information, "", $"Updating {formtype.Name} Descriptions ({iType}/{formtypes.Count})");
  18. int iCount = 0;
  19. List<Entity> updates = new();
  20. var forms = DbFactory.NewProvider(Logger.Main).Query(
  21. formtype,
  22. Filter.Create<ICoreDigitalFormInstance>(formtype,x=>x.Description).IsEqualTo(""),
  23. Columns.Create<ICoreDigitalFormInstance>(formtype, ColumnTypeFlags.None)
  24. .Add<ICoreDigitalFormInstance>(x=>x.ID)
  25. .Add<ICoreDigitalFormInstance>(x=>x.Description)
  26. .Add<ICoreDigitalFormInstance>(x=>x.Form.Description)
  27. ).ToObjects(formtype).ToList();
  28. foreach (var form in forms)
  29. {
  30. if (form is ICoreDigitalFormInstance instance and Entity entity)
  31. {
  32. instance.Description = instance.Form.Description;
  33. updates.Add(entity);
  34. }
  35. if (updates.Count >= 100)
  36. {
  37. iCount += 100;
  38. Logger.Send(LogType.Information, "", $"- Updating {formtype.Name}s ({iCount}/{forms.Count})");
  39. DbFactory.NewProvider(Logger.Main).Save(formtype,updates);
  40. updates.Clear();
  41. }
  42. }
  43. if (updates.Any())
  44. {
  45. iCount += updates.Count;
  46. Logger.Send(LogType.Information, "", $"- Updating {formtype.Name}s ({iCount}/{forms.Count})");
  47. DbFactory.NewProvider(Logger.Main).Save(formtype,updates);
  48. updates.Clear();
  49. }
  50. }
  51. return true;
  52. }
  53. }