/
tables.go
56 lines (47 loc) · 1.26 KB
/
tables.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package mysql
import (
"context"
_ "embed"
"fmt"
"strings"
"time"
"github.com/Andrew-M-C/trpc-go-utils/tracelog"
"trpc.group/trpc-go/trpc-go/log"
)
type dbItem struct {
ID int64 `db:"id"`
// 常规参数
Name string `db:"name"`
Host string `db:"host"`
Weight int32 `db:"weight"`
JSONDesc string `db:"json_desc"`
// 时间参数
DeregisterTimeMsec int64 `db:"deregister_time_msec"`
UpdateTimeMsec int64 `db:"update_time_msec"`
CreateTime time.Time `db:"create_time"`
UpdateTime time.Time `db:"update_time"`
}
func (dbItem) TableName() string {
return "t_service_registry"
}
//go:embed tables.sql
var createTableStatements string
func initTable(ctx context.Context) error {
if internal.tableCreated {
return nil
}
proxy := getMySQLClientProxy()
statements := strings.Split(createTableStatements, ";")
for i, s := range statements {
if s = strings.TrimSpace(s); s == "" {
continue
}
if _, err := proxy.Exec(ctx, s); err != nil {
log.ErrorContextf(ctx, "执行 sql 失败, 错误信息: %v, SQL 语句: %v", err, tracelog.ToJSON(s))
return fmt.Errorf("执行初始化命令 #%d 失败: %w", i, err)
}
}
log.TraceContextf(ctx, "mysql 注册表初始化成功")
internal.tableCreated = true
return nil
}