shithub: furgit

ref: 27ef9a7e1f2589d1a0eeee4cd6d36d1926989cf2
dir: /refstore/files/transaction_resolve_target.go/

View raw version
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)
	}
}