diff --git a/Libraries/iTunes/Kit/Models/Review+Decodable.swift b/Libraries/iTunes/Kit/Models/Review+Codable.swift similarity index 59% rename from Libraries/iTunes/Kit/Models/Review+Decodable.swift rename to Libraries/iTunes/Kit/Models/Review+Codable.swift index 41269fe..c60640a 100644 --- a/Libraries/iTunes/Kit/Models/Review+Decodable.swift +++ b/Libraries/iTunes/Kit/Models/Review+Codable.swift @@ -1,5 +1,5 @@ // -// Review.swift +// Review+Codable.swift // ReviewsiTunesKit // // Created by Javier Cicchelli on 17/03/2024. @@ -9,6 +9,7 @@ import Foundation import ReviewsFeedKit +// MARK: - Decodable extension Review: Decodable { // MARK: Enumerations @@ -54,3 +55,30 @@ extension Review: Decodable { } } + +// MARK: - Encodable +extension Review: Encodable { + + // MARK: Functions + + public func encode(to encoder: any Encoder) throws { + var review = encoder.container(keyedBy: ReviewKeys.self) + var authorName = review.nestedContainer(keyedBy: NameKeys.self, forKey: .author) + var authorLabel = authorName.nestedContainer(keyedBy: LabelKeys.self, forKey: .name) + var contentLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .content) + var idLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .id) + var ratingLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .rating) + var titleLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .title) + var versionLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .version) + var updatedLabel = review.nestedContainer(keyedBy: LabelKeys.self, forKey: .updated) + + try authorLabel.encode(author, forKey: .label) + try contentLabel.encode(content, forKey: .label) + try idLabel.encode(String(id), forKey: .label) + try ratingLabel.encode(String(rating), forKey: .label) + try titleLabel.encode(title, forKey: .label) + try versionLabel.encode(version, forKey: .label) + try updatedLabel.encode(updated, forKey: .label) + } + +}