39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
type UploadSession struct {
|
|
ID uint
|
|
UserID uint
|
|
FileName, FileHash string
|
|
FileSize, ChunkSize int64
|
|
ChunkTotal int
|
|
Status, StorageKey string
|
|
MediaID uint
|
|
}
|
|
|
|
type UploadChunk struct {
|
|
Index int
|
|
Hash string
|
|
Size int64
|
|
}
|
|
|
|
type UploadRepo interface {
|
|
FindCompletedSession(context.Context, uint, string) (*UploadSession, error)
|
|
FindUploadingSession(context.Context, uint, string) (*UploadSession, error)
|
|
CreateUploadSession(context.Context, *UploadSession) error
|
|
FindUploadSession(context.Context, uint) (*UploadSession, error)
|
|
ClaimUploadSession(context.Context, uint) (bool, error)
|
|
FailUploadSession(context.Context, uint) error
|
|
CompleteUploadSession(context.Context, uint, string, uint) error
|
|
DeleteUploadSession(context.Context, uint) error
|
|
UpsertChunk(context.Context, uint, *UploadChunk) error
|
|
ListChunks(context.Context, uint) ([]*UploadChunk, error)
|
|
DeleteChunks(context.Context, uint) error
|
|
StaleUploadSessionIDs(context.Context, time.Time) ([]uint, error)
|
|
DeleteUploadData(context.Context, uint) error
|
|
}
|