后端重构
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
package example
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
// ExaFile 文件实体
|
||||
type ExaFile struct {
|
||||
ID uint
|
||||
FileName string
|
||||
FileMd5 string
|
||||
FilePath string
|
||||
ChunkTotal int
|
||||
IsFinish bool
|
||||
ExaFileChunk []ExaFileChunk
|
||||
}
|
||||
|
||||
// ExaFileChunk 文件切片实体
|
||||
type ExaFileChunk struct {
|
||||
ID uint
|
||||
ExaFileID uint
|
||||
FileChunkNumber int
|
||||
FileChunkPath string
|
||||
}
|
||||
|
||||
// BreakpointContinueRepo 断点续传仓储接口
|
||||
type BreakpointContinueRepo interface {
|
||||
FindOrCreateFile(ctx context.Context, fileMd5, fileName string, chunkTotal int) (*ExaFile, error)
|
||||
CreateFileChunk(ctx context.Context, fileID uint, fileChunkPath string, fileChunkNumber int) error
|
||||
DeleteFileChunk(ctx context.Context, fileMd5, filePath string) error
|
||||
}
|
||||
|
||||
// BreakpointContinueUsecase 断点续传用例
|
||||
type BreakpointContinueUsecase struct {
|
||||
repo BreakpointContinueRepo
|
||||
}
|
||||
|
||||
// NewBreakpointContinueUsecase 创建断点续传用例
|
||||
func NewBreakpointContinueUsecase(repo BreakpointContinueRepo) *BreakpointContinueUsecase {
|
||||
return &BreakpointContinueUsecase{repo: repo}
|
||||
}
|
||||
|
||||
// FindOrCreateFile 查找或创建文件记录
|
||||
func (uc *BreakpointContinueUsecase) FindOrCreateFile(ctx context.Context, fileMd5, fileName string, chunkTotal int) (*ExaFile, error) {
|
||||
return uc.repo.FindOrCreateFile(ctx, fileMd5, fileName, chunkTotal)
|
||||
}
|
||||
|
||||
// CreateFileChunk 创建文件切片记录
|
||||
func (uc *BreakpointContinueUsecase) CreateFileChunk(ctx context.Context, fileID uint, fileChunkPath string, fileChunkNumber int) error {
|
||||
return uc.repo.CreateFileChunk(ctx, fileID, fileChunkPath, fileChunkNumber)
|
||||
}
|
||||
|
||||
// DeleteFileChunk 删除文件切片记录
|
||||
func (uc *BreakpointContinueUsecase) DeleteFileChunk(ctx context.Context, fileMd5, filePath string) error {
|
||||
return uc.repo.DeleteFileChunk(ctx, fileMd5, filePath)
|
||||
}
|
||||
Reference in New Issue
Block a user