Fix Range

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

View File

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