feat(storage): implement provider caching and error logging in asset builder

This commit is contained in:
mlogclub
2026-04-17 11:14:59 +08:00
parent 2aea800db1
commit c4aeea5581
3 changed files with 26 additions and 1 deletions
+16
View File
@@ -7,6 +7,8 @@ import (
"io"
)
var providers = make(map[enums.AssetProvider]FileStorageProvider)
type FileStorageProvider interface {
ProviderType() enums.AssetProvider
Upload(reader io.Reader, key string, info UploadInfo) (*StoredFile, error)
@@ -20,6 +22,20 @@ func GetDefault() (FileStorageProvider, error) {
return NewProvider(config.Current().Storage.Default)
}
func GetProvider(providerType enums.AssetProvider) (FileStorageProvider, error) {
if provider, exists := providers[providerType]; exists {
return provider, nil
}
provider, err := NewProvider(providerType)
if err != nil {
return nil, err
}
providers[providerType] = provider
return provider, nil
}
func NewProvider(provider enums.AssetProvider) (FileStorageProvider, error) {
cfg := config.Current().Storage