using InABox.Core; using InABox.Database; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PRS.Shared.Database_Update_Scripts; /// /// Update all the documents to use external storage. /// internal class Update_7_55 : DatabaseUpdateScript { public override VersionNumber Version => new(7, 55); public override bool Update() { var store = DbFactory.FindStore(Guid.Empty, "", Platform.Server, CoreUtils.GetVersion()); int i = 0; int numStep = 100; while (true) { var documents = DbFactory.Provider.Query( new Filter(x => x.Data).IsNotEqualTo(null) .And(x => x.Data).IsNotEqualTo(Array.Empty()), new Columns(x => x.ID).Add(x => x.Data), top: numStep).ToList(); if(documents.Count == 0) { return true; } store.Save(documents, ""); i += numStep; if (i / numStep % 10 == 0) { Logger.Send(LogType.Information, "", $"Converted {i} documents"); } } } }