From 10755ac5e252d8cceab853be93f1686dd97c90b3 Mon Sep 17 00:00:00 2001 From: shaoying Date: Thu, 18 Oct 2018 21:52:07 +0800 Subject: [PATCH] tce add mdb.set --- etc/dotsfile/.vimrc | 3 +++ src/contexts/ctx/ctx.go | 54 ++++++++++++++++++++++++++++------------- src/contexts/mdb/mdb.go | 15 ++++++++++++ 3 files changed, 55 insertions(+), 17 deletions(-) diff --git a/etc/dotsfile/.vimrc b/etc/dotsfile/.vimrc index f57b5841..38401118 100644 --- a/etc/dotsfile/.vimrc +++ b/etc/dotsfile/.vimrc @@ -57,6 +57,8 @@ let g:syntastic_quiet_messages = { "regex": [ \ "defined outside __init__", \ "Catching too general exception Exception", \ "Exactly one space required before assignment", + \ "Too many lines in module", + \ "Invalid constant name", \ ] } Plug 'Valloric/YouCompleteMe' @@ -136,6 +138,7 @@ autocmd BufReadPost * normal `" autocmd BufNewFile,BufReadPost *.shy set filetype=shy autocmd BufNewFile,BufReadPost *.shy set commentstring=#%s autocmd BufNewFile,BufReadPost *.conf set filetype=nginx +autocmd BufNewFile,BufReadPost *.go set foldmethod=syntax command! RR wa | source ~/.vimrc |e source ~/.vim_local diff --git a/src/contexts/ctx/ctx.go b/src/contexts/ctx/ctx.go index 94f35bf4..c85a072f 100644 --- a/src/contexts/ctx/ctx.go +++ b/src/contexts/ctx/ctx.go @@ -3013,15 +3013,17 @@ var Index = &Context{Name: "ctx", Help: "模块中心", save := map[string]interface{}{} if action == "load" { f, e := os.Open(which) - m.Assert(e) + if e != nil { + return + } defer f.Close() de := json.NewDecoder(f) de.Decode(&save) } - sort_field := m.Option("sort_field") - sort_order := m.Option("sort_order") + // sort_field := m.Option("sort_field") + // sort_order := m.Option("sort_order") m.BackTrace(func(m *Message) bool { for k, v := range m.target.Configs { switch action { @@ -3093,17 +3095,20 @@ var Index = &Context{Name: "ctx", Help: "模块中心", } m.Meta["append"] = append(m.Meta["append"], k) } - m.Log("fuck", "what %v", fields) switch val := value.(type) { case map[string]interface{}: m.Add("append", "index", "0") for k, v := range val { if len(fields) == 0 || fields[k] { - m.Add("append", k, v) + switch value := v.(type) { + case float64: + m.Add("append", k, fmt.Sprintf("%d", int(value))) + default: + m.Add("append", k, fmt.Sprintf("%v", value)) + } } } - m.Log("fuck", "what %v", m.Meta) case map[string]string: m.Add("append", "index", "0") for k, v := range val { @@ -3151,16 +3156,17 @@ var Index = &Context{Name: "ctx", Help: "模块中心", return all }) - if m.Sort(sort_field, sort_order); m.Has("index") { - for i := 0; i < len(m.Meta["index"]); i++ { - m.Meta["index"][i] = fmt.Sprintf("%d", i+offset) - } - } - if m.Has("select") { - m.Echo(m.Cap(m.Meta["select"][2], m.Meta[m.Meta["select"][1]][m.Optioni("select")])) - } else { - m.Table() - } + m.Table() + // if m.Sort(sort_field, sort_order); m.Has("index") { + // for i := 0; i < len(m.Meta["index"]); i++ { + // m.Meta["index"][i] = fmt.Sprintf("%d", i+offset) + // } + // } + // if m.Has("select") { + // m.Echo(m.Cap(m.Meta["select"][2], m.Meta[m.Meta["select"][1]][m.Optioni("select")])) + // } else { + // m.Table() + // } switch action { case "save": @@ -3456,7 +3462,7 @@ var Index = &Context{Name: "ctx", Help: "模块中心", m.Echo(arg[0], values...) m.Append("format", m.Result(0)) }}, - "select": &Command{Name: "select key value", Form: map[string]int{"order": 2, "limit": 1, "offset": 1}, Help: "选取数据", Hand: func(m *Message, c *Context, key string, arg ...string) { + "select": &Command{Name: "select key value", Form: map[string]int{"order": 2, "limit": 1, "offset": 1, "vertical": 1}, Help: "选取数据", Hand: func(m *Message, c *Context, key string, arg ...string) { msg := m.Spawn() offset := 0 limit := 10 @@ -3482,6 +3488,20 @@ var Index = &Context{Name: "ctx", Help: "模块中心", if m.Set("append").Copy(msg, "append"); m.Has("order") { m.Sort(m.Option("order"), m.Meta["order"][1]) } + if m.Has("vertical") { + msg := m.Spawn() + nrow := len(m.Meta[m.Meta["append"][0]]) + sort.Strings(m.Meta["append"]) + for i := 0; i < nrow; i++ { + for _, k := range m.Meta["append"] { + msg.Add("append", "field", k) + msg.Add("append", "value", m.Meta[k][i]) + } + msg.Add("append", "field", "") + msg.Add("append", "value", "") + } + m.Set("append").Copy(msg, "append") + } m.Table() }}, "import": &Command{Name: "import filename", Help: "导入数据", Hand: func(m *Message, c *Context, key string, arg ...string) { diff --git a/src/contexts/mdb/mdb.go b/src/contexts/mdb/mdb.go index 88f28138..adf64007 100644 --- a/src/contexts/mdb/mdb.go +++ b/src/contexts/mdb/mdb.go @@ -274,6 +274,21 @@ var Index = &ctx.Context{Name: "mdb", Help: "数据中心", }) } }}, + "set": &ctx.Command{Name: "set table [field value] where condition", Help: "查看或选择数据库信息", Form: map[string]int{"where": 1}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) { + if mdb, ok := m.Target().Server.(*MDB); m.Assert(ok) && mdb.DB != nil { + sql := []string{"update", arg[0], "set"} + for i := 1; i < len(arg)-1; i += 2 { + sql = append(sql, fmt.Sprintf("%s='%s'", arg[i], arg[i+1])) + if i < len(arg)-2 { + sql = append(sql, ",") + } + } + sql = append(sql, fmt.Sprintf("where %s", m.Option("where"))) + m.Spawn().Cmd("exec", strings.Join(sql, " ")) + msg := m.Spawn().Cmd("show", arg[0], "where", m.Option("where")) + m.Copy(msg, "result").Copy(msg, "append") + } + }}, }, }