1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-25 16:58:06 +08:00

vps syn 0.1.0 同步0.1.0修改

This commit is contained in:
shaoying 2017-11-25 16:20:54 +08:00
parent 5679201960
commit cb38843d82

View File

@ -8,7 +8,6 @@ import ( // {{{
"errors"
"fmt"
"log"
)
// }}}
@ -19,25 +18,11 @@ type MDB struct {
}
func (mdb *MDB) Begin(m *ctx.Message, arg ...string) ctx.Server { // {{{
mdb.Configs["source"] = &ctx.Config{Name: "source", Value: "", Help: "数据库参数"}
mdb.Configs["driver"] = &ctx.Config{Name: "driver", Value: "", Help: "数据库驱动"}
return mdb
}
// }}}
func (mdb *MDB) Start(m *ctx.Message, arg ...string) bool { // {{{
m.Capi("nsource", 1)
defer m.Capi("nsource", -1)
if len(arg) > 0 {
m.Conf("source", arg[0])
if len(arg) > 1 {
m.Conf("driver", arg[1])
}
}
if m.Conf("source") == "" || m.Conf("driver") == "" {
return true
}
@ -45,15 +30,9 @@ func (mdb *MDB) Start(m *ctx.Message, arg ...string) bool { // {{{
db, e := sql.Open(m.Conf("driver"), m.Conf("source"))
m.Assert(e)
mdb.db = db
defer mdb.db.Close()
log.Println(mdb.Name, "open:", m.Conf("driver"), m.Conf("source"))
defer log.Println(mdb.Name, "close:", m.Conf("driver"), m.Conf("source"))
for _, p := range m.Meta["prepare"] {
_, e := db.Exec(p)
m.Assert(e)
}
m.Log("info", "%s: open %s %s", mdb.Name, m.Conf("driver"), m.Conf("source"))
m.Capi("nsource", 1)
return true
}
@ -61,7 +40,17 @@ func (mdb *MDB) Start(m *ctx.Message, arg ...string) bool { // {{{
// }}}
func (mdb *MDB) Spawn(c *ctx.Context, m *ctx.Message, arg ...string) ctx.Server { // {{{
c.Caches = map[string]*ctx.Cache{}
c.Configs = map[string]*ctx.Config{}
c.Configs = map[string]*ctx.Config{
"source": &ctx.Config{Name: "source", Value: "", Help: "数据库参数"},
"driver": &ctx.Config{Name: "driver", Value: "", Help: "数据库驱动"},
}
if len(arg) > 0 {
m.Conf("source", arg[0])
if len(arg) > 1 {
m.Conf("driver", arg[1])
}
}
s := new(MDB)
s.Context = c
@ -70,6 +59,13 @@ func (mdb *MDB) Spawn(c *ctx.Context, m *ctx.Message, arg ...string) ctx.Server
// }}}
func (mdb *MDB) Exit(m *ctx.Message, arg ...string) bool { // {{{
if mdb.db != nil && m.Target == mdb.Context {
m.Log("info", "%s: close %s %s", mdb.Name, m.Conf("driver"), m.Conf("source"))
m.Capi("nsource", -1)
mdb.db.Close()
mdb.db = nil
}
return true
}
@ -81,15 +77,11 @@ var Index = &ctx.Context{Name: "mdb", Help: "内存数据库",
},
Configs: map[string]*ctx.Config{},
Commands: map[string]*ctx.Command{
"open": &ctx.Command{Name: "open [source [driver]]", Help: "打开数据库",
Options: map[string]string{
"prepare": "打开数据库时自动执行的语句",
},
Hand: func(c *ctx.Context, m *ctx.Message, key string, arg ...string) string {
m.Start("db"+m.Cap("nsource"), arg...) // {{{
return ""
// }}}
}},
"open": &ctx.Command{Name: "open name [source [driver]]", Help: "打开数据库", Hand: func(c *ctx.Context, m *ctx.Message, key string, arg ...string) string {
m.Start(arg[0], arg[1:]...) // {{{
return ""
// }}}
}},
"exec": &ctx.Command{Name: "exec sql [arg]", Help: "执行SQL语句",
Appends: map[string]string{
"LastInsertId": "最后插入元组的标识",