|
|
@@ -21,6 +21,7 @@ final class Project: Codable, Ordered, Aggregate {
|
|
|
var tasks: [Task] = []
|
|
|
|
|
|
init(sortOrder: Int = 0) {
|
|
|
+ self.uuid = UUID()
|
|
|
self.sortOrder = sortOrder
|
|
|
}
|
|
|
|
|
|
@@ -54,16 +55,20 @@ final class Project: Codable, Ordered, Aggregate {
|
|
|
|
|
|
required init(from decoder: any Decoder) throws {
|
|
|
let container = try decoder.container(keyedBy: CodingKeys.self)
|
|
|
- category = try container.decode(String.self, forKey: .category)
|
|
|
+ uuid = UUID()
|
|
|
name = try container.decode(String.self, forKey: .name)
|
|
|
+ category = try container.decode(String.self, forKey: .category)
|
|
|
tasks = try container.decode([Task].self, forKey: .tasks)
|
|
|
- tasks.forEach({ $0.project = self })
|
|
|
+ for (index, item) in tasks.enumerated() {
|
|
|
+ item.project = self
|
|
|
+ item.sortOrder = index
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func encode(to encoder: any Encoder) throws {
|
|
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
|
+ try container.encode(name, forKey: .name)
|
|
|
try container.encode(category, forKey: .category)
|
|
|
try container.encode(tasks, forKey: .tasks)
|
|
|
- try container.encode(name, forKey: .name)
|
|
|
}
|
|
|
}
|