package utils import ( "reflect" "strings" ) func GetCollName(schema interface{}) string { s := reflect.TypeOf(schema) if s.Kind() == reflect.Ptr { s = reflect.TypeOf(schema).Elem() } return strings.ToLower(s.Name()) } func GetPriKey(schema interface{}) string { s := reflect.TypeOf(schema) if s.Kind() == reflect.Ptr { s = reflect.TypeOf(schema).Elem() } var pri string for i := 0; i < s.NumField(); i++ { if s.Field(i).Tag.Get("pri") == "1" { pri = strings.ToLower(s.Field(i).Name) break } } return pri } func FindIndex(schema interface{}) (string, []string){ s := reflect.TypeOf(schema) if s.Kind() == reflect.Ptr { s = reflect.TypeOf(schema).Elem() } var index []string for i := 0; i < s.NumField(); i++ { if s.Field(i).Tag.Get("index") != "" { js := strings.Split(s.Field(i).Tag.Get("json"), ",") if len(js) == 0 { continue } index = append(index, js[0]) } } return strings.ToLower(s.Name()), index }