Fix Range

This commit is contained in:
Sergei Maklagin
2025-06-15 22:21:58 +03:00
parent 52b71c6f00
commit ae9e7aa5f4

View File

@@ -24,27 +24,36 @@ func (c *Range) MarshalJSON() ([]byte, error) {
} }
func (c *Range) UnmarshalJSON(content []byte) error { func (c *Range) UnmarshalJSON(content []byte) error {
var rangeValue struct {
From int32 `json:"from"`
To int32 `json:"to"`
}
var stringValue string var stringValue string
err := json.Unmarshal(content, &stringValue) err := json.Unmarshal(content, &stringValue)
if err != nil { if err == nil {
return err parts := strings.Split(stringValue, "-")
if len(parts) != 2 {
return E.New("invalid length of range parts")
}
from, err := strconv.ParseInt(parts[0], 10, 32)
if err != nil {
return err
}
to, err := strconv.ParseInt(parts[1], 10, 32)
if err != nil {
return err
}
rangeValue.From, rangeValue.To = int32(from), int32(to)
} else {
err := json.Unmarshal(content, &rangeValue)
if err != nil {
return err
}
} }
parts := strings.Split(stringValue, "-") if rangeValue.From > rangeValue.To {
if len(parts) != 2 {
return E.New("invalid length of range parts")
}
from, err := strconv.ParseInt(parts[0], 10, 32)
if err != nil {
return err
}
to, err := strconv.ParseInt(parts[1], 10, 32)
if err != nil {
return err
}
if from > to {
return E.New("invalid range") return E.New("invalid range")
} }
*c = Range{int32(from), int32(to)} *c = Range{rangeValue.From, rangeValue.To}
return nil return nil
} }