package schema

import "net/http"

// FileInfo 文件信息
type FileInfo struct {
	URL  string `json:"url"`
	Name string `json:"name"`
	Hash string `json:"hash"`
	Size int64  `json:"size"`
}

// FileChunkInfo 文件块信息
type FileChunkInfo struct {
	Current    int    `json:"current"`     // 当前块
	Total      int    `json:"total"`       // 总块数
	URL        string `json:"url"`         // 路径
	Name       string `json:"name"`        // 文件名
	Hash       string `json:"hash"`        // 文件hash
	IsComplete int    `json:"is_complete"` // 是否完成上传（1：未完成2:已完成）
}

// UploadParams 上传文件时的参数
type UploadParams struct {
	BaseUrl string `json:"base_url" v:"required#必须输入base_url"`
	FormKey string `json:"form_key" v:"required#必须输入file字段的名称form_key"`
}

type PersistentFileRequest struct {
	Hash string `json:"hash" v:"required#必须输入hash"` // 文件的哈希值
}

type FileChunkUploadReq struct {
	BaseUrl string `json:"base_url" v:"required#必须输入base_url"`
	FormKey string `json:"form_key" v:"required#必须输入file字段的名称form_key"`
	Index   int    `json:"index" v:"required#当前块索引不能为空(index)|min:1"`
	Total   int    `json:"total" v:"required#必须传总块数total|min:1"`
	Hash    string `json:"hash" v:"required#必须输入文件的md5值"`
}

// FileChunkParams 文件分块上传参数
type FileChunkParams struct {
	HttpRequest *http.Request // http request object
	FormKey     string        // form-data file key
	BaseUrl     string        // base url like bucket name
	Index       int           // current file chunk index
	Total       int           // total chunks
	Hash        string
}

// FileMergeParams 文件合并参数
type FileMergeParams struct {
	HttpRequest *http.Request // http request object
	BaseUrl     string        // base url like bucket name
	Total       int           // total chunks
	Hash        string
	FileName    string
}
