aboutsummaryrefslogtreecommitdiff
path: root/refstore/files/transaction_resolve_target.go
diff options
context:
space:
mode:
Diffstat (limited to 'refstore/files/transaction_resolve_target.go')
-rw-r--r--refstore/files/transaction_resolve_target.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/refstore/files/transaction_resolve_target.go b/refstore/files/transaction_resolve_target.go
new file mode 100644
index 00000000..08f24b1c
--- /dev/null
+++ b/refstore/files/transaction_resolve_target.go
@@ -0,0 +1,21 @@
+package files
+
+import "fmt"
+
+func (tx *Transaction) resolveTarget(op txOp) (resolvedWriteTarget, error) {
+ switch op.kind {
+ case txCreate:
+ return tx.resolveOrdinaryTarget(op.name, true)
+ case txUpdate, txDelete, txVerify:
+ return tx.resolveOrdinaryTarget(op.name, false)
+ case txCreateSymbolic, txUpdateSymbolic, txDeleteSymbolic, txVerifySymbolic:
+ refState, err := tx.directRead(op.name)
+ if err != nil {
+ return resolvedWriteTarget{}, err
+ }
+
+ return resolvedWriteTarget{name: op.name, loc: tx.store.loosePath(op.name), ref: refState}, nil
+ default:
+ return resolvedWriteTarget{}, fmt.Errorf("refstore/files: unsupported transaction operation %d", op.kind)
+ }
+}