using System.Text.Json.Serialization;

namespace NeonSprawl.Server.Game.Gigs;

/// <summary>JSON body for <c>GET /game/players/{{id}}/gig-progression</c> (NEO-44).</summary>
public sealed class GigProgressionSnapshotResponse
{
    public const int CurrentSchemaVersion = 1;

    [JsonPropertyName("schemaVersion")]
    public int SchemaVersion { get; init; } = CurrentSchemaVersion;

    [JsonPropertyName("playerId")]
    public required string PlayerId { get; init; }

    /// <summary>Prototype main gig until loadout/hub swap lands.</summary>
    [JsonPropertyName("mainGigId")]
    public required string MainGigId { get; init; }

    [JsonPropertyName("gigs")]
    public required IReadOnlyList<GigProgressionRowJson> Gigs { get; init; }
}

/// <summary>XP and level for one gig row in the prototype snapshot.</summary>
public sealed class GigProgressionRowJson
{
    [JsonPropertyName("id")]
    public required string Id { get; init; }

    [JsonPropertyName("xp")]
    public int Xp { get; init; }

    [JsonPropertyName("level")]
    public int Level { get; init; }
}
