From d4ed6c33926de70054408dc553a7db248ce6ff7b Mon Sep 17 00:00:00 2001 From: Archangel Date: Tue, 26 Aug 2025 20:11:03 +0200 Subject: [PATCH] Update profile migration code --- .../4.0/RemoveVitaltyFromProfile.cs | 40 +++++++++++++++++++ .../Services/ProfileValidatorService.cs | 9 ++++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 Libraries/SPTarkov.Server.Core/Migration/Migrations/4.0/RemoveVitaltyFromProfile.cs diff --git a/Libraries/SPTarkov.Server.Core/Migration/Migrations/4.0/RemoveVitaltyFromProfile.cs b/Libraries/SPTarkov.Server.Core/Migration/Migrations/4.0/RemoveVitaltyFromProfile.cs new file mode 100644 index 00000000..fcdbd94f --- /dev/null +++ b/Libraries/SPTarkov.Server.Core/Migration/Migrations/4.0/RemoveVitaltyFromProfile.cs @@ -0,0 +1,40 @@ +using System.Text.Json.Nodes; +using SPTarkov.DI.Annotations; + +namespace SPTarkov.Server.Core.Migration.Migrations; + +[Injectable] +public class RemoveVitaltyFromProfile : AbstractProfileMigration +{ + public override string FromVersion + { + get { return "~4.0"; } + } + + public override string ToVersion + { + get { return "~4.0"; } + } + + public override string MigrationName + { + get { return "RemoveVitaltyFromProfile400"; } + } + + public override IEnumerable PrerequisiteMigrations + { + get { return [typeof(ThreeElevenToFourZero)]; } + } + + public override bool CanMigrate(JsonObject profile, IEnumerable previouslyRanMigrations) + { + return profile["vitality"] is not null; + } + + public override JsonObject? Migrate(JsonObject profile) + { + profile.Remove("vitality"); + + return base.Migrate(profile); + } +} diff --git a/Libraries/SPTarkov.Server.Core/Services/ProfileValidatorService.cs b/Libraries/SPTarkov.Server.Core/Services/ProfileValidatorService.cs index e9b3fb73..a09bc263 100644 --- a/Libraries/SPTarkov.Server.Core/Services/ProfileValidatorService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/ProfileValidatorService.cs @@ -115,7 +115,14 @@ public class ProfileValidatorService( sptReadyProfile.SptData.Migrations = []; } - sptReadyProfile.SptData.Migrations.Add(ranMigration.MigrationName, timeUtil.GetTimeStamp()); + if (!sptReadyProfile.SptData.Migrations.ContainsKey(ranMigration.MigrationName)) + { + sptReadyProfile.SptData.Migrations.Add(ranMigration.MigrationName, timeUtil.GetTimeStamp()); + } + else + { + sptReadyProfile.SptData.Migrations[ranMigration.MigrationName] = timeUtil.GetTimeStamp(); + } } }