fix(dbfs): file modified_at should not be updated by ent

This commit is contained in:
Aaron Liu
2025-08-05 15:11:32 +08:00
parent e31a6cbcb3
commit 80b25e88ee
18 changed files with 110 additions and 350 deletions

View File

@@ -3,6 +3,7 @@ package dbfs
import (
"context"
"fmt"
"time"
"github.com/cloudreve/Cloudreve/v4/inventory"
"github.com/cloudreve/Cloudreve/v4/inventory/types"
@@ -100,6 +101,7 @@ func (f *DBFS) PatchMetadata(ctx context.Context, path []*fs.URI, metas ...fs.Me
metadataMap := make(map[string]string)
privateMap := make(map[string]bool)
deleted := make([]string, 0)
updateModifiedAt := false
for _, meta := range metas {
if meta.Remove {
deleted = append(deleted, meta.Key)
@@ -109,6 +111,9 @@ func (f *DBFS) PatchMetadata(ctx context.Context, path []*fs.URI, metas ...fs.Me
if meta.Private {
privateMap[meta.Key] = meta.Private
}
if meta.UpdateModifiedAt {
updateModifiedAt = true
}
}
fc, tx, ctx, err := inventory.WithTx(ctx, f.fileClient)
@@ -128,6 +133,13 @@ func (f *DBFS) PatchMetadata(ctx context.Context, path []*fs.URI, metas ...fs.Me
return fmt.Errorf("failed to remove metadata: %w", err)
}
}
if updateModifiedAt {
if err := fc.UpdateModifiedAt(ctx, target.Model, time.Now()); err != nil {
_ = inventory.Rollback(tx)
return fmt.Errorf("failed to update file modified at: %w", err)
}
}
}
if err := inventory.Commit(tx); err != nil {