Skip to content

Enhancement: Support batch asset upload (multiple files) #201

@leogdion

Description

@leogdion

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 AssetUploadResult maintaining 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions