backend/pkg/fileStorage/domain/usecase/file_storage.go

30 lines
1.3 KiB
Go
Raw Normal View History

2025-11-12 06:50:35 +00:00
package usecase
import (
"context"
"io"
"time"
)
// FileStorageUseCase ...
type FileStorageUseCase interface {
// Download 下載指定路徑的對象並返回其內容
Download(ctx context.Context, objectPath string) ([]byte, error)
// Move 將對象從一個路徑移動到另一個指定路徑
Move(ctx context.Context, objectPath string, destinationPath string) error
// Delete 刪除指定路徑的對象
Delete(ctx context.Context, objectPath string) error
// Exists 檢查指定路徑的對象是否存在
Exists(ctx context.Context, objectPath string) (bool, error)
// DeleteDirectory 刪除指定路徑的文件夾及其內容
DeleteDirectory(ctx context.Context, directoryPath string) error
// UploadWithTTL 從 io.Reader 上傳文件到指定路徑,並設置自訂過期時間
UploadWithTTL(ctx context.Context, content io.Reader, objectPath string, expires *time.Time) error
// UploadFromData 直接從數據上傳文件到指定路徑,可指定 MIME 類型
UploadFromData(ctx context.Context, data []byte, objectPath string, contentType string) error
// UploadFromPath 將本地文件從指定路徑上傳到對象存儲路徑
UploadFromPath(ctx context.Context, localFilePath string, objectPath string) error
// GetPublicURL 獲取對象的完整公共 URL
GetPublicURL(ctx context.Context, objectPath string) string
}