diff options
Diffstat (limited to 'Exception.cs')
| -rw-r--r-- | Exception.cs | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/Exception.cs b/Exception.cs new file mode 100644 index 0000000..1e070eb --- /dev/null +++ b/Exception.cs @@ -0,0 +1,65 @@ +namespace HyperBooru; + +public class HBException : Exception { + public HBException() + : base() {} + public HBException(string message) + : base(message) {} + public HBException(string message, Exception inner) + : base(message, inner) {} +} + +public class ObjectNotFoundException : HBException { + public Guid Guid { get; private init; } + + public ObjectNotFoundException(Guid guid) + : base($"Object not found: {guid}") {} +} + +public class TagException : HBException { + public TagDefinition? TagDefinition { get; private init; } + + public TagException(string message) : base(message) {} + public TagException(string message, TagDefinition tagDefinition) + : base(message) => + TagDefinition = tagDefinition; +} + +public class TagDuplicateException : TagException { + public bool NameExists { get; private init; } + public bool AliasExists { get; private init; } + + public TagDuplicateException(bool nameExists, bool aliasExists) + : base(GenerateMessage(nameExists, aliasExists)) { + + NameExists = nameExists; + AliasExists = aliasExists; + } + + private static string GenerateMessage(bool nameExists, bool aliasExists) { + if(nameExists && aliasExists) + return $"Both tag name and alias already exist!"; + else if(nameExists) + return $"Tag name already exists!"; + else + return $"Tag alias already exists"; + } +} + +public class MediaException : HBException { + public Media? Media { get; private init; } + + public MediaException(string message) : base(message) {} + public MediaException(string message, Media media) : base(message) => + Media = media; +} + +public class MediaCreateException : MediaException { + public MediaCreateException(string message) + : base(message) {} +} + +public class ThumbnailException : MediaException { + public ThumbnailException(string message, Media media) + :base(message, media) {} +} |
