mirror of
https://github.com/get-drexa/drive.git
synced 2026-02-02 14:41:18 +00:00
fix: add ResolveRenameOp to handle directory renames
RenameNode was calling Resolve() which generated blob keys for directories that don't have blobs, causing 'key not found' errors. Added ResolveRenameOp to BlobKeyResolver interface: - FlatKeyResolver returns nil (UUIDs don't change on rename) - HierarchicalKeyResolver returns move op for files and directories This allows directory renames to work correctly with flat storage, and leverages os.Rename for atomic directory moves with hierarchical. Co-authored-by: Ona <no-reply@ona.com>
This commit is contained in:
@@ -20,6 +20,12 @@ type BlobKeyResolver interface {
|
||||
// Returns ErrBulkMoveRequiresSameParent if nodes don't all share the same parent.
|
||||
// Returns nil, nil if no blob moves are needed (e.g., flat key storage where keys are UUIDs).
|
||||
ResolveBulkMoveOps(ctx context.Context, db bun.IDB, nodes []*Node, newParentID uuid.UUID) ([]BlobMoveOp, error)
|
||||
|
||||
// ResolveRenameOp returns the blob move operation needed when renaming a node.
|
||||
// Returns nil, nil if no blob move is needed (e.g., flat key storage where keys are UUIDs).
|
||||
// For hierarchical storage, returns a single move op for both files and directories
|
||||
// (os.Rename handles directories atomically).
|
||||
ResolveRenameOp(ctx context.Context, db bun.IDB, node *Node, newName string) (*BlobMoveOp, error)
|
||||
}
|
||||
|
||||
type DeletionPlan struct {
|
||||
|
||||
Reference in New Issue
Block a user