-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Labels
enhancementNew feature or requestNew feature or request
Milestone
Description
Overview
Extend uploadAssets() to support uploading multiple files in a single operation for better efficiency.
Current API
// Upload one file at a time
let data1 = try Data(contentsOf: imageURL1)
let result1 = try await service.uploadAssets(data: data1)
let data2 = try Data(contentsOf: imageURL2)
let result2 = try await service.uploadAssets(data: data2)Proposed API
// Batch upload
let files = [imageURL1, imageURL2, imageURL3]
let results = try await service.uploadAssets(files: files)
// Returns [AssetUploadResult] with tokens for each file
// Or with Data array
let dataArray = [data1, data2, data3]
let results = try await service.uploadAssets(dataArray: dataArray)Benefits
- Reduced latency: Single request overhead for multiple files
- Better throughput: Network efficiency gains
- Simplified code: Upload all assets in one call
- Atomic operations: All uploads succeed or fail together (optional)
Implementation Notes
- CloudKit API supports multiple files in single multipart request
- Add
uploadAssets(files: [URL])overload - Add
uploadAssets(dataArray: [Data])overload - Validate total size across all files (250 MB per file limit)
- Consider parallel upload option for large batches
- Return array of
AssetUploadResultmaintaining order
Considerations
- Should batch upload be atomic (all or nothing) or best-effort?
- Maximum files per batch (CloudKit limit)?
- Progress reporting for multi-file uploads?
Related
- Implemented in Uploading Assets (assets/upload) #30 (uploadAssets)
- Consider combining with progress tracking enhancement
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request