Browse Source

Tweaked 8.58.0 update scripts

frogsoftware 2 days ago
parent
commit
9dfa3ba987

+ 67 - 40
prs.shared/Database Update Scripts/Update_8_57.cs

@@ -8,6 +8,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using InABox.Database.SQLite;
 
 namespace PRS.Shared.Database_Update_Scripts;
 
@@ -19,17 +20,27 @@ internal class Update_8_57 : DatabaseUpdateScript
     {
         Logger.Send(LogType.Information, "", "Approving all old setouts");
 
+        if (provider is SQLiteProvider p)
+        {
+            var sql = $"update setout set [status]='Approved'";
+            p.Update(sql);
+            return;
+        }
+        
+        var ids = provider.Query(
+            Filter<StagingSetout>.Where(x => x.Setout.ID).IsNotEqualTo(Guid.Empty).And(
+                Filter<StagingSetout>.Where(x => x.Task.ID).IsNotEqualTo(Guid.Empty)
+                    .Or(x => x.UnapprovedDocuments).IsGreaterThan(0)
+            ),
+            Columns.None<StagingSetout>().Add(x => x.ID)).ExtractValues<StagingSetout, Guid>(x => x.Setout.ID);
+        
         var setouts = provider.Query(
             Filter<Setout>.Where(x => x.Status).IsEqualTo(SetoutStatus.Unapproved)
-                .And(x => x.ID).NotInQuery(
-                    Filter<StagingSetout>.Where(x => x.Task.ID).IsNotEqualTo(Guid.Empty)
-                        .Or(x => x.UnapprovedDocuments).IsGreaterThan(0),
-                    x => x.Setout.ID),
+                .And(x => x.ID).NotInList(ids),
             Columns.None<Setout>()
                 .Add(x => x.ID)
                 .Add(x => x.Status))
             .ToArray<Setout>()
-            
             .ToQueue();
         var totalsetouts = setouts.Count;
         var processedsetouts = 0;
@@ -43,13 +54,25 @@ internal class Update_8_57 : DatabaseUpdateScript
             processedsetouts += updates.Length;
         };
 
+        
+    }
+
+    private static void ApproveAllManufacturingPackets(IProvider provider)
+    {
         Logger.Send(LogType.Information, "", "Approving all old manufacturing packets");
+        if (provider is SQLiteProvider p)
+        {
+            var sql = $"update manufacturingpacket set [approved]=[created] where [approved] is null";
+            p.Update(sql);
+            return;
+        }
+        
         var packets = provider.Query(
-            Filter<ManufacturingPacket>.Where(x => x.Approved).IsEqualTo(DateTime.MinValue),
-            Columns.None<ManufacturingPacket>()
-                .Add(x => x.ID)
-                .Add(x => x.Approved)
-                .Add(x => x.Created))
+                Filter<ManufacturingPacket>.Where(x => x.Approved).IsEqualTo(DateTime.MinValue),
+                Columns.None<ManufacturingPacket>()
+                    .Add(x => x.ID)
+                    .Add(x => x.Approved)
+                    .Add(x => x.Created))
             .ToArray<ManufacturingPacket>()
             .ToQueue();
         var totalpackets = packets.Count;
@@ -63,7 +86,6 @@ internal class Update_8_57 : DatabaseUpdateScript
             provider.Save(updates);
             processedpackets += updates.Length;
         }
-
     }
 
     public override bool Update()
@@ -71,31 +93,38 @@ internal class Update_8_57 : DatabaseUpdateScript
         var provider = DbFactory.NewProvider(Logger.Main);
 
         ApproveOldSetouts(provider);
+        ApproveAllManufacturingPackets(provider);
+        ConvertStagingSetouts(provider);
 
