From de3fb44d272c02f40aaea93cb5dc9869b8119728 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 29 Sep 2021 09:17:05 +0800 Subject: [PATCH] + Delete --- global/process_test.go | 35 +++++++++++++++++++++++++++++++++++ table/process.go | 16 ++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/global/process_test.go b/global/process_test.go index 8e26ed07..8e0b67c1 100644 --- a/global/process_test.go +++ b/global/process_test.go @@ -8,6 +8,7 @@ import ( "github.com/yaoapp/gou" "github.com/yaoapp/kun/any" "github.com/yaoapp/xiang/table" + "github.com/yaoapp/xun/capsule" ) func TestProcessPing(t *testing.T) { @@ -72,4 +73,38 @@ func TestProcessSave(t *testing.T) { response := table.ProcessSave(process) assert.NotNil(t, response) assert.True(t, any.Of(response).IsInt()) + + id := any.Of(response).CInt() + + // 清空数据 + capsule.Query().Table("service").Where("id", id).Delete() +} + +func TestProcessDelete(t *testing.T) { + args := []interface{}{ + "service", + map[string]interface{}{ + "name": "腾讯黑岩云主机", + "short_name": "高性能云主机", + "kind_id": 3, + "manu_id": 1, + "price_options": []string{"按月订阅"}, + }, + } + process := gou.NewProcess("xiang.table.Save", args...) + response := table.ProcessSave(process) + assert.NotNil(t, response) + assert.True(t, any.Of(response).IsInt()) + + id := any.Of(response).CInt() + args = []interface{}{ + "service", + id, + } + process = gou.NewProcess("xiang.table.Delete", args...) + response = table.ProcessDelete(process) + assert.Nil(t, response) + + // 清空数据 + capsule.Query().Table("service").Where("id", id).Delete() } diff --git a/table/process.go b/table/process.go index 583a03e8..4d6a8312 100644 --- a/table/process.go +++ b/table/process.go @@ -9,6 +9,7 @@ func init() { gou.RegisterProcessHandler("xiang.table.Search", ProcessSearch) gou.RegisterProcessHandler("xiang.table.Find", ProcessFind) gou.RegisterProcessHandler("xiang.table.Save", ProcessSave) + gou.RegisterProcessHandler("xiang.table.Delete", ProcessDelete) } // ProcessSearch xiang.table.Search @@ -60,3 +61,18 @@ func ProcessSave(process *gou.Process) interface{} { } return gou.NewProcess(api.Process, process.Args[1]).Run() } + +// ProcessDelete xiang.table.Delete +// 删除指定主键值的数据记录, 请求成功返回null +func ProcessDelete(process *gou.Process) interface{} { + process.ValidateArgNums(2) + name := process.ArgsString(0) + table := Select(name) + api := table.APIs["delete"].ValidateLoop("xiang.table.delete") + if process.NumOfArgsIs(3) && api.IsAllow(process.Args[2]) { + return nil + } + + id := process.Args[1] + return gou.NewProcess(api.Process, id).Run() +}