Files
MagnumOpus/Packages/MagnumOpusCore/Sources/Models/ItemSummary.swift
Felix Förtsch a4f0761f25 add v0.4 models, schema, query extensions for GTD tasks, labels, deferrals
New model types: TaskStatus, TaskSummary, LabelInfo, ItemSummary.
GRDB records: TaskRecord, LabelRecord, ItemLabelRecord, DeferralRecord.
Database migrations v3_task, v3_label, v3_deferral with indexes.
MailStore query extensions for labels, item-labels, deferrals, task cache.
TaskStore module wrapping MailStore. Tests for all v3 tables and records.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 10:31:00 +01:00

49 lines
877 B
Swift

import Foundation
public enum ItemSummary: Sendable, Identifiable, Equatable {
case email(MessageSummary)
case task(TaskSummary)
public var id: String {
switch self {
case .email(let msg): "email-\(msg.id)"
case .task(let task): "task-\(task.id)"
}
}
public var title: String {
switch self {
case .email(let msg): msg.subject ?? "(no subject)"
case .task(let task): task.summary
}
}
public var date: Date {
switch self {
case .email(let msg): msg.date
case .task(let task): task.createdAt
}
}
public var dueDate: Date? {
switch self {
case .email: nil
case .task(let task): task.dueDate
}
}
public var isDeferred: Bool {
switch self {
case .email: false
case .task(let task): task.deferUntil != nil
}
}
public var isSomeday: Bool {
switch self {
case .email: false
case .task(let task): task.isSomeday
}
}
}