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

83 lines
2.4 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
{
public class PackageVersion
{
[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; }
[Required]
public int Minor { get; set; }
[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)]
2022-04-15 23:56:15 +01: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
2021-08-28 18:41:22 +01: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(); }
2022-09-23 20:34:51 +01: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
public RegistrationLeaf ToLeave(string bid, string dlbase)
{
string leaveid = bid + "/" + this.PackageId + "/" + FullString + ".json";
return new RegistrationLeaf
{
Id = leaveid,
PackageContent = dlbase + NugetLink,
Entry = new CatalogEntry
{
Id = leaveid,
idp = PackageId,
version = FullString,
authors = $"{this.Package.Owner.FullName} <${Package.Owner.Email}>"
}
};
}
2022-09-25 17:07:56 +01:00
2021-05-16 14:07:14 +01:00
}
}