dcbot/internal/domain/error.go

101 lines
1.9 KiB
Go

package domain
import (
"errors"
"fmt"
)
var ErrNothingToUpdate = errors.New("nothing to update")
type TranslatableError interface {
error
Slug() string
Params() map[string]any
}
type RequiredError struct {
Field string
}
var _ TranslatableError = RequiredError{}
func (e RequiredError) Error() string {
return fmt.Sprintf("%s can't be blank", e.Field)
}
func (e RequiredError) Slug() string {
return "required"
}
func (e RequiredError) Params() map[string]any {
return map[string]any{
"Field": e.Field,
}
}
type GreaterEqualThanError struct {
Field string
Threshold int
}
var _ TranslatableError = GreaterEqualThanError{}
func (e GreaterEqualThanError) Error() string {
return fmt.Sprintf("%s must be no less than %d", e.Field, e.Threshold)
}
func (e GreaterEqualThanError) Slug() string {
return "greater-equal-than"
}
func (e GreaterEqualThanError) Params() map[string]any {
return map[string]any{
"Field": e.Field,
"Threshold": e.Threshold,
}
}
type LessEqualThanError struct {
Field string
Threshold int
}
var _ TranslatableError = LessEqualThanError{}
func (e LessEqualThanError) Error() string {
return fmt.Sprintf("%s must be no no greater than %d", e.Field, e.Threshold)
}
func (e LessEqualThanError) Slug() string {
return "less-equal-than"
}
func (e LessEqualThanError) Params() map[string]any {
return map[string]any{
"Field": e.Field,
"Threshold": e.Threshold,
}
}
type LengthTooShortError struct {
Field string
Threshold int
}
var _ TranslatableError = LengthTooShortError{}
func (e LengthTooShortError) Error() string {
return fmt.Sprintf("%s: the length must be no less than %d", e.Field, e.Threshold)
}
func (e LengthTooShortError) Slug() string {
return "length-too-short"
}
func (e LengthTooShortError) Params() map[string]any {
return map[string]any{
"Field": e.Field,
"Threshold": e.Threshold,
}
}