This commit is contained in:
2026-07-18 10:52:32 +08:00
parent 2dcafae465
commit b5ef58f434
61 changed files with 1274 additions and 2142 deletions

View File

@@ -10,6 +10,11 @@ import (
var engines = make(map[string]Engine)
var policyEngines = make(map[uint64]Engine)
// InvalidateEngine 清除指定策略的引擎缓存, 下次访问时重新创建
func InvalidateEngine(policyID uint64) {
delete(policyEngines, policyID)
}
func Register(policyType string, engine Engine) {
engines[policyType] = engine
}
@@ -18,14 +23,41 @@ func GetEngine(policy *model.StoragePolicy) (Engine, error) {
if engine, ok := policyEngines[policy.ID]; ok {
return engine, nil
}
engine, ok := engines[policy.Type]
if !ok {
return nil, fmt.Errorf("不支持的存储类型: %s", policy.Type)
}
if policy.Type == "local" && policy.Config.BasePath != "" {
// 根据策略类型创建引擎
var engine Engine
var err error
switch policy.Type {
case "local":
cfg := config.AppConfig.Storage
engine = NewLocalEngineWithCDN(policy.Config.BasePath, cfg.CDNHost, cfg.CDNPathPrefix)
basePath := cfg.LocalBasePath
if policy.Config.BasePath != "" {
basePath = policy.Config.BasePath
}
engine = NewLocalEngineWithCDN(basePath, cfg.CDNHost, cfg.CDNPathPrefix)
case "minio":
engine, err = NewMinIOEngine(
policy.Config.Endpoint,
policy.Config.AccessKey,
policy.Config.SecretKey,
policy.Config.Bucket,
policy.Config.UseSSL,
)
if err != nil {
return nil, fmt.Errorf("创建MinIO引擎失败: %w", err)
}
default:
// 尝试从 engines map 获取(兼容旧注册方式)
var ok bool
engine, ok = engines[policy.Type]
if !ok {
return nil, fmt.Errorf("不支持的存储类型: %s", policy.Type)
}
}
policyEngines[policy.ID] = engine
return engine, nil
}