using System.Reflection;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;

namespace SourceGit.Models
{
    public partial class Version
    {
        [JsonPropertyName("name")]
        public string Name { get; set; }

        [JsonPropertyName("tag_name")]
        public string TagName { get; set; }

        [JsonPropertyName("body")]
        public string Body { get; set; }

        [GeneratedRegex(@"^v(\d+)\.(\d+)$")]
        private static partial Regex REG_VERSION_TAG();

        public bool IsNewVersion
        {
            get
            {
                var match = REG_VERSION_TAG().Match(TagName);
                if (!match.Success)
                    return false;

                var major = int.Parse(match.Groups[1].Value);
                var minor = int.Parse(match.Groups[2].Value);
                var ver = Assembly.GetExecutingAssembly().GetName().Version;
                return ver.Major < major || (ver.Major == major && ver.Minor < minor);
            }
        }
    }

    public class AlreadyUpToDate { }
}
