feat(itinerary): add draggable travel day positioning with CloudKit persistence
- Add TravelDayOverride model for storing user-customized travel day positions - Add TravelOverrideService for CloudKit CRUD operations on travel overrides - Add CKTravelDayOverride CloudKit model wrapper - Refactor itinerarySections to validate travel day bounds (must be after last game in departure city) - Travel segments can now be dragged to different days within valid range - Persist travel day overrides to CloudKit for cross-device sync Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
38
SportsTime/Core/Models/Domain/TravelDayOverride.swift
Normal file
38
SportsTime/Core/Models/Domain/TravelDayOverride.swift
Normal file
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// TravelDayOverride.swift
|
||||
// SportsTime
|
||||
//
|
||||
// Stores user-customized travel day positions
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/// Represents a user override of the default travel day placement.
|
||||
/// Travel segments normally appear on the day after the last game in the departure city.
|
||||
/// This model allows users to drag travel to a different day within valid bounds.
|
||||
struct TravelDayOverride: Identifiable, Codable, Hashable {
|
||||
let id: UUID
|
||||
let tripId: UUID
|
||||
/// Stable identifier for the travel segment (e.g., "travel:houston->arlington")
|
||||
let travelAnchorId: String
|
||||
/// The day number (1-indexed) where the travel should display
|
||||
var displayDay: Int
|
||||
let createdAt: Date
|
||||
var modifiedAt: Date
|
||||
|
||||
init(
|
||||
id: UUID = UUID(),
|
||||
tripId: UUID,
|
||||
travelAnchorId: String,
|
||||
displayDay: Int,
|
||||
createdAt: Date = Date(),
|
||||
modifiedAt: Date = Date()
|
||||
) {
|
||||
self.id = id
|
||||
self.tripId = tripId
|
||||
self.travelAnchorId = travelAnchorId
|
||||
self.displayDay = displayDay
|
||||
self.createdAt = createdAt
|
||||
self.modifiedAt = modifiedAt
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user