errors.go raw

   1  package errors
   2  
   3  import (
   4  	"errors"
   5  	"fmt"
   6  )
   7  
   8  var (
   9  	errValidation     = errors.New("Missing required parameters")
  10  	errService        = errors.New("service configuration failed")
  11  	errResponseTarget = errors.New("Unexpected response type received")
  12  	errResponse       = errors.New("Server error Response")
  13  	errProcess        = errors.New("Error while")
  14  	errTypeMismatch   = errors.New("Type mismatch error")
  15  	errInvalid        = errors.New("Invalid input error")
  16  	errNotFound       = errors.New("Resource not found")
  17  	errMultipleData   = errors.New("Returned resources list instead single resource")
  18  )
  19  
  20  func ValidationError(key string) error {
  21  	return fmt.Errorf("%w: [%s ]", errValidation, key)
  22  }
  23  
  24  func ServiceError(service string) error {
  25  	return fmt.Errorf("%s %w", service, errService)
  26  }
  27  
  28  func ServiceConfigError(service string, err error) error {
  29  	return fmt.Errorf("%s %w: %w", service, errService, err)
  30  }
  31  
  32  func ResponseTargetError(key string) error {
  33  	return fmt.Errorf("%w: '%s'", errResponseTarget, key)
  34  }
  35  
  36  func APIResponseError(err string) error {
  37  	return fmt.Errorf("%w - %s", errResponse, err)
  38  }
  39  
  40  func processError(service, process, id string, err error) error {
  41  	return fmt.Errorf("%w %s %s: %w: {key: '%s'}", errProcess, process, service, err, id)
  42  }
  43  
  44  func CreateError(service, id string, err error) error {
  45  	return processError(service, "creating", id, err)
  46  }
  47  
  48  func UpdateError(service, id string, err error) error {
  49  	return processError(service, "updating", id, err)
  50  }
  51  
  52  func PartialUpdateError(service, id string, err error) error {
  53  	return processError(service, "partial updating", id, err)
  54  }
  55  
  56  func ReadError(service, id string, err error) error {
  57  	return processError(service, "reading", id, err)
  58  }
  59  
  60  func DeleteError(service, id string, err error) error {
  61  	return processError(service, "deleting", id, err)
  62  }
  63  
  64  func ListError(service, uri string, err error) error {
  65  	return processError(service, "listing", uri, err)
  66  }
  67  
  68  func MigrateError(service, uri string, err error) error {
  69  	return processError(service, "migrating", uri, err)
  70  }
  71  
  72  func TypeMismatchError(expected, found string) error {
  73  	return fmt.Errorf("%w: { expected: '%s', found: '%s' }", errTypeMismatch, expected, found)
  74  }
  75  
  76  func UnknownDataError(key, found string, data []string) error {
  77  	return fmt.Errorf("%w: { key: '%s', value: '%s', valid_values: %s }", errInvalid, key, found, data)
  78  }
  79  
  80  func ResourceTypeNotFoundError(resourceName, resourceType, key string) error {
  81  	return fmt.Errorf("%w: { name: '%s', type: '%s', key:'%s'}", errNotFound, resourceName, resourceType, key)
  82  }
  83  
  84  func MultipleResourceFoundError(service, id string) error {
  85  	return processError(service, "reading", id, errMultipleData)
  86  }
  87