file_system/internal/api/handlers/multipart_handlers_split.go
2025-12-18 09:34:49 +08:00

46 lines
1.3 KiB
Go

package handlers
import (
"context"
"file-system/internal/domain/repository"
)
// InitMultipartHandler
type InitMultipartHandler struct {
Repo repository.FileRepository
}
func NewInitMultipartHandler(repo repository.FileRepository) *InitMultipartHandler {
return &InitMultipartHandler{Repo: repo}
}
func (h *InitMultipartHandler) Handle(ctx context.Context, cmd InitMultipartCommand) (string, error) {
return h.Repo.CreateMultipartUpload(ctx, cmd.BucketName, cmd.ObjectKey)
}
// UploadPartHandler
type UploadPartHandler struct {
Repo repository.FileRepository
}
func NewUploadPartHandler(repo repository.FileRepository) *UploadPartHandler {
return &UploadPartHandler{Repo: repo}
}
func (h *UploadPartHandler) Handle(ctx context.Context, cmd UploadPartCommand) (string, error) {
return h.Repo.UploadPart(ctx, cmd.BucketName, cmd.ObjectKey, cmd.UploadId, cmd.PartNumber, cmd.Data)
}
// CompleteMultipartHandler
type CompleteMultipartHandler struct {
Repo repository.FileRepository
}
func NewCompleteMultipartHandler(repo repository.FileRepository) *CompleteMultipartHandler {
return &CompleteMultipartHandler{Repo: repo}
}
func (h *CompleteMultipartHandler) Handle(ctx context.Context, cmd CompleteMultipartCommand) (string, error) {
return h.Repo.CompleteMultipartUpload(ctx, cmd.BucketName, cmd.ObjectKey, cmd.UploadId, cmd.Parts)
}