File size: 2,802 Bytes
1c4c66b | 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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | package customer
import (
"errors"
"fmt"
"strings"
"github.com/openmeterio/openmeter/pkg/models"
)
// UpdateAfterDeleteError represents an error when an update is attempted after a delete
var _ error = (*UpdateAfterDeleteError)(nil)
func NewUpdateAfterDeleteError() *UpdateAfterDeleteError {
return &UpdateAfterDeleteError{
err: models.NewGenericConflictError(fmt.Errorf("update after delete")),
}
}
var _ models.GenericError = &UpdateAfterDeleteError{}
type UpdateAfterDeleteError struct {
err error
}
func (e UpdateAfterDeleteError) Error() string {
return e.err.Error()
}
func (e UpdateAfterDeleteError) Unwrap() error {
return e.err
}
// NewKeyConflictError creates a new KeyConflictError
func NewKeyConflictError(namespace, key string) *KeyConflictError {
return &KeyConflictError{
err: models.NewGenericConflictError(fmt.Errorf("key \"%s\" is already used by an another customer in the namespace %s", key, namespace)),
}
}
var _ models.GenericError = &KeyConflictError{}
// KeyConflictError represents an error when a subject key is already associated with a customer
type KeyConflictError struct {
err error
}
func (e KeyConflictError) Error() string {
return e.err.Error()
}
func (e KeyConflictError) Unwrap() error {
return e.err
}
func IsKeyConflictError(err error) bool {
if err == nil {
return false
}
var e *KeyConflictError
return errors.As(err, &e)
}
// NewSubjectKeyConflictError creates a new SubjectKeyConflictError
func NewSubjectKeyConflictError(namespace string, subjectKeys []string) *SubjectKeyConflictError {
return &SubjectKeyConflictError{
err: models.NewGenericConflictError(fmt.Errorf("one or multiple subject keys of [%s] are already associated with an different customer in the namespace %s", strings.Join(subjectKeys, ", "), namespace)),
}
}
var _ models.GenericError = &SubjectKeyConflictError{}
// SubjectKeyConflictError represents an error when a subject key is already associated with a customer
type SubjectKeyConflictError struct {
err error
}
func (e SubjectKeyConflictError) Error() string {
return e.err.Error()
}
func (e SubjectKeyConflictError) Unwrap() error {
return e.err
}
func IsSubjectKeyConflictError(err error) bool {
if err == nil {
return false
}
var e *SubjectKeyConflictError
return errors.As(err, &e)
}
const ErrCodeDeletingCustomerWithActiveSubscriptions models.ErrorCode = "deleting_customer_with_active_subscriptions"
var ErrDeletingCustomerWithActiveSubscriptions = models.NewValidationIssue(
ErrCodeDeletingCustomerWithActiveSubscriptions,
"cannot delete customer with active subscriptions",
)
func NewErrDeletingCustomerWithActiveSubscriptions(subscriptionIDs []string) error {
return ErrDeletingCustomerWithActiveSubscriptions.WithAttr("subscriptions", subscriptionIDs)
}
|