mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 04:17:23 +00:00
Initial commit
This commit is contained in:
48
server/storage/storage.go
Normal file
48
server/storage/storage.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"nysoure/server/model"
|
||||
)
|
||||
|
||||
var (
|
||||
// ErrFileUnavailable is returned when the file is unavailable.
|
||||
// When this error is returned, it is required to delete the file info from the database.
|
||||
ErrFileUnavailable = errors.New("file unavailable")
|
||||
)
|
||||
|
||||
type IStorage interface {
|
||||
// Upload uploads a file to the storage and returns the storage key.
|
||||
Upload(filePath string) (string, error)
|
||||
// Download return the download url of the file with the given storage key.
|
||||
Download(storageKey string) (string, error)
|
||||
// Delete deletes the file with the given storage key.
|
||||
Delete(storageKey string) error
|
||||
// ToString returns the storage configuration as a string.
|
||||
ToString() string
|
||||
// FromString initializes the storage configuration from a string.
|
||||
FromString(config string) error
|
||||
// Type returns the type of the storage.
|
||||
Type() string
|
||||
}
|
||||
|
||||
func NewStorage(s model.Storage) IStorage {
|
||||
switch s.Type {
|
||||
case "s3":
|
||||
r := S3Storage{}
|
||||
err := r.FromString(s.Config)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return &r
|
||||
|
||||
case "local":
|
||||
r := LocalStorage{}
|
||||
err := r.FromString(s.Config)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return &r
|
||||
}
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user