Files
VLoop/backend/internal/video/chunk_entity.go

56 lines
1.5 KiB
Go
Raw Normal View History

package video
const ChunkSize = 5 << 20 // 5 MB
type ChunkUploadSession struct {
UploadID string `json:"upload_id"`
AccountID uint `json:"account_id"`
Filename string `json:"filename"`
FileSize int64 `json:"file_size"`
ChunkSize int64 `json:"chunk_size"`
TotalChunks int `json:"total_chunks"`
FileHash string `json:"file_hash"`
UploadedBits []bool `json:"uploaded_bits"`
}
func (s *ChunkUploadSession) UploadedChunks() []int {
var indices []int
for i, uploaded := range s.UploadedBits {
if uploaded {
indices = append(indices, i)
}
}
return indices
}
func (s *ChunkUploadSession) IsComplete() bool {
for _, b := range s.UploadedBits {
if !b {
return false
}
}
return true
}
type InitChunkUploadRequest struct {
Filename string `json:"filename" binding:"required"`
FileSize int64 `json:"file_size" binding:"required,min=1"`
ChunkSize int64 `json:"chunk_size" binding:"required,min=1"`
TotalChunks int `json:"total_chunks" binding:"required,min=1"`
FileHash string `json:"file_hash" binding:"required"`
}
type UploadChunkRequest struct {
UploadID string `form:"upload_id" binding:"required"`
ChunkIndex int `form:"chunk_index" binding:"min=0"`
ChunkHash string `form:"chunk_hash" binding:"required"`
}
type ChunkStatusRequest struct {
UploadID string `json:"upload_id" binding:"required"`
}
type CompleteChunkUploadRequest struct {
UploadID string `json:"upload_id" binding:"required"`
}