Blame view

src/utils/utils.go 1.03 KB
3592dfd3   zhangqijia   重构models, 索引唯一索引
1
2
3
  package utils
  
  import (
5d9cf01c   zhangqijia   plugin 热更
4
5
  	"crypto/md5"
  	"encoding/hex"
3592dfd3   zhangqijia   重构models, 索引唯一索引
6
7
8
9
  	"reflect"
  	"strings"
  )
  
f7f4beb5   zhangqijia   新增grpc平滑关闭,修复crea...
10
  func GetSchemaType(schema interface{}) reflect.Type  {
1584eb4b   zhangqijia   修复创建唯一索引的bug
11
12
13
14
  	s := reflect.TypeOf(schema)
  	if s.Kind() == reflect.Ptr {
  		s = reflect.TypeOf(schema).Elem()
  	}
f7f4beb5   zhangqijia   新增grpc平滑关闭,修复crea...
15
16
  	return s
  }
1584eb4b   zhangqijia   修复创建唯一索引的bug
17
  
f7f4beb5   zhangqijia   新增grpc平滑关闭,修复crea...
18
19
  func GetCollName(schema interface{}) string {
  	return strings.ToLower(GetSchemaType(schema).Name())
1584eb4b   zhangqijia   修复创建唯一索引的bug
20
  }
3592dfd3   zhangqijia   重构models, 索引唯一索引
21
  
1584eb4b   zhangqijia   修复创建唯一索引的bug
22
  func GetPriKey(schema interface{}) string {
f7f4beb5   zhangqijia   新增grpc平滑关闭,修复crea...
23
24
  	s := GetSchemaType(schema)
  
1584eb4b   zhangqijia   修复创建唯一索引的bug
25
26
27
28
29
30
31
32
33
34
35
  	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){
f7f4beb5   zhangqijia   新增grpc平滑关闭,修复crea...
36
  	s := GetSchemaType(schema)
1584eb4b   zhangqijia   修复创建唯一索引的bug
37
38
  
  	var index []string
3592dfd3   zhangqijia   重构models, 索引唯一索引
39
40
41
42
43
44
  	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
  			}
1584eb4b   zhangqijia   修复创建唯一索引的bug
45
  			index = append(index, js[0])
3592dfd3   zhangqijia   重构models, 索引唯一索引
46
47
  		}
  	}
1584eb4b   zhangqijia   修复创建唯一索引的bug
48
  	return strings.ToLower(s.Name()), index
5d9cf01c   zhangqijia   plugin 热更
49
50
51
52
53
54
  }
  
  func Md5V(str string) string  {
  	h := md5.New()
  	h.Write([]byte(str))
  	return hex.EncodeToString(h.Sum(nil))
3592dfd3   zhangqijia   重构models, 索引唯一索引
55
  }