Kenric Nugteren пре 1 година
родитељ
комит
cd924cbc1f

+ 2 - 0
prs.shared/Database Update Scripts/DatabaseUpdateScripts.cs

@@ -13,6 +13,7 @@ using System.Diagnostics.CodeAnalysis;
 using System.Reflection;
 using System.Text.RegularExpressions;
 using FastReport.Utils;
+using PRS.Shared.Database_Update_Scripts;
 
 namespace PRS.Shared;
 
@@ -40,5 +41,6 @@ public static class DatabaseUpdateScripts
         DataUpdater.RegisterUpdateScript<Update_7_48_ProductInstances>();
         DataUpdater.RegisterUpdateScript<Update_7_48_RequisitionActualQuantity>();
         DataUpdater.RegisterUpdateScript<Update_7_52>();
+        DataUpdater.RegisterUpdateScript<Update_7_54>();
     }
 }

+ 41 - 0
prs.shared/Database Update Scripts/Update_7_54.cs

@@ -0,0 +1,41 @@
+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;
+
+/// <summary>
+/// Update all the documents to use external storage.
+/// </summary>
+internal class Update_7_54 : DatabaseUpdateScript
+{
+    public override VersionNumber Version => new(7, 54);
+
+    public override bool Update()
+    {
+        var store = DbFactory.FindStore<Document>(Guid.Empty, "", Platform.Server, CoreUtils.GetVersion());
+        int i = 0;
+        int numStep = 100;
+        while (true)
+        {
+            var documents = DbFactory.Provider.Query<Document>(
+                new Filter<Document>(x => x.Data).IsNotEqualTo(null)
+                    .And(x => x.Data).IsNotEqualTo(Array.Empty<byte>()),
+                new Columns<Document>(x => x.ID).Add(x => x.Data),
+                top: numStep).ToObjects<Document>();
+            store.Save(documents, "");
+
+            i += numStep;
+
+            if (i / numStep % 10 == 0)
+            {
+                Logger.Send(LogType.Information, "", $"Converted {i} documents");
+            }
+        }
+        return true;
+    }
+}

+ 1 - 1
prs.stores/EntityDocuments/EntityDocumentStore.cs

@@ -33,7 +33,7 @@ namespace PRSStores
             if (entity.Thumbnail?.Any() == true)
                 return;
             
-            CoreTable table = Provider.Query<Document>(new Filter<Document>(x => x.ID).IsEqualTo(entity.DocumentLink.ID),
+            CoreTable table = FindSubStore<Document>().Query(new Filter<Document>(x => x.ID).IsEqualTo(entity.DocumentLink.ID),
                 new Columns<Document>(x => x.Data, x => x.FileName));
 
             if (table.Rows.Count == 0)