1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using Comal.Classes;
- using InABox.Core;
- using InABox.Database;
- namespace PRS.Shared.Database_Update_Scripts;
- internal class Update_8_25 : DatabaseUpdateScript
- {
-
- private static readonly int CHUNK_SIZE = 500;
- private static readonly bool DESTRUCTIVE = false;
-
- public override VersionNumber Version => new(8, 25);
-
- public override bool Update()
- {
- var _provider = DbFactory.NewProvider(Logger.Main);
- CheckProblemNotes<Bill>(_provider);
- CheckProblemNotes<Activity>(_provider);
- CheckProblemNotes<ProductStyle>(_provider);
- CheckProblemNotes<Product>(_provider);
- CheckProblemNotes<CostSheet>(_provider);
- CheckProblemNotes<Kit>(_provider);
- CheckProblemNotes<JobBillOfMaterialsItem>(_provider);
- CheckProblemNotes<JobRequisitionItem>(_provider);
- CheckProblemNotes<ManufacturingPacket>(_provider);
- return true;
- }
-
- private void CheckProblemNotes<T>(IProvider provider) where T : Entity, IProblems<ManagedProblem>, new()
- {
- Queue<T> _updates = new Queue<T>();
- Logger.Send(LogType.Information, "", $"Checking {typeof(T).EntityName().Split('.').Last()} Problem Notes");
- var _problems = provider.Query<T>(
- new Filter<T>(x=>x.Problem.Notes).IsNotEqualTo(Array.Empty<string>()),
- Columns.None<T>()
- .Add(x=>x.ID)
- .Add(x=>x.Problem.Notes)
- ).ToObjects<T>();
- foreach (var _problem in _problems)
- {
- if (_problem.Problem.Notes is string[] _notes && _notes.Length <= 1 && string.IsNullOrWhiteSpace(_notes.FirstOrDefault()))
- {
- _problem.Problem.Notes = null;
- _updates.Enqueue(_problem);
- }
- }
-
- while (_updates.Any())
- {
- var _chunk = _updates.Dequeue(100).ToArray();
- Logger.Send(LogType.Information, "", $"- Updating {_chunk.Length} {typeof(T).EntityName().Split('.').Last()} Problems ({_updates.Count} remaining)");
- provider.Save(_chunk);
- }
-
- }
-
- }
|