github.com/profzone/eden-framework@v1.0.10/pkg/validate/validatetpl/crontab.go (about)

     1  package validatetpl
     2  
     3  import (
     4  	"gopkg.in/robfig/cron.v2"
     5  )
     6  
     7  const (
     8  	InvalidCrontabType  = "频率串类型错误"
     9  	InvalidCrontabValue = "无效的频率串"
    10  )
    11  const (
    12  	MinimumCrontabLen = 11
    13  	MaximumCrontabLen = 30
    14  )
    15  
    16  func ValidateCrontab(v interface{}) (bool, string) {
    17  	s, ok := v.(string)
    18  	if !ok {
    19  		return false, InvalidCrontabType
    20  	}
    21  
    22  	if len(s) < MinimumCrontabLen || len(s) > MaximumCrontabLen {
    23  		return false, InvalidCrontabValue
    24  	}
    25  
    26  	if _, err := cron.Parse(s); err != nil {
    27  		return false, InvalidCrontabValue
    28  	}
    29  	return true, ""
    30  }
    31  
    32  func ValidateCrontabOrEmpty(v interface{}) (bool, string) {
    33  	s, ok := v.(string)
    34  	if !ok {
    35  		return false, InvalidCrontabType
    36  	}
    37  
    38  	if len(s) == 0 {
    39  		return true, ""
    40  	}
    41  
    42  	if _, err := cron.Parse(s); err != nil {
    43  		return false, InvalidCrontabValue
    44  	}
    45  	return true, ""
    46  }