utils.go 944 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package schema
  2. import (
  3. "reflect"
  4. "regexp"
  5. "strings"
  6. )
  7. func parseTagSetting(tags reflect.StructTag) map[string]string {
  8. setting := map[string]string{}
  9. for _, value := range strings.Split(tags.Get("gorm"), ";") {
  10. if value != "" {
  11. v := strings.Split(value, ":")
  12. k := strings.TrimSpace(strings.ToUpper(v[0]))
  13. if len(v) >= 2 {
  14. setting[k] = strings.Join(v[1:], ":")
  15. } else {
  16. setting[k] = k
  17. }
  18. }
  19. }
  20. return setting
  21. }
  22. func checkTruth(val string) bool {
  23. if strings.ToLower(val) == "false" {
  24. return false
  25. }
  26. return true
  27. }
  28. func toColumns(val string) (results []string) {
  29. if val != "" {
  30. for _, v := range strings.Split(val, ",") {
  31. results = append(results, strings.TrimSpace(v))
  32. }
  33. }
  34. return
  35. }
  36. func removeSettingFromTag(tag reflect.StructTag, name string) reflect.StructTag {
  37. return reflect.StructTag(regexp.MustCompile(`(?i)(gorm:.*?)(`+name+`:.*?)(;|("))`).ReplaceAllString(string(tag), "${1}${4}"))
  38. }