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 }