summaryrefslogtreecommitdiff
path: root/Media.cs
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2026-03-17 03:04:36 +1100
committerJake Mannens <jake@asger.xyz>2026-03-25 01:57:41 +1100
commitc751709b1b4fe6f16fd84647e8e071455e7b78d6 (patch)
tree47734a083d888660606e6cf6cf158c93e69a9807 /Media.cs
v0.1av0.1a
Diffstat (limited to 'Media.cs')
-rw-r--r--Media.cs59
1 files changed, 59 insertions, 0 deletions
diff --git a/Media.cs b/Media.cs
new file mode 100644
index 0000000..51626be
--- /dev/null
+++ b/Media.cs
@@ -0,0 +1,59 @@
+using Microsoft.AspNetCore.Mvc.ModelBinding.Binders;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Net.NetworkInformation;
+
+namespace HyperBooru;
+
+public class Media : HBObject {
+ public string? ShortDescription { get; set; }
+ public string? LongDescription { get; set; }
+ public virtual OcrData? OcrData { get; set; }
+ public virtual UploadedFile? CurrentUploadedFile { get; set; }
+ public virtual List<UploadedFile> UploadedFiles { get; set; } = new();
+
+ public bool IsIngest => Tags
+ .Select(t => t.TagDefinitionId)
+ .Contains((int) HBObjectId.IngestTag);
+
+ public string? DisplayName {
+ get {
+ if(ShortDescription is not null)
+ return ShortDescription;
+
+ return UploadedFiles
+ .OrderBy(f => f.UploadTime)
+ .First()?.Filename ?? Guid.ToString().ToUpper();
+ }
+ }
+}
+
+public class UploadedFile : HBObject {
+ public string Checksum { get; set; }
+ public bool ChecksumVerified { get; set; } = false;
+ public string? Filename { get; set; }
+ public long Length { get; set; }
+ public string MimeType { get; set; }
+ public int? Width { get; set; }
+ public int? Height { get; set; }
+ public DateTime UploadTime { get; set; } = DateTime.UtcNow;
+ public DateTime? LastAccessTime { get; set; }
+ public DateTime? LastWriteTime { get; set; }
+ public DateTime? CreateTime { get; set; }
+ public string? Path { get; set; }
+ public PathType? PathType { get; set; }
+ public virtual Media Media { get; set; }
+}
+
+public class OcrData {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int OcrDataId { get; set; }
+ [ForeignKey("ObjectId")]
+ public int MediaId { get; set; }
+ public string Text { get; set; }
+ public string SearchableText { get; set; }
+ public DateTime Timestamp { get; set; }
+ public virtual Media Media { get; set; }
+} \ No newline at end of file