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 { 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, "-") parts := strings.Split(stringValue, "-")
if len(parts) != 2 { if len(parts) != 2 {
return E.New("invalid length of range parts") return E.New("invalid length of range parts")
@@ -41,10 +43,17 @@ func (c *Range) UnmarshalJSON(content []byte) error {
if err != nil { if err != nil {
return err 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") return E.New("invalid range")
} }
*c = Range{int32(from), int32(to)} *c = Range{rangeValue.From, rangeValue.To}
return nil return nil
} }