using System.Text.Json.Serialization; namespace HyperBooru.ApiModels; public enum PathType { Windows, Unix } public enum TagSource { Internal = 0, UserTag = 1 } public enum HBObjectId { NsfwTag = -1, IngestTag = -2, AdminUser = -3 } public static class InternalTag { public static readonly Guid NsfwTag = new("EBDAD4F8-455A-4351-8017-1D4854D6FA38"); public static readonly Guid IngestTag = new("EA212801-5BCC-4C0E-814F-FB9D30DB58BC"); public static readonly Guid AdminUser = new("4FA948F4-7C45-4F81-BB6B-E417491E6C96"); } public record Media { public Guid MediaId { get; init; } public string? ShortDescription { get; init; } public string? LongDescription { get; init; } } public record UploadedFile { public Guid UploadedFileId { get; init; } public Guid MediaId { get; init; } public string Checksum { get; init; } public bool ChecksumVerified { get; init; } public string? Filename { get; init; } public long Length { get; init; } public string MimeType { get; init; } public int? Width { get; init; } public int? Height { get; init; } public DateTime UploadTime { get; init; } public DateTime? LastAccessTime { get; init; } public DateTime? LastWriteTime { get; init; } public DateTime? CreateTime { get; init; } public string? Path { get; init; } [JsonConverter(typeof(JsonStringEnumConverter))] public PathType? PathType { get; init; } } public record TagDefinition { public Guid TagDefinitionId { get; init; } [JsonConverter(typeof(JsonStringEnumConverter))] public TagSource Source { get; init; } public string? Namespace { get; init; } public string Name { get; init; } public string? Alias { get; init; } public Guid[] ImplicitTags { get; init; } } public record User { public Guid UserId { get; init; } public string Username { get; init; } } public record OcrData { public Guid MediaId { get; init; } public string Text { get; init; } public string SearchableText { get; init; } public DateTime Timestamp { get; init; } }