summaryrefslogtreecommitdiff
path: root/Hutch/Models/CommitSummary.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/Models/CommitSummary.swift')
-rw-r--r--Hutch/Models/CommitSummary.swift22
1 files changed, 22 insertions, 0 deletions
diff --git a/Hutch/Models/CommitSummary.swift b/Hutch/Models/CommitSummary.swift
new file mode 100644
index 0000000..88c3e7d
--- /dev/null
+++ b/Hutch/Models/CommitSummary.swift
@@ -0,0 +1,22 @@
+import Foundation
+
+/// Lightweight commit model for list views. Matches the subset of fields
+/// returned by the repository log query.
+struct CommitSummary: Codable, Sendable, Identifiable, Hashable {
+ let id: String
+ let shortId: String
+ let author: CommitAuthor
+ let message: String
+
+ /// First line of the commit message.
+ var title: String {
+ message.prefix(while: { $0 != "\n" }).trimmingCharacters(in: .whitespaces)
+ }
+}
+
+/// A compact author representation used in commit list responses.
+struct CommitAuthor: Codable, Sendable, Hashable {
+ let name: String
+ let email: String?
+ let time: Date
+}