using System.Text.Json; using Microsoft.EntityFrameworkCore; using SVSim.Bootstrap.Models.Seed; using SVSim.Database; using SVSim.Database.Models; using static SVSim.Bootstrap.Importers.ImporterBase; namespace SVSim.Bootstrap.Importers; /// /// Singleton upsert (Id=1) of the pre-release window from seeds/pre-release-info.json. /// Card-id list / dict blobs are preserved verbatim into their jsonb columns; date strings go /// through . /// public class PreReleaseInfoImporter { public async Task ImportAsync(SVSimDbContext context, string seedDir) { var s = SeedLoader.LoadObject(Path.Combine(seedDir, "pre-release-info.json")); if (s is null) return 0; var existing = await context.PreReleaseInfos.FirstOrDefaultAsync(e => e.Id == 1); var entry = existing ?? new PreReleaseInfo { Id = 1 }; entry.PreReleaseId = s.PreReleaseId; entry.NextCardSetId = s.NextCardSetId; entry.StartTime = ParseWireDateTime(s.StartTime); entry.EndTime = ParseWireDateTime(s.EndTime); entry.DisplayEndTime = ParseWireDateTime(s.DisplayEndTime); entry.FreeMatchStartTime = ParseWireDateTime(s.FreeMatchStartTime); entry.CardMasterId = s.CardMasterId; entry.DefaultCardMasterId = s.DefaultCardMasterId; entry.PreReleaseCardMasterId = s.PreReleaseCardMasterId; entry.IsPreRotationFreeMatchTerm = s.IsPreRotationFreeMatchTerm; entry.RotationCardSetIdList = s.RotationCardSetIdList.ValueKind == JsonValueKind.Undefined ? "[]" : JsonSerializer.Serialize(s.RotationCardSetIdList); entry.ReprintedBaseCardIds = s.ReprintedBaseCardIds.ValueKind == JsonValueKind.Undefined ? "{}" : JsonSerializer.Serialize(s.ReprintedBaseCardIds); entry.LatestReprintedBaseCardIds = s.LatestReprintedBaseCardIds.ValueKind == JsonValueKind.Undefined ? "{}" : JsonSerializer.Serialize(s.LatestReprintedBaseCardIds); if (existing is null) context.PreReleaseInfos.Add(entry); await context.SaveChangesAsync(); Console.WriteLine($"[PreReleaseInfoImporter] {(existing is null ? "+1" : "~1")}"); return 1; } }