gitbay/Releases/ReleaseModels.swift
25 lines · 642 bytes
1import Foundation
2
3/// One release; `release list` rows and `release show`.
4nonisolated struct Release: Decodable, Sendable, Hashable, Identifiable {
5 let tag: String
6 let title: String
7 let notes: String?
8 let author: String?
9 let createdAt: Date
10 let assets: [Asset]?
11
12 enum CodingKeys: String, CodingKey {
13 case tag, title, notes, author, assets
14 case createdAt = "created_at"
15 }
16
17 var id: String { tag }
18
19 nonisolated struct Asset: Decodable, Sendable, Hashable, Identifiable {
20 let name: String
21 let size: Int64
22 let sha256: String
23 var id: String { name }
24 }
25}