isn/src/isnd/Data/Packages/PackageVersion.cs

80 lines
2.2 KiB
C#
Raw Normal View History

2022-09-27 00:39:17 +01:00
2021-05-16 14:07:14 +01:00
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
2022-07-03 14:50:57 +01:00
using isn.abst;
2022-10-15 18:26:55 +01:00
using isnd.Data.Catalog;
2022-07-10 17:05:05 +01:00
using isnd.Data.Packages;
using isnd.Data.Packages.Catalog;
2021-06-21 23:38:05 +01:00
using Newtonsoft.Json;
2022-09-27 00:39:17 +01:00
using NuGet.Versioning;
2021-05-16 14:07:14 +01:00
2021-08-15 19:09:01 +01:00
namespace isnd.Data
2021-05-16 14:07:14 +01:00
{
2023-03-14 00:15:42 +00:00
public class PackageVersion
2021-05-16 14:07:14 +01:00
{
[Required]
[ForeignKey("Package")]
2021-09-05 15:44:47 +01:00
[StringLength(1024)]
2022-08-20 12:54:24 +01:00
[JsonProperty("id")]
2021-05-16 14:07:14 +01:00
public string PackageId { get; set; }
[Required]
public int Major { get; set; }
2023-03-14 00:15:42 +00:00
2021-05-16 14:07:14 +01:00
[Required]
public int Minor { get; set; }
2023-03-14 00:15:42 +00:00
2021-05-16 14:07:14 +01:00
[Required]
public int Patch { get; set; }
2022-09-25 17:07:56 +01:00
public int Revision { get; set; }
2022-10-15 18:26:55 +01:00
/// <summary>
/// Full version string
/// </summary>
/// <value></value>
[StringLength(256)]
2023-03-14 00:15:42 +00:00
[Required]
[Key]
2021-05-16 14:07:14 +01:00
public string FullString { get; set; }
public bool IsPrerelease { get; set; }
2021-06-21 23:38:05 +01:00
[StringLength(256)]
public string Type { get; set; }
2021-05-16 14:07:14 +01:00
2021-06-21 23:38:05 +01:00
[JsonIgnore]
public virtual Package Package { get; set; }
2021-05-16 14:07:14 +01:00
2023-03-14 00:15:42 +00:00
[Required]
[JsonIgnore]
2021-08-28 21:26:39 +01:00
[ForeignKey("LatestCommit")]
2022-06-19 21:40:31 +01:00
public long CommitNId { get; set; }
2021-08-28 18:41:22 +01:00
[NotMapped]
public string CommitId { get => CommitNId.ToString(); }
2023-03-14 00:15:42 +00:00
public virtual Commit LatestCommit { get; set; }
2022-10-15 18:26:55 +01:00
public string NugetLink => $"{Constants.PaquetFileEstension}/{PackageId}/{FullString}/{PackageId}-{FullString}."
2022-07-03 14:50:57 +01:00
+ Constants.PaquetFileEstension;
2022-10-15 18:26:55 +01:00
public string NuspecLink => $"{Constants.SpecFileEstension}/{PackageId}/{FullString}/{PackageId}-{FullString}."
2022-07-03 14:50:57 +01:00
+ Constants.SpecFileEstension;
2021-07-05 21:24:37 +01:00
2022-09-24 12:32:00 +01:00
public string SementicVersionString { get => $"{Major}.{Minor}.{Patch}"; }
2022-09-27 00:39:17 +01:00
public NuGetVersion NugetVersion { get => new NuGetVersion(FullString); }
2022-10-15 18:26:55 +01:00
2023-03-14 00:15:42 +00:00
public CatalogEntry ToLeave(string bid, string extUrl)
2022-10-15 18:26:55 +01:00
{
2023-03-14 00:15:42 +00:00
return new CatalogEntry(bid + "/" + this.PackageId + "/" + FullString + ".json")
2022-10-15 18:26:55 +01:00
{
2023-03-14 00:15:42 +00:00
Id = PackageId,
Version = FullString,
authors = $"{this.Package.Owner.FullName} <${Package.Owner.Email}>",
packageContent = extUrl + this.NugetLink
2022-10-15 18:26:55 +01:00
};
}
2021-05-16 14:07:14 +01:00
}
}