Blame view

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