1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 17:44:05 +08:00

add favor

This commit is contained in:
shaoying 2019-12-23 02:19:04 +08:00
parent a8646cb75e
commit b7a09f2733
7 changed files with 108 additions and 38 deletions

View File

@ -9,8 +9,8 @@ var Index = &ice.Context{Name: "aaa", Help: "认证模块",
Caches: map[string]*ice.Cache{}, Caches: map[string]*ice.Cache{},
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
ice.AAA_ROLE: {Name: "role", Help: "角色", Value: kit.Data()}, ice.AAA_ROLE: {Name: "role", Help: "角色", Value: kit.Data()},
ice.AAA_USER: {Name: "user", Help: "用户", Value: kit.Data("short", "username")}, ice.AAA_USER: {Name: "user", Help: "用户", Value: kit.Data(kit.MDB_SHORT, "username")},
ice.AAA_SESS: {Name: "sess", Help: "会话", Value: kit.Data("short", "uniq", "expire", "720h")}, ice.AAA_SESS: {Name: "sess", Help: "会话", Value: kit.Data(kit.MDB_SHORT, "uniq", "expire", "720h")},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}}, ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},

View File

@ -302,14 +302,14 @@ var Index = &ice.Context{Name: "web", Help: "网页模块",
}}, }},
)}, )},
ice.WEB_SPACE: {Name: "space", Help: "空间站", Value: kit.Data("buffer", 4096, "redial", 3000)}, ice.WEB_SPACE: {Name: "space", Help: "空间站", Value: kit.Data("buffer", 4096, "redial", 3000)},
ice.WEB_STORY: {Name: "story", Help: "故事会", Value: kit.Data("short", "data")}, ice.WEB_STORY: {Name: "story", Help: "故事会", Value: kit.Data(kit.MDB_SHORT, "data")},
ice.WEB_CACHE: {Name: "cache", Help: "缓存", Value: kit.Data( ice.WEB_CACHE: {Name: "cache", Help: "缓存", Value: kit.Data(
"short", "text", "path", "var/file", kit.MDB_SHORT, "text", "path", "var/file",
"store", "var/data", "limit", "30", "least", "10", "store", "var/data", "limit", "30", "least", "10",
)}, )},
ice.WEB_ROUTE: {Name: "route", Help: "路由", Value: kit.Data()}, ice.WEB_ROUTE: {Name: "route", Help: "路由", Value: kit.Data()},
ice.WEB_PROXY: {Name: "proxy", Help: "代理", Value: kit.Data()}, ice.WEB_PROXY: {Name: "proxy", Help: "代理", Value: kit.Data()},
ice.WEB_FAVOR: {Name: "favor", Help: "收藏", Value: kit.Data()}, ice.WEB_FAVOR: {Name: "favor", Help: "收藏", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)},
ice.WEB_SHARE: {Name: "share", Help: "共享", Value: kit.Data()}, ice.WEB_SHARE: {Name: "share", Help: "共享", Value: kit.Data()},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
@ -321,16 +321,20 @@ var Index = &ice.Context{Name: "web", Help: "网页模块",
m.Conf("cli.runtime", "node.name", m.Conf("cli.runtime", "boot.hostname")) m.Conf("cli.runtime", "node.name", m.Conf("cli.runtime", "boot.hostname"))
m.Conf("cli.runtime", "node.type", "server") m.Conf("cli.runtime", "node.type", "server")
m.Rich(ice.WEB_SPACE, nil, map[string]interface{}{ m.Rich(ice.WEB_SPACE, nil, kit.Dict(
"type": "myself", "type", "myself",
"node": m.Conf("cli.runtime", "boot.hostname"), "node", m.Conf("cli.runtime", "boot.hostname"),
"user": m.Conf("cli.runtime", "boot.username"), "user", m.Conf("cli.runtime", "boot.username"),
}) ))
m.Target().Start(m, arg...) m.Target().Start(m, arg...)
}}, }},
ice.WEB_SPACE: {Name: "space", Help: "空间站", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ice.WEB_SPACE: {Name: "space", Help: "空间站", Meta: kit.Dict("exports", []string{"pod", "node"}), List: kit.List(
kit.MDB_INPUT, "text", "name", "pod", "action", "auto",
kit.MDB_INPUT, "button", "value", "查看", "action", "auto",
kit.MDB_INPUT, "button", "value", "返回", "cb", "Last",
), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 { if len(arg) == 0 {
m.Conf(ice.WEB_SPACE, kit.MDB_HASH, func(key string, value map[string]interface{}) { m.Richs(ice.WEB_SPACE, nil, "", func(key string, value map[string]interface{}) {
m.Push(key, value) m.Push(key, value)
}) })
return return
@ -523,14 +527,70 @@ var Index = &ice.Context{Name: "web", Help: "网页模块",
}}, }},
ice.WEB_PROXY: {Name: "proxy", Help: "代理", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ice.WEB_PROXY: {Name: "proxy", Help: "代理", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
}}, }},
ice.WEB_FAVOR: {Name: "favor", Help: "收藏", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ice.WEB_FAVOR: {Name: "favor", Help: "收藏", Meta: kit.Dict("exports", []string{"hot", "favor"}), List: kit.List(
kit.MDB_INPUT, "text", "name", "hot", "action", "auto",
kit.MDB_INPUT, "text", "name", "id", "action", "auto",
kit.MDB_INPUT, "button", "value", "查看", "action", "auto",
kit.MDB_INPUT, "button", "value", "返回", "cb", "Last",
), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 { if len(arg) == 0 {
m.Confm(ice.WEB_SHARE, "hash", func(key string, value map[string]interface{}) { // 收藏门类
m.Push(key, value) m.Richs(ice.WEB_FAVOR, nil, "", func(key string, value map[string]interface{}) {
m.Push("favor", kit.Value(value, "meta.name"))
m.Push("count", kit.Value(value, "meta.count"))
m.Push("time", kit.Value(value, "meta.create_time"))
}) })
return return
} }
if len(arg) > 1 {
switch arg[1] {
case "modify":
// 编辑收藏
m.Richs(ice.WEB_FAVOR, nil, m.Option("hot"), func(key string, value map[string]interface{}) {
m.Grows(ice.WEB_FAVOR, kit.Keys(kit.MDB_HASH, key), "id", m.Option("id"), func(index int, value map[string]interface{}) {
m.Info("modify favor: %s index: %d value: %v->%v", key, index, value[arg[2]], arg[3])
kit.Value(value, arg[2], arg[3])
})
})
return
}
}
// 创建收藏
favor := ""
if m.Richs(ice.WEB_FAVOR, nil, arg[0], func(key string, value map[string]interface{}) {
favor = key
}) == nil {
favor = m.Rich(ice.WEB_FAVOR, nil, kit.Data(kit.MDB_NAME, arg[0]))
m.Info("create favor: %s name: %s", favor, arg[0])
}
if len(arg) == 1 {
// 收藏列表
m.Grows(ice.WEB_FAVOR, kit.Keys(kit.MDB_HASH, favor), "", "", func(index int, value map[string]interface{}) {
m.Push(kit.Format(index), value, []string{"create_time", "id", "type", "name", "text"})
})
return
}
if len(arg) == 2 {
// 收藏详情
m.Grows(ice.WEB_FAVOR, kit.Keys(kit.MDB_HASH, favor), "id", arg[1], func(index int, value map[string]interface{}) {
for k, v := range value {
m.Push("key", k).Push("value", v)
}
m.Sort("key")
})
return
}
// 添加收藏
index := m.Grow(ice.WEB_FAVOR, kit.Keys(kit.MDB_HASH, favor), kit.Dict(
kit.MDB_TYPE, arg[1], kit.MDB_NAME, arg[2], kit.MDB_TEXT, arg[3],
))
m.Info("create favor: %s index: %d name: %s", favor, index, arg[2])
m.Echo("%d", index)
}}, }},
ice.WEB_SHARE: {Name: "share", Help: "共享", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ice.WEB_SHARE: {Name: "share", Help: "共享", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 { if len(arg) == 0 {

View File

@ -20,7 +20,7 @@ var Index = &ice.Context{Name: "chat", Help: "聊天模块",
}}, }},
ice.ICE_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ice.ICE_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmd(ice.CTX_CONFIG, "save", "chat.json", ice.CHAT_GROUP) m.Cmd(ice.CTX_CONFIG, "save", "chat.json", ice.CHAT_GROUP)
m.Cmd(ice.CTX_CONFIG, "save", "web.json", ice.WEB_STORY, ice.WEB_CACHE, ice.WEB_SHARE) m.Cmd(ice.CTX_CONFIG, "save", "web.json", ice.WEB_STORY, ice.WEB_CACHE, ice.WEB_FAVOR, ice.WEB_SHARE)
m.Cmd(ice.CTX_CONFIG, "save", "aaa.json", ice.AAA_ROLE, ice.AAA_USER, ice.AAA_SESS) m.Cmd(ice.CTX_CONFIG, "save", "aaa.json", ice.AAA_ROLE, ice.AAA_USER, ice.AAA_SESS)
}}, }},
@ -114,6 +114,7 @@ var Index = &ice.Context{Name: "chat", Help: "聊天模块",
m.Richs(ice.CHAT_GROUP, prefix, "", func(key string, value map[string]interface{}) { m.Richs(ice.CHAT_GROUP, prefix, "", func(key string, value map[string]interface{}) {
m.Push(key, value["meta"], []string{kit.MDB_KEY, kit.MDB_NAME}) m.Push(key, value["meta"], []string{kit.MDB_KEY, kit.MDB_NAME})
}) })
m.Sort(kit.MDB_NAME)
return return
} }

