@@ -16,7 +16,7 @@ public final class CacheEntry<V> {
1616 /// - key: The unique identifier for the cached value
1717 /// - value: The value to be cached
1818 /// - expiredTimestamp: The date when the cache entry expires
19- init ( key: String , value: V , expiredTimestamp: Date ) {
19+ public init ( key: String , value: V , expiredTimestamp: Date ) {
2020 self . key = key
2121 self . value = value
2222 self . expiredTimestamp = expiredTimestamp
@@ -41,4 +41,23 @@ public final class CacheEntry<V> {
4141 }
4242}
4343
44- extension CacheEntry : Codable where V: Codable { }
44+ extension CacheEntry : Codable where V: Codable {
45+ private enum CodingKeys : String , CodingKey {
46+ case key, value, expiredTimestamp
47+ }
48+
49+ public func encode( to encoder: Encoder ) throws {
50+ var container = encoder. container ( keyedBy: CodingKeys . self)
51+ try container. encode ( key, forKey: . key)
52+ try container. encode ( value, forKey: . value)
53+ try container. encode ( expiredTimestamp, forKey: . expiredTimestamp)
54+ }
55+
56+ public convenience init ( from decoder: Decoder ) throws {
57+ let container = try decoder. container ( keyedBy: CodingKeys . self)
58+ let key = try container. decode ( String . self, forKey: . key)
59+ let value = try container. decode ( V . self, forKey: . value)
60+ let expiredTimestamp = try container. decode ( Date . self, forKey: . expiredTimestamp)
61+ self . init ( key: key, value: value, expiredTimestamp: expiredTimestamp)
62+ }
63+ }
0 commit comments