using System.Security.Principal; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using isn.abst; using isnd.Data.Catalog; using isnd.Data.Packages; using isnd.Data.Packages.Catalog; using isnd.Entities; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using NuGet.Versioning; using System; using NuGet.Packaging; using System.Collections.Generic; using Package = isnd.Data.Packages.Package; using Microsoft.EntityFrameworkCore.Metadata.Internal; namespace isnd.Data { [PrimaryKey("PackageId", "FullString")] public class PackageVersion { [Required] [ForeignKey("Package")] [StringLength(1024)] [JsonProperty("id")] public string PackageId { get; set; } [Required] public int Major { get; set; } [Required] public int Minor { get; set; } [Required] public int Patch { get; set; } public int Revision { get; set; } /// /// Full version string /// /// [StringLength(256)] [Required] public string FullString { get; set; } public bool IsPrerelease { get; set; } [StringLength(256)] public string Type { get; set; } [JsonIgnore] public virtual Packages.Package Package { get; set; } [Required] [JsonIgnore] [ForeignKey("LatestCommit")] public long CommitNId { get; set; } [NotMapped] public string CommitId { get => CommitNId.ToString(); } public virtual Commit LatestCommit { get; set; } public virtual List DependencyGroups { get; set; } public string NugetLink => $"{ApiConfig.Nuget}/{PackageId}/{FullString}/{PackageId}-{FullString}." + Constants.PacketFileExtension; public string NuspecLink => $"{ApiConfig.Nuspec}/{PackageId}/{FullString}/{PackageId}-{FullString}." + Constants.SpecFileExtension; public string SementicVersionString { get => $"{Major}.{Minor}.{Patch}"; } public NuGetVersion NugetVersion { get => new NuGetVersion(FullString); } public Catalog.RegistrationLeave ToPackage(string apiBase) { return new Catalog.RegistrationLeave(apiBase, this.PackageId , FullString, new Catalog.PackageDetails(this, apiBase)); } public bool IsDeleted => LatestCommit?.Action == PackageAction.DeletePackage; } }