feat: 移动文件后更新 media_info 的 file_path 为新路径
This commit is contained in:
@@ -348,7 +348,7 @@ func (s *ScanService) runMove(ctx context.Context) {
|
|||||||
|
|
||||||
// 执行移动
|
// 执行移动
|
||||||
mv := &mover.Mover{}
|
mv := &mover.Mover{}
|
||||||
mv.MoveAll(jobs, func(doneCount int) {
|
moved := mv.MoveAll(jobs, func(doneCount int) {
|
||||||
s.setProgress(stageMove, doneCount, len(jobs))
|
s.setProgress(stageMove, doneCount, len(jobs))
|
||||||
if ctx.Err() != nil {
|
if ctx.Err() != nil {
|
||||||
return
|
return
|
||||||
@@ -360,6 +360,13 @@ func (s *ScanService) runMove(ctx context.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 更新 media_info 中的 file_path 为新路径
|
||||||
|
if len(moved) > 0 {
|
||||||
|
if err := s.store.UpdateMediaFilePaths(moved); err != nil {
|
||||||
|
fmt.Printf("=== 更新媒体文件路径失败: %v\n", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 移动完成后清空续传记录
|
// 移动完成后清空续传记录
|
||||||
if err := s.store.ClearScanLog(); err != nil {
|
if err := s.store.ClearScanLog(); err != nil {
|
||||||
fmt.Printf("=== 清空续传记录失败: %v\n", err)
|
fmt.Printf("=== 清空续传记录失败: %v\n", err)
|
||||||
|
|||||||
@@ -198,6 +198,27 @@ func (s *Store) ClearScanLog() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateMediaFilePaths 批量更新 media_info 的 file_path。
|
||||||
|
// moved 的 key 是源路径,value 是新路径。
|
||||||
|
func (s *Store) UpdateMediaFilePaths(moved map[string]string) error {
|
||||||
|
if s == nil || s.engine == nil || len(moved) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
sess := s.engine.NewSession()
|
||||||
|
defer sess.Close()
|
||||||
|
if err := sess.Begin(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for oldPath, newPath := range moved {
|
||||||
|
if _, err := sess.Where("file_path = ?", oldPath).
|
||||||
|
Update(&MediaInfo{FilePath: newPath}); err != nil {
|
||||||
|
_ = sess.Rollback()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sess.Commit()
|
||||||
|
}
|
||||||
|
|
||||||
// ============================ 媒体记录的新增/更新 ============================
|
// ============================ 媒体记录的新增/更新 ============================
|
||||||
|
|
||||||
// SaveMedia 保存/更新一条媒体记录:按 MD5 找,有就更新,没有就新增。
|
// SaveMedia 保存/更新一条媒体记录:按 MD5 找,有就更新,没有就新增。
|
||||||
|
|||||||
Reference in New Issue
Block a user