init push
This commit is contained in:
56
internal/domain/file_manager/storage.go
Normal file
56
internal/domain/file_manager/storage.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package filemanager
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io"
|
||||
"time"
|
||||
)
|
||||
|
||||
type PutObjectInput struct {
|
||||
ObjectKey string
|
||||
ContentType string
|
||||
SizeBytes int64
|
||||
Body io.Reader
|
||||
Metadata map[string]string
|
||||
}
|
||||
|
||||
type PresignPutObjectInput struct {
|
||||
ObjectKey string
|
||||
ContentType string
|
||||
SizeBytes int64
|
||||
Metadata map[string]string
|
||||
TTL time.Duration
|
||||
}
|
||||
|
||||
type PresignedPutObject struct {
|
||||
Bucket string
|
||||
ObjectKey string
|
||||
Method string
|
||||
URL string
|
||||
Headers map[string]string
|
||||
ExpiresAt time.Time
|
||||
}
|
||||
|
||||
type ObjectMetadata struct {
|
||||
Bucket string
|
||||
ObjectKey string
|
||||
ETag string
|
||||
VersionID string
|
||||
SizeBytes int64
|
||||
LastModified *time.Time
|
||||
ContentType string
|
||||
}
|
||||
|
||||
type ObjectStorage interface {
|
||||
EnsureBucket(ctx context.Context) error
|
||||
PutObject(ctx context.Context, input PutObjectInput) (ObjectMetadata, error)
|
||||
DeleteObject(ctx context.Context, objectKey string) error
|
||||
HeadObject(ctx context.Context, objectKey string) (ObjectMetadata, error)
|
||||
PresignPutObject(ctx context.Context, input PresignPutObjectInput) (PresignedPutObject, error)
|
||||
PresignGetObject(ctx context.Context, objectKey string, ttl time.Duration) (string, error)
|
||||
}
|
||||
|
||||
type ObjectTaggingStorage interface {
|
||||
PutObjectTagging(ctx context.Context, objectKey string, tags map[string]string) error
|
||||
DeleteObjectTaggingKeys(ctx context.Context, objectKey string, keys []string) error
|
||||
}
|
||||
Reference in New Issue
Block a user