pikpak: optimize file move by removing unnecessary readMetaData() call

Previously, the code relied on calling `readMetaData()` after every file move operation.
This introduced an unnecessary API call and potentially impacted performance.

This change removes the redundant `readMetaData()` call, improving efficiency.
This commit is contained in:
wiserain 2024-07-08 18:16:00 +09:00 committed by GitHub
parent 6507770014
commit cdcf0e5cb8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1049,7 +1049,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
return nil, err return nil, err
} }
// Create temporary object // Create temporary object - still missing id, mimeType, gcid, md5sum
dstObj, dstLeaf, dstParentID, err := f.createObject(ctx, remote, srcObj.modTime, srcObj.size) dstObj, dstLeaf, dstParentID, err := f.createObject(ctx, remote, srcObj.modTime, srcObj.size)
if err != nil { if err != nil {
return nil, err return nil, err
@ -1061,7 +1061,12 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
return nil, err return nil, err
} }
} }
// Manually update info of moved object to save API calls
dstObj.id = srcObj.id dstObj.id = srcObj.id
dstObj.mimeType = srcObj.mimeType
dstObj.gcid = srcObj.gcid
dstObj.md5sum = srcObj.md5sum
dstObj.hasMetaData = true
if srcLeaf != dstLeaf { if srcLeaf != dstLeaf {
// Rename // Rename
@ -1069,16 +1074,7 @@ func (f *Fs) Move(ctx context.Context, src fs.Object, remote string) (fs.Object,
if err != nil { if err != nil {
return nil, fmt.Errorf("move: couldn't rename moved file: %w", err) return nil, fmt.Errorf("move: couldn't rename moved file: %w", err)
} }
err = dstObj.setMetaData(info) return dstObj, dstObj.setMetaData(info)
if err != nil {
return nil, err
}
} else {
// Update info
err = dstObj.readMetaData(ctx)
if err != nil {
return nil, fmt.Errorf("move: couldn't locate moved file: %w", err)
}
} }
return dstObj, nil return dstObj, nil
} }