feat: 将 scanDir 持久化到 app_config 表,移除 localStorage 存储
This commit is contained in:
@@ -71,7 +71,10 @@ type ScanStatus struct {
|
||||
// ============================ 应用级常量 ============================
|
||||
|
||||
// 应用级配置键。目前只存了两个:上次使用的存放目录、色情检测服务是否真的起来了。
|
||||
const ConfigKeyDestDir = "scan.destDir"
|
||||
const (
|
||||
ConfigKeyScanDir = "scan.scanDir"
|
||||
ConfigKeyDestDir = "scan.destDir"
|
||||
)
|
||||
|
||||
// nsfwDetectorReadyKey 记录最近一次扫描时色情检测服务是否真的起来了(python+nudenet 可用)。
|
||||
// 配置开了但检测器没起来(没装 python/模型下载失败等)也能区分出来,前端据此提示。
|
||||
@@ -147,7 +150,13 @@ type ScanService struct {
|
||||
// NewScanService 创建扫描服务。
|
||||
// 注意 store 可以传 nil——数据库打不开时服务照常能用,只是不记录媒体信息。
|
||||
func NewScanService(st *store.Store) *ScanService {
|
||||
return &ScanService{store: st, hub: NewStatusHub(), state: ScanIdle}
|
||||
s := &ScanService{store: st, hub: NewStatusHub(), state: ScanIdle}
|
||||
// 从数据库恢复上次用过的目录,状态接口可以直接返回给前端回填
|
||||
if st != nil {
|
||||
s.rootDir = st.GetConfig(ConfigKeyScanDir)
|
||||
s.destDir = st.GetConfig(ConfigKeyDestDir)
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
// Subscribe 让调用方(通常是 WebSocket 处理器)订阅进度更新。
|
||||
@@ -209,8 +218,11 @@ func (s *ScanService) Start(rootDir, destDir string) error {
|
||||
s.ctx, s.cancel = context.WithCancel(context.Background())
|
||||
s.mu.Unlock()
|
||||
|
||||
// 把存放目录记到数据库里,下次打开页面自动填上,省得用户重敲
|
||||
// 把扫描目录和存放目录记到数据库里,下次打开页面自动填上,省得用户重敲
|
||||
if s.store != nil {
|
||||
if err := s.store.SaveConfig(ConfigKeyScanDir, rootDir); err != nil {
|
||||
fmt.Printf("=== 保存扫描目录配置失败: %v\n", err)
|
||||
}
|
||||
if err := s.store.SaveConfig(ConfigKeyDestDir, destDir); err != nil {
|
||||
fmt.Printf("=== 保存存放目录配置失败: %v\n", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user