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>
37 lines
1.1 KiB
Swift
37 lines
1.1 KiB
Swift
import Foundation
|
|
|
|
public struct TaskSummary: Sendable, Identifiable, Equatable {
|
|
public var id: String
|
|
public var accountId: String
|
|
public var summary: String
|
|
public var description: String?
|
|
public var status: TaskStatus
|
|
public var priority: Int
|
|
public var dueDate: Date?
|
|
public var deferUntil: Date?
|
|
public var createdAt: Date
|
|
public var linkedMessageId: String?
|
|
public var categories: [String]
|
|
public var isSomeday: Bool
|
|
|
|
public init(
|
|
id: String, accountId: String, summary: String, description: String? = nil,
|
|
status: TaskStatus = .needsAction, priority: Int = 0, dueDate: Date? = nil,
|
|
deferUntil: Date? = nil, createdAt: Date = Date(), linkedMessageId: String? = nil,
|
|
categories: [String] = [], isSomeday: Bool = false
|
|
) {
|
|
self.id = id
|
|
self.accountId = accountId
|
|
self.summary = summary
|
|
self.description = description
|
|
self.status = status
|
|
self.priority = priority
|
|
self.dueDate = dueDate
|
|
self.deferUntil = deferUntil
|
|
self.createdAt = createdAt
|
|
self.linkedMessageId = linkedMessageId
|
|
self.categories = categories
|
|
self.isSomeday = isSomeday
|
|
}
|
|
}
|