Files
isn/src/isnd/Data/Packages/Package.cs

63 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using isnd.Interfaces;
using Newtonsoft.Json;
using NuGet.Versioning;
namespace isnd.Data.Packages
{
public class Package
{
[Key]
[Required]
[StringLength(1024)]
public string Id { get; set; }
[Required]
[ForeignKey("Owner")]
public string OwnerId { get; set; }
[StringLength(1024)]
public string Description { get; set; }
public bool Public { get; set; }
[JsonIgnore]
virtual public ApplicationUser Owner { get; set; }
[JsonIgnore]
public virtual List<PackageVersion> Versions { get; set; }
/// <summary>
/// Latest version at put, posted,
/// or even deletion when no more active version.
/// </summary>
/// <value></value>
[Required]
[JsonIgnore]
[ForeignKey("LatestCommit")]
public long CommitNId { get; set; }
[NotMapped]
public string CommitId { get => CommitNId.ToString(); }
public virtual Commit LatestCommit { get; set; }
internal static bool ValidateId(string pkgId)
{
return !string.IsNullOrWhiteSpace(pkgId);
}
public PackageVersion GetLatestVersion()
{
var latest = Versions.Max(v => v.NugetVersion);
return Versions.FirstOrDefault(v=> v.NugetVersion == latest);
}
}
}