mirror of
https://github.com/krau/SaveAny-Bot.git
synced 2026-07-07 23:21:23 +08:00
refactor: refactor task logic for better scalability (#76)
* refactor: a big refactor. wip * refactor: port handle file * refactor: place all handlers * fix: task info nil pointer * feat: enhance task progress tracking and context management * feat: cancel task * feat: stream mode * feat: silent mode * feat: dir cmd * refactor: remove unused old file * feat: rule cmd * feat: handle silent mode * feat: batch task * fix: batch task progress and temp file cleanup * refactor: update file creation and cleanup methods for better resource management * feat: add save command with silent mode handling * feat: message link * feat: update message prompts to include file count in storage selection * feat: slient save links * refactor: reduce dup code * feat: rule type * feat: chose dir * feat: refactor file handling and storage rules, improve error handling and logging * feat: rule mode * feat: telegraph pics * fix: tphpics nil pointer and inaccurate dirpath * feat: silent save telegraph * feat: add suffix to avoid file overwrite * feat: new storage telegram * chore: tidy go mod
This commit is contained in:
@@ -4,16 +4,17 @@ import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
|
||||
"github.com/krau/SaveAny-Bot/types"
|
||||
storenum "github.com/krau/SaveAny-Bot/pkg/enums/storage"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
var storageFactories = map[types.StorageType]func(cfg *BaseConfig) (StorageConfig, error){
|
||||
types.StorageTypeLocal: createStorageConfig(&LocalStorageConfig{}),
|
||||
types.StorageTypeAlist: createStorageConfig(&AlistStorageConfig{}),
|
||||
types.StorageTypeWebdav: createStorageConfig(&WebdavStorageConfig{}),
|
||||
types.StorageTypeMinio: createStorageConfig(&MinioStorageConfig{}),
|
||||
var storageFactories = map[storenum.StorageType]func(cfg *BaseConfig) (StorageConfig, error){
|
||||
storenum.Local: createStorageConfig(&LocalStorageConfig{}),
|
||||
storenum.Alist: createStorageConfig(&AlistStorageConfig{}),
|
||||
storenum.Webdav: createStorageConfig(&WebdavStorageConfig{}),
|
||||
storenum.Minio: createStorageConfig(&MinioStorageConfig{}),
|
||||
storenum.Telegram: createStorageConfig(&TelegramStorageConfig{}),
|
||||
}
|
||||
|
||||
func createStorageConfig(configType StorageConfig) func(cfg *BaseConfig) (StorageConfig, error) {
|
||||
@@ -41,8 +42,12 @@ func LoadStorageConfigs(v *viper.Viper) ([]StorageConfig, error) {
|
||||
if !baseCfg.Enable {
|
||||
continue
|
||||
}
|
||||
st, err := storenum.ParseStorageType(baseCfg.Type)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid storage type %s for %s: %w", baseCfg.Type, baseCfg.Name, err)
|
||||
}
|
||||
|
||||
factory, ok := storageFactories[types.StorageType(baseCfg.Type)]
|
||||
factory, ok := storageFactories[st]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unsupported storage type: %s", baseCfg.Type)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user