summaryrefslogtreecommitdiff
path: root/Exception.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 /Exception.cs
v0.1av0.1a
Diffstat (limited to 'Exception.cs')
-rw-r--r--Exception.cs65
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) {}
+}