package dto

type GetUploadURLRequest struct {
	FileName    string `json:"file_name" validate:"required,min=1,max=255" required:"true" minLength:"1" maxLength:"255" description:"文件名（如：cards.csv）"`
	ContentType string `json:"content_type" validate:"omitempty,max=100" maxLength:"100" description:"文件 MIME 类型（如：text/csv），留空则自动推断"`
	Purpose     string `json:"purpose" validate:"required,oneof=iot_import export attachment batch_purchase device_batch_allocation" required:"true" enum:"iot_import,export,attachment,batch_purchase,device_batch_allocation" description:"文件用途 (iot_import:ICCID导入, export:数据导出, attachment:附件, batch_purchase:资产套餐批量订购CSV, device_batch_allocation:设备批量分配CSV)"`
}

type GetUploadURLResponse struct {
	UploadURL string `json:"upload_url" description:"预签名上传 URL，使用 PUT 方法上传文件"`
	FileKey   string `json:"file_key" description:"文件路径标识，上传成功后用于调用业务接口"`
	ExpiresIn int    `json:"expires_in" description:"URL 有效期（秒）"`
}

// GetBatchDownloadURLsRequest 批量获取文件下载预签名 URL 请求
type GetBatchDownloadURLsRequest struct {
	FileKeys []string `json:"file_keys" validate:"required,min=1,max=50,dive,required" required:"true" minLength:"1" description:"文件路径标识列表，最多 50 个"`
}

// GetBatchDownloadURLsResponse 批量获取文件下载预签名 URL 响应
type GetBatchDownloadURLsResponse struct {
	URLs      map[string]string `json:"urls" description:"file_key 到预签名下载 URL 的映射"`
	ExpiresIn int               `json:"expires_in" description:"URL 有效期（秒）"`
}
