ソースを参照

Added update script to initialise all CoreFilterDefinition sequences

Kenric Nugteren 1 年間 前
コミット
3da7158e87

+ 1 - 1
prs.classes/Entities/Job/Job.cs

@@ -136,7 +136,7 @@ namespace Comal.Classes
         public static String JobNumberPrefix { get; set; }
 
         public Expression<Func<Job, string>> AutoIncrementField() => x => x.JobNumber;
-        public Filter<Job> AutoIncrementFilter() => null;
+        public Filter<Job>? AutoIncrementFilter() => null;
         public String AutoIncrementPrefix() => JobNumberPrefix;
         public string AutoIncrementFormat() => "{0:D4}";
         

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

@@ -36,6 +36,7 @@ namespace PRS.Shared
             DataUpdater.RegisterUpdateScript<Update_7_34>();
             DataUpdater.RegisterUpdateScript<Update_7_37>();
             DataUpdater.RegisterUpdateScript<Update_7_40>();
+            DataUpdater.RegisterUpdateScript<Update_7_43>();
         }
     }
 }

+ 39 - 0
prs.shared/Database Update Scripts/Update_7_43.cs

@@ -0,0 +1,39 @@
+using InABox.Configuration;
+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
+{
+    public class Update_7_43 : DatabaseUpdateScript
+    {
+        public override VersionNumber Version => new VersionNumber(7, 43);
+
+        public override bool Update()
+        {
+            var filters = DbFactory.Provider.Query(
+                new InABox.Core.Filter<GlobalSettings>(x => x.Section).IsEqualTo("CoreFilterDefinitions"),
+                new InABox.Core.Columns<GlobalSettings>(x => x.ID, x => x.Contents)).ToObjects<GlobalSettings>().ToList();
+            foreach(var filter in filters)
+            {
+                var defs = Serialization.Deserialize<CoreFilterDefinitions>(filter.Contents) ?? new CoreFilterDefinitions();
+                var nextSequence = 0L;
+                foreach(var def in defs)
+                {
+                    if(def.Sequence < nextSequence)
+                    {
+                        def.Sequence = nextSequence;
+                    }
+                    nextSequence = def.Sequence + 1;
+                }
+                filter.Contents = Serialization.Serialize(defs);
+            }
+            DbFactory.Provider.Save(filters);
+            return true;
+        }
+    }
+}