using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace HyperBooru; public enum TagSource { Internal, UserTag } public class TagDefinition : HBObject { public TagSource Source { get; set; } = TagSource.Internal; public string? Namespace { get; set; } public string Name { get; set; } public virtual List ImplicitTags { get; set; } = new(); } public class Tag : HBObject { public virtual TagDefinition TagDefinition { get; set; } public DateTime CreateTime { get; set; } = DateTime.Now; public virtual HBObject Target { get; set; } public Tag() {} public Tag(TagDefinition tagDef) => this.TagDefinition = tagDef; }