feat(bp): season + reward importers, idempotent + authoritative-per-season

This commit is contained in:
gamer147
2026-05-26 22:28:41 -04:00
parent d661b6f44c
commit 61a9133855
7 changed files with 358 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace SVSim.Bootstrap.Models.Seed;
/// <summary>Mirrors a single entry in <c>seeds/battle-pass-rewards.json</c>.</summary>
public sealed class BattlePassRewardSeed
{
[JsonPropertyName("season_id")] public int SeasonId { get; set; }
[JsonPropertyName("track")] public string Track { get; set; } = ""; // "normal" / "premium"
[JsonPropertyName("level")] public int Level { get; set; }
[JsonPropertyName("reward_type")] public int RewardType { get; set; }
[JsonPropertyName("reward_detail_id")] public long RewardDetailId { get; set; }
[JsonPropertyName("reward_number")] public int RewardNumber { get; set; }
[JsonPropertyName("is_appeal_exclusion")] public bool IsAppealExclusion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
namespace SVSim.Bootstrap.Models.Seed;
/// <summary>Mirrors a single entry in <c>seeds/battle-pass-seasons.json</c>.</summary>
public sealed class BattlePassSeasonSeed
{
[JsonPropertyName("id")] public int Id { get; set; }
[JsonPropertyName("name")] public string Name { get; set; } = "";
[JsonPropertyName("max_level")] public int MaxLevel { get; set; }
[JsonPropertyName("start_date")] public string StartDate { get; set; } = "";
[JsonPropertyName("end_date")] public string EndDate { get; set; } = "";
[JsonPropertyName("can_purchase")] public bool CanPurchase { get; set; }
[JsonPropertyName("price_crystal")] public int PriceCrystal { get; set; }
[JsonPropertyName("description")] public string Description { get; set; } = "";
}