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");
}
}
}
}