+        return true;
+    }
+
+    private void ConvertStagingSetouts(IProvider provider)
+    {
         var stagingSetoutsQueue = provider.Query(
-            Filter<StagingSetout>.Where(x => x.Setout.ID).IsEqualTo(Guid.Empty)
-                .Or(x => x.Task.ID).IsNotEqualTo(Guid.Empty)
-                .Or(x => x.UnapprovedDocuments).IsGreaterThan(0),
-            Columns.None<StagingSetout>()
-                .Add(x => x.ID)
-                .Add(x => x.Created)
-                .Add(x => x.CreatedBy)
-                .Add(x => x.Number)
-                .Add(x => x.JobLink.ID)
-                .Add(x => x.Group.ID)
-                .Add(x => x.OriginalPath)
-                .Add(x => x.OriginalCRC)
-                .Add(x => x.SavePath)
-                .Add(x => x.Archived)
-                .Add(x => x.LockedBy.ID)
-                .Add(x => x.Task.ID)
-                .Add(x => x.Task.EmployeeLink.ID)
-                .Add(x => x.Task.Title)
-                .Add(x => x.Task.Description)
-                .Add(x => x.Task.Notes)
-                .Add(x => x.Task.Completed)
-                .Add(x => x.JobScope.ID)
-                .Add(x => x.Setout.ID))
+                Filter<StagingSetout>.Where(x => x.Setout.ID).IsEqualTo(Guid.Empty)
+                    .Or(x => x.Task.ID).IsNotEqualTo(Guid.Empty)
+                    .Or(x => x.UnapprovedDocuments).IsGreaterThan(0),
+                Columns.None<StagingSetout>()
+                    .Add(x => x.ID)
+                    .Add(x => x.Created)
+                    .Add(x => x.CreatedBy)
+                    .Add(x => x.Number)
+                    .Add(x => x.JobLink.ID)
+                    .Add(x => x.Group.ID)
+                    .Add(x => x.OriginalPath)
+                    .Add(x => x.OriginalCRC)
+                    .Add(x => x.SavePath)
+                    .Add(x => x.Archived)
+                    .Add(x => x.LockedBy.ID)
+                    .Add(x => x.Task.ID)
+                    .Add(x => x.Task.EmployeeLink.ID)
+                    .Add(x => x.Task.Title)
+                    .Add(x => x.Task.Description)
+                    .Add(x => x.Task.Notes)
+                    .Add(x => x.Task.Completed)
+                    .Add(x => x.JobScope.ID)
+                    .Add(x => x.Setout.ID))
             .ToArray<StagingSetout>()
             .ToQueue();
 
@@ -114,8 +143,6 @@ internal class Update_8_57 : DatabaseUpdateScript
             
             processed += stagingSetouts.Length;
         }
-
-        return true;
     }
 
     void ProcessStagingSetouts(IProvider provider, StagingSetout[] stagingSetouts)
@@ -275,10 +302,10 @@ internal class Update_8_57 : DatabaseUpdateScript
             {
                 var newSetoutDocuments = setoutDocuments.GetValueOrAdd(setout);
 
-                if(documents.All(x => x.Approved))
-                {
-                    setout.Status = SetoutStatus.Approved;
-                }
+                //if(documents.All(x => x.Approved))
+                //{
+                //    setout.Status = SetoutStatus.Approved;
+                //}
 
                 foreach(var stagingSetoutDocument in documents)
                 {

+ 12 - 5
prs.shared/Database Update Scripts/Update_8_58.cs

@@ -21,7 +21,13 @@ internal class Update_8_58 : DatabaseUpdateScript
     private static void UpdateTimeSheets(IProvider provider)
     {
         Logger.Send(LogType.Information, "", $"Migrating TimeSheet.Processed -> TimeSheet.Posted");
-
+        
+        if (provider is SQLiteProvider p)
+        {
+            var sql = $"update timesheet set [posted]=[processed] where [processed] is not null and [posted] is null";
+            p.Update(sql);
+            return;
+        }
         var timeSheets = provider.Query(
             Filter<TimeSheet>.Where(x => x.Processed).IsNotEqualTo(DateTime.MinValue)
                 .And(x => x.Posted).IsEqualTo(DateTime.MinValue),
@@ -99,6 +105,7 @@ internal class Update_8_58 : DatabaseUpdateScript
             1000,
             percentage => Logger.Send(LogType.Information, "", $"Migrating {typeof(T).Name}.{fromColumn.Property}: {percentage:F2}%"));
     }
+    
     private static void ConvertLink<T, TFromLink, TToLink>(IProvider provider, Expression<Func<T, TFromLink>> fromLink, Expression<Func<T, TToLink>> toLink)
         where T : Entity, new()
         where TFromLink : IEntityLink
@@ -106,6 +113,7 @@ internal class Update_8_58 : DatabaseUpdateScript
     {
         ConvertLink<T>(provider, CoreUtils.GetFullPropertyName(fromLink, "."), CoreUtils.GetFullPropertyName(toLink, "."));
     }
+    
     private static void ConvertLink<T, TLink>(IProvider provider, Expression<Func<T, TLink>> fromLink, Expression<Func<T, TLink>> toLink)
         where T : Entity, new()
         where TLink : IEntityLink
@@ -689,15 +697,14 @@ internal class Update_8_58 : DatabaseUpdateScript
                 var changed = false;
                 foreach(var filter in filters)
                 {
-                    var deserialiseEntity = entity is not null ? typeof(Filter<>).MakeGenericType(entity) : typeof(IFilter);
+                    var deserialiseEntity = entity is not null ? typeof(Filter<>).MakeGenericType(entity) : null;
                     IFilter? deserialised = null;
                     try
                     {
-                        deserialised = (Serialization.Deserialize(deserialiseEntity, filter.Filter, strict: true) as IFilter)!;
+                        if (deserialiseEntity != null)
+                            deserialised = (Serialization.Deserialize(deserialiseEntity, filter.Filter, strict: true) as IFilter)!;
                         if(deserialised is null)
-                        {
                             continue;
-                        }
                     }
                     catch (Exception e)
                     {