using System.ComponentModel.DataAnnotations; namespace OpenArchival.DataAccess; public class ArtifactEntry { [Key] public required int Id { get; set; } /// /// This value gets appended on the end of the contianing ArtifactGrouping's /// Category value /// public string? ArtifactIdentifier { get { return (ParentArtifactGrouping is not null) ? ModelHelpers.MakeIdentifier(ParentArtifactGrouping.IdentifierFields.Values, ParentArtifactGrouping.Category.FieldSeparator, ArtifactNumber) : null; } } public string? ArtifactNumber { get; set; } public required string Title { get; set; } public string? Description { get; set; } public required ArtifactStorageLocation StorageLocation { get; set; } public List? Tags { get; set; } public List? ListedNames { get; set; } public List? AssociatedDates { get; set; } public List? Defects { get; set; } public List? Links { get; set; } public ArtifactGrouping? ParentArtifactGrouping { get; set; } public required List Files { get; set; } /// /// Maps the file name to the textual contents of the file /// public Dictionary? FileTextContent { get; set; } = null; public bool IsPubliclyVisible { get; set; } }