+ Find Hook
This commit is contained in:
parent
b1b21a527b
commit
77047aa3e4
7 changed files with 75 additions and 13 deletions
|
|
@ -20,5 +20,5 @@ func check(t *testing.T) {
|
||||||
for key := range gou.Flows {
|
for key := range gou.Flows {
|
||||||
keys = append(keys, key)
|
keys = append(keys, key)
|
||||||
}
|
}
|
||||||
assert.Equal(t, 12, len(keys))
|
assert.Equal(t, 14, len(keys))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,8 @@ func ProcessSearch(process *gou.Process) interface{} {
|
||||||
// ProcessFind xiang.table.Find
|
// ProcessFind xiang.table.Find
|
||||||
// 按主键值查询单条数据, 请求成功返回对应主键的数据记录
|
// 按主键值查询单条数据, 请求成功返回对应主键的数据记录
|
||||||
func ProcessFind(process *gou.Process) interface{} {
|
func ProcessFind(process *gou.Process) interface{} {
|
||||||
process.ValidateArgNums(2)
|
|
||||||
|
process.ValidateArgNums(1)
|
||||||
name := process.ArgsString(0)
|
name := process.ArgsString(0)
|
||||||
table := Select(name)
|
table := Select(name)
|
||||||
api := table.APIs["find"].ValidateLoop("xiang.table.find")
|
api := table.APIs["find"].ValidateLoop("xiang.table.find")
|
||||||
|
|
@ -65,10 +66,19 @@ func ProcessFind(process *gou.Process) interface{} {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Before Hook
|
||||||
|
process.Args = table.Before(table.Hooks.BeforeFind, process.Args)
|
||||||
|
|
||||||
// 参数表
|
// 参数表
|
||||||
|
process.ValidateArgNums(2)
|
||||||
id := process.Args[1]
|
id := process.Args[1]
|
||||||
param := api.MergeDefaultQueryParam(gou.QueryParam{}, 1)
|
param := api.MergeDefaultQueryParam(gou.QueryParam{}, 1)
|
||||||
return gou.NewProcess(api.Process, id, param).Run()
|
|
||||||
|
// 查询数据
|
||||||
|
response := gou.NewProcess(api.Process, id, param).Run()
|
||||||
|
|
||||||
|
// After Hook
|
||||||
|
return table.After(table.Hooks.AfterFind, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProcessSave xiang.table.Save
|
// ProcessSave xiang.table.Save
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package table
|
package table
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
|
@ -27,11 +26,6 @@ func init() {
|
||||||
query.Load(config.Conf)
|
query.Load(config.Conf)
|
||||||
flow.LoadFrom(filepath.Join(config.Conf.Root, "flows", "hooks"), "hooks.")
|
flow.LoadFrom(filepath.Join(config.Conf.Root, "flows", "hooks"), "hooks.")
|
||||||
Load(config.Conf)
|
Load(config.Conf)
|
||||||
|
|
||||||
for name := range gou.Flows {
|
|
||||||
fmt.Println(name)
|
|
||||||
}
|
|
||||||
fmt.Println(filepath.Join(config.Conf.Root, "tables", "hooks"))
|
|
||||||
}
|
}
|
||||||
func TestTableProcessSearch(t *testing.T) {
|
func TestTableProcessSearch(t *testing.T) {
|
||||||
|
|
||||||
|
|
@ -86,11 +80,19 @@ func TestTableProcessFind(t *testing.T) {
|
||||||
1,
|
1,
|
||||||
&gin.Context{},
|
&gin.Context{},
|
||||||
}
|
}
|
||||||
process := gou.NewProcess("xiang.table.Find", args...)
|
response := gou.NewProcess("xiang.table.Find", args...).Run()
|
||||||
response := ProcessFind(process)
|
|
||||||
assert.NotNil(t, response)
|
assert.NotNil(t, response)
|
||||||
res := any.Of(response).Map()
|
res := any.Of(response).Map()
|
||||||
assert.Equal(t, any.Of(res.Get("id")).CInt(), 1)
|
assert.Equal(t, 1, any.Of(res.Get("id")).CInt())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTableProcessFindWithHook(t *testing.T) {
|
||||||
|
args := []interface{}{"hooks.find"}
|
||||||
|
response := gou.NewProcess("xiang.table.Find", args...).Run()
|
||||||
|
assert.NotNil(t, response)
|
||||||
|
res := any.Of(response).Map()
|
||||||
|
assert.Equal(t, 1, any.Of(res.Get("id")).CInt())
|
||||||
|
assert.Equal(t, float64(100), res.Get("after"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTableProcessSave(t *testing.T) {
|
func TestTableProcessSave(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -48,5 +48,5 @@ func check(t *testing.T) {
|
||||||
for key := range Tables {
|
for key := range Tables {
|
||||||
keys = append(keys, key)
|
keys = append(keys, key)
|
||||||
}
|
}
|
||||||
assert.Equal(t, 5, len(keys))
|
assert.Equal(t, 6, len(keys))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
13
tests/flows/hooks/after_find.flow.json
Normal file
13
tests/flows/hooks/after_find.flow.json
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"label": "After:Find",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "After:Find",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"name": "结果",
|
||||||
|
"process": "xiang.helper.MapSet",
|
||||||
|
"args": ["{{$in.0}}", "after", 100]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"output": "{{$res.结果}}"
|
||||||
|
}
|
||||||
7
tests/flows/hooks/before_find.flow.json
Normal file
7
tests/flows/hooks/before_find.flow.json
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"label": "Before:Find",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Before:Find",
|
||||||
|
"nodes": [],
|
||||||
|
"output": [1, {}]
|
||||||
|
}
|
||||||
30
tests/tables/hooks/find.tab.json
Normal file
30
tests/tables/hooks/find.tab.json
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"name": "云服务库",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"decription": "云服务库",
|
||||||
|
"bind": { "model": "service" },
|
||||||
|
"hooks": {
|
||||||
|
"before:find": "flows.hooks.before_find",
|
||||||
|
"after:find": "flows.hooks.after_find"
|
||||||
|
},
|
||||||
|
"apis": {},
|
||||||
|
"columns": {},
|
||||||
|
"filters": {},
|
||||||
|
"list": {
|
||||||
|
"primary": "id",
|
||||||
|
"layout": {
|
||||||
|
"columns": [{ "name": "ID", "width": 6 }],
|
||||||
|
"filters": []
|
||||||
|
},
|
||||||
|
"actions": {}
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"primary": "id",
|
||||||
|
"layout": {
|
||||||
|
"fieldset": [{ "columns": [{ "name": "ID", "width": 6 }] }]
|
||||||
|
},
|
||||||
|
"actions": { "cancel": {} }
|
||||||
|
},
|
||||||
|
"insert": {},
|
||||||
|
"view": {}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue