// Code generated by "stringer -type=OperationType operation_type.go"; DO NOT EDIT.

package backend

import "strconv"

func _() {
	// An "invalid array index" compiler error signifies that the constant values have changed.
	// Re-run the stringer command to generate them again.
	var x [1]struct{}
	_ = x[OperationTypeInvalid-0]
	_ = x[OperationTypeRefresh-1]
	_ = x[OperationTypePlan-2]
	_ = x[OperationTypeApply-3]
}

const _OperationType_name = "OperationTypeInvalidOperationTypeRefreshOperationTypePlanOperationTypeApply"

var _OperationType_index = [...]uint8{0, 20, 40, 57, 75}

func (i OperationType) String() string {
	if i >= OperationType(len(_OperationType_index)-1) {
		return "OperationType(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _OperationType_name[_OperationType_index[i]:_OperationType_index[i+1]]
}
