github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/validator/duration/duration.go (about)

     1  // Copyright (c) 2020-2021, R.I. Pienaar and the Choria Project contributors
     2  //
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package duration
     6  
     7  import (
     8  	"fmt"
     9  	"reflect"
    10  	"time"
    11  )
    12  
    13  // ValidateString validates that input is a valid duration
    14  func ValidateString(input string) (bool, error) {
    15  	_, err := time.ParseDuration(input)
    16  	if err != nil {
    17  		return false, err
    18  	}
    19  
    20  	return true, nil
    21  }
    22  
    23  // ValidateStructField validates a struct field holds a valid duration
    24  func ValidateStructField(value reflect.Value, tag string) (bool, error) {
    25  	if value.Kind() != reflect.String {
    26  		return false, fmt.Errorf("only strings can be Duration validated")
    27  	}
    28  
    29  	return ValidateString(value.String())
    30  }