feat(backend): book list/detail/delete with embedded progress + cache cleanup
This commit is contained in:
@@ -3,6 +3,7 @@ package config
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
@@ -39,6 +40,14 @@ func Load() (*Config, error) {
|
||||
if secret == "" {
|
||||
return nil, fmt.Errorf("JWT_SECRET required")
|
||||
}
|
||||
// resolveDir: macOS 开发机上 /var、/tmp 是指向 /private 的软链,
|
||||
// 启动时解析一次才能让 root_path 前缀校验对上真实路径;目录不存在/出错则保留原值(Docker 路径不受影响)
|
||||
resolveDir := func(dir string) string {
|
||||
if r, e := filepath.EvalSymlinks(dir); e == nil {
|
||||
return r
|
||||
}
|
||||
return dir
|
||||
}
|
||||
return &Config{
|
||||
Addr: env("ADDR", ":8080"),
|
||||
DatabaseURL: env("DATABASE_URL", ""),
|
||||
@@ -46,8 +55,8 @@ func Load() (*Config, error) {
|
||||
JWTSecret: []byte(secret),
|
||||
AdminUser: env("ADMIN_USER", ""),
|
||||
AdminPassword: env("ADMIN_PASSWORD", ""),
|
||||
BooksDir: env("BOOKS_DIR", "/data/books"),
|
||||
CacheDir: env("CACHE_DIR", "/data/cache"),
|
||||
BooksDir: resolveDir(env("BOOKS_DIR", "/data/books")),
|
||||
CacheDir: resolveDir(env("CACHE_DIR", "/data/cache")),
|
||||
ScanInterval: time.Duration(scanSec) * time.Second,
|
||||
UploadMaxMB: uploadMB,
|
||||
}, nil
|
||||
|
||||
Reference in New Issue
Block a user