summaryrefslogtreecommitdiff
path: root/Server/Tag.cs
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2026-05-22 00:52:16 +1000
committerJake Mannens <jake@asger.xyz>2026-05-23 22:22:55 +1000
commit12eaa5814ef20b0910e8d64a753378b6f6797989 (patch)
tree062cf477c29054e0f089cb80f0cd79a9f3b7ccd9 /Server/Tag.cs
parent6de5d7f5364fe1d54703da6d6b7cb08ea26e939f (diff)
Initial commitwasm-initial
Diffstat (limited to 'Server/Tag.cs')
-rw-r--r--Server/Tag.cs37
1 files changed, 37 insertions, 0 deletions
diff --git a/Server/Tag.cs b/Server/Tag.cs
new file mode 100644
index 0000000..c857c66
--- /dev/null
+++ b/Server/Tag.cs
@@ -0,0 +1,37 @@
+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 string? Alias { get; set; }
+ public virtual List<TagDefinition> ImplicitTags { get; set; } = new();
+
+ public static explicit operator ApiModels.TagDefinition(TagDefinition tagDefinition) => new() {
+ TagDefinitionId = tagDefinition.Guid,
+ Namespace = tagDefinition.Namespace,
+ Name = tagDefinition.Name,
+ Alias = tagDefinition.Alias,
+ ImplicitTags = tagDefinition.ImplicitTags.Select(td => td.Guid).ToArray()
+ };
+}
+
+public class Tag : HBObject {
+ [ForeignKey("ObjectId")]
+ public int TagDefinitionId { get; set; }
+ public virtual TagDefinition TagDefinition { get; set; }
+ public DateTime CreateTime { get; set; } = DateTime.UtcNow;
+ public virtual HBObject Target { get; set; }
+
+ public Tag() {}
+
+ public Tag(TagDefinition tagDef) =>
+ this.TagDefinition = tagDef;
+}