summaryrefslogtreecommitdiff
path: root/Sora
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-06-24 04:30:16 -0700
committerFuwn <[email protected]>2025-06-24 04:30:16 -0700
commit1f735a3821cccf827e25f854c0902d4bfe8318ae (patch)
treede2040ef279c0b980252b4459422ec0a00e3e4ed /Sora
parentfeat: Development commit (diff)
downloadsora-testing-1f735a3821cccf827e25f854c0902d4bfe8318ae.tar.xz
sora-testing-1f735a3821cccf827e25f854c0902d4bfe8318ae.zip
feat: Development commit
Diffstat (limited to 'Sora')
-rw-r--r--Sora/Data/Booru/BooruSearchQuery.swift25
1 files changed, 25 insertions, 0 deletions
diff --git a/Sora/Data/Booru/BooruSearchQuery.swift b/Sora/Data/Booru/BooruSearchQuery.swift
index b554fbf..a4dc27a 100644
--- a/Sora/Data/Booru/BooruSearchQuery.swift
+++ b/Sora/Data/Booru/BooruSearchQuery.swift
@@ -7,6 +7,11 @@ struct BooruSearchQuery: Codable, Equatable, Identifiable, Hashable {
let searchedAt: Date
var page: Int
+ enum CodingKeys: String, CodingKey {
+ // swiftlint:disable:next explicit_enum_raw_value
+ case id, provider, tags, searchedAt, page
+ }
+
init(
provider: BooruProvider,
tags: [String],
@@ -19,4 +24,24 @@ struct BooruSearchQuery: Codable, Equatable, Identifiable, Hashable {
self.searchedAt = searchedAt
self.page = page
}
+
+ init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: CodingKeys.self)
+
+ self.id = try container.decodeIfPresent(UUID.self, forKey: .id) ?? UUID()
+ self.provider =
+ try container.decodeIfPresent(BooruProvider.self, forKey: .provider) ?? .safebooru
+ self.tags = try container.decodeIfPresent([String].self, forKey: .tags) ?? []
+ self.searchedAt = try container.decodeIfPresent(Date.self, forKey: .searchedAt) ?? Date()
+ self.page = try container.decodeIfPresent(Int.self, forKey: .page) ?? 1
+ }
+
+ func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: CodingKeys.self)
+ try container.encode(id, forKey: .id)
+ try container.encode(provider, forKey: .provider)
+ try container.encode(tags, forKey: .tags)
+ try container.encode(searchedAt, forKey: .searchedAt)
+ try container.encode(page, forKey: .page)
+ }
}