ExportOptions Model

Definition

public struct ExportOptions: Sendable {
    public var dateRange: ClosedRange<Date>
    public var tagIds: Set<UUID>?       // nil = all tags
    public var includeUntagged: Bool
    public var includeRunning: Bool
    public var includeColumns: Set<Column>
    public var dateFormat: String
    public var timeFormat: String
}

Column Enum

Available columns for CSV export:

public enum Column: String, CaseIterable, Sendable {
    case date
    case startTime
    case endTime
    case duration
    case tag
    case comment
}

Properties

PropertyTypeDefaultDescription
dateRangeClosedRange<Date>requiredStart and end dates for export
tagIdsSet<UUID>?nilFilter to specific tags (nil = all)
includeUntaggedBooltrueInclude records without tags
includeRunningBooltrueInclude records still running
includeColumnsSet<Column>allWhich columns to include in output
dateFormatString"yyyy-MM-dd"Date formatting pattern
timeFormatString"HH:mm"Time formatting pattern

Usage

let options = ExportOptions(
    dateRange: startDate...endDate,
    tagIds: [workTagId],
    includeUntagged: false,
    includeRunning: false,
    includeColumns: [.date, .duration, .tag],
    dateFormat: "MM/dd/yyyy",
    timeFormat: "h:mm a"
)

Related