File size: 1,268 Bytes
16cdcb7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | package subscription
import (
"fmt"
)
type PatchConflictError struct {
Msg string
}
func (e *PatchConflictError) Error() string {
return fmt.Sprintf("patch conflict error: %s", e.Msg)
}
type PatchValidationError struct {
Msg string
}
func (e *PatchValidationError) Error() string {
return fmt.Sprintf("patch validation error: %s", e.Msg)
}
type PatchForbiddenError struct {
Msg string
}
func (e *PatchForbiddenError) Error() string {
return fmt.Sprintf("patch forbidden error: %s", e.Msg)
}
type PatchOperation string
const (
PatchOperationAdd PatchOperation = "add"
PatchOperationRemove PatchOperation = "remove"
PatchOperationUnschedule PatchOperation = "unschedule"
PatchOperationStretch PatchOperation = "stretch"
)
func (o PatchOperation) Validate() error {
switch o {
case PatchOperationAdd, PatchOperationRemove, PatchOperationStretch, PatchOperationUnschedule:
return nil
default:
return fmt.Errorf("invalid patch operation: %s", o)
}
}
type Patch interface {
AppliesToSpec
Validate() error
Op() PatchOperation
Path() SpecPath
}
type AnyValuePatch interface {
ValueAsAny() any
}
type ValuePatch[T any] interface {
Patch
Value() T
AnyValuePatch
}
func ToApplies(p Patch, _ int) AppliesToSpec {
return p
}
|