diff --git a/global/process_test.go b/global/process_test.go index ec024d32..7bf82427 100644 --- a/global/process_test.go +++ b/global/process_test.go @@ -43,3 +43,16 @@ func TestProcessSearch(t *testing.T) { assert.Equal(t, 1, res.Get("page")) assert.Equal(t, 2, res.Get("pagesize")) } + +func TestProcessFind(t *testing.T) { + args := []interface{}{ + "service", + 1, + &gin.Context{}, + } + process := gou.NewProcess("xiang.table.Find", args...) + response := table.ProcessFind(process) + assert.NotNil(t, response) + res := any.Of(response).Map() + assert.Equal(t, any.Of(res.Get("id")).CInt(), 1) +} diff --git a/table/process.go b/table/process.go index 9f80231e..a08dcf0e 100644 --- a/table/process.go +++ b/table/process.go @@ -7,6 +7,7 @@ import ( func init() { // 注册处理器 gou.RegisterProcessHandler("xiang.table.Search", ProcessSearch) + gou.RegisterProcessHandler("xiang.table.Find", ProcessFind) } // ProcessSearch xiang.table.Search @@ -28,3 +29,20 @@ func ProcessSearch(process *gou.Process) interface{} { return gou.NewProcess(api.Process, param, page, pagesize).Run() } + +// ProcessFind xiang.table.Find +// 按主键值查询单条数据, 请求成功返回对应主键的数据记录 +func ProcessFind(process *gou.Process) interface{} { + process.ValidateArgNums(2) + name := process.ArgsString(0) + table := Select(name) + api := table.APIs["find"].ValidateLoop("xiang.table.find") + if process.NumOfArgsIs(3) && api.IsAllow(process.Args[2]) { + return nil + } + + // 参数表 + id := process.Args[1] + param := api.MergeDefaultQueryParam(gou.QueryParam{}, 1) + return gou.NewProcess(api.Process, id, param).Run() +}