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, } }