46 lines
1.3 KiB
Go
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)
|
|
}
|