View File

@ -24,9 +24,9 @@ var Index = &ice.Context{Name: "team", Help: "团队模块",
"exports": []interface{}{"you", "name"}, "exports": []interface{}{"you", "name"},
"detail": []interface{}{"启动", "停止"}, "detail": []interface{}{"启动", "停止"},
}, List: kit.List( }, List: kit.List(
kit.MDB_TYPE, "text", "value", "", "name", "name", kit.MDB_INPUT, "text", "value", "", "name", "name",
kit.MDB_TYPE, "text", "value", "", "name", "type", kit.MDB_INPUT, "text", "value", "", "name", "type",
kit.MDB_TYPE, "button", "value", "创建", "action", "auto", kit.MDB_INPUT, "button", "value", "创建", "action", "auto",
), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { ), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
if len(arg) > 1 { if len(arg) > 1 {
switch arg[1] { switch arg[1] {

View File

@ -38,9 +38,9 @@ var Index = &ice.Context{Name: "wiki", Help: "文档模块",
"chart": {Name: "chart block|chain|table name text [fg bg fs ls p m]", Help: "绘图", Meta: map[string]interface{}{ "chart": {Name: "chart block|chain|table name text [fg bg fs ls p m]", Help: "绘图", Meta: map[string]interface{}{
"display": "inner", "display": "inner",
}, List: kit.List( }, List: kit.List(
kit.MDB_TYPE, "select", "value", "chain", "values", "block chain table", kit.MDB_INPUT, "select", "value", "chain", "values", "block chain table",
kit.MDB_TYPE, "text", "value", "", kit.MDB_INPUT, "text", "value", "",
kit.MDB_TYPE, "button", "value", "生成", kit.MDB_INPUT, "button", "value", "生成",
), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
// 创建类型 // 创建类型
var chart Chart var chart Chart
@ -165,9 +165,9 @@ var Index = &ice.Context{Name: "wiki", Help: "文档模块",
"remote": "true", "display": "inner", "remote": "true", "display": "inner",
"detail": []string{"add", "commit", "history", "share"}, "detail": []string{"add", "commit", "history", "share"},
}, List: kit.List( }, List: kit.List(
kit.MDB_TYPE, "text", "value", "miss.md", "name", "path", kit.MDB_INPUT, "text", "value", "miss.md", "name", "path",
kit.MDB_TYPE, "button", "value", "执行", "action", "auto", kit.MDB_INPUT, "button", "value", "执行", "action", "auto",
kit.MDB_TYPE, "button", "value", "返回", "cb", "Last", kit.MDB_INPUT, "button", "value", "返回", "cb", "Last",
), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { ), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
if len(arg) > 0 { if len(arg) > 0 {
switch arg[0] { switch arg[0] {

View File

@ -57,10 +57,10 @@ var Index = &ice.Context{Name: "tmux", Help: "终端模块",
}}, }},
"buffer": {Name: "buffer", Help: "终端", "buffer": {Name: "buffer", Help: "终端",
List: kit.List( List: kit.List(
kit.MDB_TYPE, "text", "name", "buffer", "action", "auto", kit.MDB_INPUT, "text", "name", "buffer", "action", "auto",
kit.MDB_TYPE, "text", "name", "value", kit.MDB_INPUT, "text", "name", "value",
kit.MDB_TYPE, "button", "value", "查看", "action", "auto", kit.MDB_INPUT, "button", "value", "查看", "action", "auto",
kit.MDB_TYPE, "button", "value", "返回", "cb", "Last", kit.MDB_INPUT, "button", "value", "返回", "cb", "Last",
), ),
Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 { if len(arg) == 0 {
@ -87,11 +87,11 @@ var Index = &ice.Context{Name: "tmux", Help: "终端模块",
m.Cmdy("cli.system", "tmux", "show-buffer", "-b", arg[0]).Set("append") m.Cmdy("cli.system", "tmux", "show-buffer", "-b", arg[0]).Set("append")
}}, }},
"session": {Name: "session", Help: "会话", List: kit.List( "session": {Name: "session", Help: "会话", List: kit.List(
kit.MDB_TYPE, "text", "name", "session", "action", "auto", kit.MDB_INPUT, "text", "name", "session", "action", "auto",
kit.MDB_TYPE, "text", "name", "window", "action", "auto", kit.MDB_INPUT, "text", "name", "window", "action", "auto",
kit.MDB_TYPE, "text", "name", "pane", "action", "auto", kit.MDB_INPUT, "text", "name", "pane", "action", "auto",
kit.MDB_TYPE, "button", "value", "查看", "action", "auto", kit.MDB_INPUT, "button", "value", "查看", "action", "auto",
kit.MDB_TYPE, "button", "value", "返回", "cb", "Last", kit.MDB_INPUT, "button", "value", "返回", "cb", "Last",
), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
prefix := []string{"cli.system", "tmux"} prefix := []string{"cli.system", "tmux"}
if len(arg) > 3 { if len(arg) > 3 {

15
type.go
View File

@ -817,7 +817,8 @@ func (m *Message) Richs(key string, chain interface{}, raw interface{}, cb inter
return nil return nil
} }
switch h := kit.Format(raw); h { h := kit.Format(raw)
switch h {
case "*", "": case "*", "":
// 全部遍历 // 全部遍历
switch cb := cb.(type) { switch cb := cb.(type) {
@ -836,7 +837,7 @@ func (m *Message) Richs(key string, chain interface{}, raw interface{}, cb inter
res, _ = hash[h].(map[string]interface{}) res, _ = hash[h].(map[string]interface{})
default: default:
// 单个查询 // 单个查询
switch kit.Format(kit.Value(meta, "short")) { switch kit.Format(kit.Value(meta, kit.MDB_SHORT)) {
case "", "uniq": case "", "uniq":
default: default:
h = kit.Hashs(h) h = kit.Hashs(h)
@ -849,6 +850,8 @@ func (m *Message) Richs(key string, chain interface{}, raw interface{}, cb inter
switch cb := cb.(type) { switch cb := cb.(type) {
case func(map[string]interface{}): case func(map[string]interface{}):
cb(res) cb(res)
case func(string, map[string]interface{}):
cb(h, res)
} }
} }
return res return res
@ -880,7 +883,7 @@ func (m *Message) Rich(key string, chain interface{}, data interface{}) string {
// 生成键值 // 生成键值
h := "" h := ""
switch short := kit.Format(kit.Value(meta, "short")); short { switch short := kit.Format(kit.Value(meta, kit.MDB_SHORT)); short {
case "": case "":
h = kit.ShortKey(hash, 6) h = kit.ShortKey(hash, 6)
case "uniq": case "uniq":
@ -888,8 +891,12 @@ func (m *Message) Rich(key string, chain interface{}, data interface{}) string {
case "data": case "data":
h = kit.Hashs(kit.Format(data)) h = kit.Hashs(kit.Format(data))
default: default:
if kit.Value(data, "meta") != nil {
h = kit.Hashs(kit.Format(kit.Value(data, "meta."+short)))
} else {
h = kit.Hashs(kit.Format(kit.Value(data, short))) h = kit.Hashs(kit.Format(kit.Value(data, short)))
} }
}
// 添加数据 // 添加数据
hash[h] = data hash[h] = data
@ -913,8 +920,10 @@ func (m *Message) Grow(key string, chain interface{}, data interface{}) int {
id := kit.Int(meta["count"]) + 1 id := kit.Int(meta["count"]) + 1
if kit.Value(data, "meta") != nil { if kit.Value(data, "meta") != nil {
kit.Value(data, "meta.id", id) kit.Value(data, "meta.id", id)
kit.Value(data, "meta.create_time", m.Time())
} else { } else {
kit.Value(data, "id", id) kit.Value(data, "id", id)
kit.Value(data, "create_time", m.Time())
} }
// 添加数据 // 添加数据