diff options
| author | Fuwn <[email protected]> | 2025-06-24 04:30:16 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-06-24 04:30:16 -0700 |
| commit | 1f735a3821cccf827e25f854c0902d4bfe8318ae (patch) | |
| tree | de2040ef279c0b980252b4459422ec0a00e3e4ed /Sora | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-1f735a3821cccf827e25f854c0902d4bfe8318ae.tar.xz sora-testing-1f735a3821cccf827e25f854c0902d4bfe8318ae.zip | |
feat: Development commit
Diffstat (limited to 'Sora')
| -rw-r--r-- | Sora/Data/Booru/BooruSearchQuery.swift | 25 |
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) + } } |