Files
backend/pkg/errs/errs.go
T
2026-07-15 22:42:31 +08:00

85 lines
3.3 KiB
Go

package errs
import (
"errors"
"fmt"
)
var (
ErrTopicEmpty = errors.New("topic is empty")
ErrRedisClientNotInitialized = errors.New("redis client not initialized")
ErrInvalidConsumeMode = errors.New("invalid consume mode")
ErrInvalidErrorAction = errors.New("invalid error action")
ErrRabbitMQConnectFailed = errors.New("failed to connect to RabbitMQ")
ErrRabbitMQOpenChannelFailed = errors.New("failed to open a channel")
ErrRabbitMQDeclareExchange = errors.New("failed to declare an exchange")
ErrRabbitMQPublishMessage = errors.New("failed to publish a message")
ErrRabbitMQDeclareQueue = errors.New("failed to declare a queue")
ErrRabbitMQBindQueue = errors.New("failed to bind a queue")
ErrRabbitMQRegisterConsumer = errors.New("failed to register a consumer")
ErrRabbitMQConsumerChanClosed = errors.New("consumer channel closed")
ErrInitRedisClient = errors.New("init redis client failed")
ErrElasticAddressesEmpty = errors.New("elasticsearch addresses are empty")
ErrElasticPingFailed = errors.New("ping elasticsearch failed")
ErrElasticClientNil = errors.New("elasticsearch client is nil")
ErrElasticIndexOrDocID = errors.New("index or docID is empty")
ErrElasticIndexEmpty = errors.New("index is empty")
ErrElasticStatus = errors.New("elasticsearch status error")
ErrElasticStatusDecode = errors.New("elasticsearch status decode error")
ErrElasticStatusWithBody = errors.New("elasticsearch status body error")
ErrMinioInitClient = errors.New("init minio client failed")
ErrMinioCheckBucketExists = errors.New("check bucket exists failed")
ErrMinioCreateBucket = errors.New("create bucket failed")
ErrMinioUploadFile = errors.New("upload file failed")
ErrMinioGeneratePresigned = errors.New("generate presigned url failed")
ErrConsulKVGet = errors.New("consul kv get failed")
ErrConsulKVSet = errors.New("consul kv set failed")
ErrConsulBindTargetNil = errors.New("consul config bind target is nil")
ErrConsulClientNil = errors.New("consul client is nil")
ErrConsulBindTargetInvalid = errors.New("consul config bind target must be pointer to struct")
ErrConsulFieldMustBeFunc = errors.New("field must be func()T")
ErrConsulFieldTagInvalid = errors.New("field tag invalid")
ErrConsulTagEmpty = errors.New("empty tag")
ErrConsulTagMissingKey = errors.New("missing key")
ErrConsulUnsupportedType = errors.New("unsupported type")
ErrInvalidGormLogLevel = errors.New("invalid gorm log level")
ErrPostgresOptionsNil = errors.New("postgres options is nil")
ErrLockAcquireFailed = errors.New("failed to acquire lock")
ErrLockNotHeld = errors.New("lock not held or expired")
)
func Wrap(base error, cause error) error {
if cause == nil {
return base
}
return fmt.Errorf("%w: %v", base, cause)
}
func Detail(base error, detail string) error {
if detail == "" {
return base
}
return fmt.Errorf("%w: %s", base, detail)
}
func Detailf(base error, format string, args ...any) error {
return Detail(base, fmt.Sprintf(format, args...))
}
func DetailWrap(base error, detail string, cause error) error {
if cause == nil {
return Detail(base, detail)
}
if detail == "" {
return Wrap(base, cause)
}
return fmt.Errorf("%w: %s: %v", base, detail, cause)
}