Skip to content

Commit 14890fe

Browse files
committed
添加时间监控
1 parent 79d2409 commit 14890fe

File tree

5 files changed

+44
-31
lines changed

5 files changed

+44
-31
lines changed

README.md

+5
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,10 @@
1010
- v0.2.0 完成 PostHandler, PutHandler, DeleteHandler
1111
- v0.3.0 支持权限认证,可管理到表和字段的权限
1212

13+
# v0.1
14+
|功能|格式|示例|
15+
|---|---|---|
16+
|[x] 查询数组|"key[]":{},后面是JSONObject,key可省略。 | {"User[]":{"User":{}}},查询一个User数组。这里key和Table名都是User,User会被提取出来,即 {"User":{"id", ...}} 会被转化为 {"id", ...},如果要进一步提取User中的id,可以把User[]改为User-id[] |
17+
1318

1419

core/context.go

-24
This file was deleted.

db/sqlparser.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,22 @@ func (o *SQLParseObject) parseListQuery(fieldMap map[string]interface{}) error {
7070
case "page":
7171
o.page = int(value.(float64))
7272
logger.Debugf("parseListQuery table:%s, page: %d", o.table, o.page)
73-
case "size":
73+
case "count":
7474
o.limit = int(value.(float64))
7575
logger.Debugf("parseListQuery table:%s, size: %d", o.table, o.limit)
7676
default:
77-
if err := o.parseObject(field, value.(map[string]interface{})); err != nil {
78-
return err
77+
if _, ok := AllTable[field]; ok {
78+
if err := o.parseObject(field, value.(map[string]interface{})); err != nil {
79+
return err
80+
}
81+
} else {
82+
logger.Warnf("请求数据拼写有误? key: %s", field)
7983
}
8084
}
8185
}
86+
if len(o.table) == 0 {
87+
return fmt.Errorf("请求列表数据处理失败,未发现可用表名 %v", fieldMap)
88+
}
8289
o.withPage = o.page > 0 && o.limit > 0
8390
return nil
8491
}

handler/getHandler.go

+17-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"io/ioutil"
99
"net/http"
1010
"strings"
11+
"time"
1112
)
1213

1314
func GetHandler(w http.ResponseWriter, r *http.Request) {
@@ -44,27 +45,38 @@ type SQLParseContext struct {
4445
resp map[string]interface{}
4546
waitKeys map[string]bool
4647
completedKeys map[string]bool
48+
time map[string]int64
4749
end bool
4850
}
4951

5052
func NewSQLParseContext(bodyMap map[string]interface{}) *SQLParseContext {
5153
logger.Debugf("NewSQLParseContext %v", bodyMap)
52-
return &SQLParseContext{req: bodyMap, resp: make(map[string]interface{}), waitKeys: make(map[string]bool), completedKeys: make(map[string]bool)}
54+
return &SQLParseContext{
55+
req: bodyMap,
56+
resp: make(map[string]interface{}),
57+
waitKeys: make(map[string]bool),
58+
completedKeys: make(map[string]bool),
59+
time: make(map[string]int64),
60+
}
5361
}
5462

5563
func (c *SQLParseContext) getResponse() map[string]interface{} {
56-
for key, _ := range c.req {
64+
startTime := time.Now().Nanosecond()
65+
for key := range c.req {
5766
if !c.completedKeys[key] {
5867
c.parseResponse(key)
5968
if c.end {
6069
return c.resp
6170
}
6271
}
6372
}
73+
c.resp["time"] = fmt.Sprintf("%dms|%v", (time.Now().Nanosecond()-startTime)/1000000, c.time)
6474
return c.resp
6575
}
6676

6777
func (c *SQLParseContext) parseResponse(key string) {
78+
startTime := time.Now().UnixNano()
79+
6880
c.waitKeys[key] = true
6981
logger.Debugf("开始解析 %s", key)
7082
if c.req[key] == nil {
@@ -97,9 +109,10 @@ func (c *SQLParseContext) parseResponse(key string) {
97109
}
98110
}
99111
c.waitKeys[key] = false
100-
//log.Println("get:query table: ", key, ", fields: ", fields)
112+
c.time[key] = time.Now().UnixNano() - startTime
101113
}
102114

115+
// 查询已知结果
103116
func (c *SQLParseContext) queryResp(queryString string) interface{} {
104117
var paths []string
105118
qs := strings.TrimSpace(queryString)
@@ -134,5 +147,5 @@ func (c *SQLParseContext) End(code int, msg string) {
134147
c.resp["code"] = code
135148
c.resp["msg"] = msg
136149
c.end = true
137-
logger.Debugf("发生错误,终止请求,code: %d, msg: %s", code, msg)
150+
logger.Errorf("发生错误,终止处理, code: %d, msg: %s", code, msg)
138151
}

logger/logger.go

+12
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,24 @@ func Infof(format string, v ...interface{}) {
4242
}
4343
log.Printf("Info "+format, v...)
4444
}
45+
4546
func Warn(msg string) {
4647
if WARN < level {
4748
return
4849
}
4950
log.Println("Warn", msg)
5051
}
52+
53+
func Warnf(format string, v ...interface{}) {
54+
if WARN < level {
55+
return
56+
}
57+
log.Printf("Warn "+format, v...)
58+
}
59+
5160
func Error(msg string) {
5261
log.Println("Error", msg)
5362
}
63+
func Errorf(format string, v ...interface{}) {
64+
log.Printf("Error "+format, v...)
65+
}

0 commit comments

Comments
 (0)