aboutsummaryrefslogtreecommitdiff
path: root/refstore/files/transaction_resolve_target.go
blob: 08f24b1c09513896e9eeb421986aabb23c423315 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)
	}
}