package restlet
|
|
|
|
import (
|
|
"database/sql"
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
log "github.com/Sirupsen/logrus"
|
|
|
|
"cygnux.net/kepler/bucket"
|
|
"cygnux.net/kepler/cache"
|
|
"cygnux.net/kepler/config"
|
|
"cygnux.net/kepler/database"
|
|
"cygnux.net/kepler/kv"
|
|
"cygnux.net/kepler/msq"
|
|
)
|
|
|
|
type dummyContext struct {
|
|
Dictionary
|
|
_dbi database.DBI
|
|
_kvi kv.KV
|
|
_cache cache.Cache
|
|
_pub msq.Publisher
|
|
_sub msq.Subscriber
|
|
_cfg config.Config
|
|
_bucketMngr bucket.Manager
|
|
}
|
|
|
|
func (d dummyContext) Schema(name ...string) string {
|
|
return d._dbi.Schema()
|
|
}
|
|
func (d dummyContext) SQL(name ...string) *sql.DB {
|
|
return d._dbi.DB()
|
|
}
|
|
func (d dummyContext) DBI(name ...string) database.DBI {
|
|
return d._dbi
|
|
}
|
|
func (d dummyContext) Chan(string, ...interface{}) error {
|
|
|
|
return fmt.Errorf("not implemented")
|
|
}
|
|
func (d dummyContext) Config() config.Config {
|
|
return d._cfg
|
|
}
|
|
func (d dummyContext) Cache(name ...string) cache.Cache {
|
|
return d._cache
|
|
}
|
|
func (d dummyContext) KV(name ...string) kv.KV {
|
|
return d._kvi
|
|
}
|
|
func (d dummyContext) Publish(topic string, bss ...interface{}) error {
|
|
for _, bs := range bss {
|
|
var ps []byte
|
|
if ss, b := bs.([]byte); b {
|
|
ps = ss
|
|
} else if ss, b := bs.(string); b {
|
|
ps = []byte(ss)
|
|
} else {
|
|
if ss, e := json.Marshal(bs); nil != e {
|
|
return e
|
|
} else {
|
|
ps = ss
|
|
}
|
|
}
|
|
if e := d._pub.Publish(topic, ps); nil != e {
|
|
return e
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (d dummyContext) Bucket(name string) bucket.Bucket {
|
|
return d._bucketMngr.Bucket(name)
|
|
}
|
|
|
|
func NewDummyContext(cfg config.Config) (Context, error) {
|
|
d := &dummyContext{_cfg: cfg}
|
|
var e error
|
|
if d._dbi, e = database.SetupDBI(cfg.Sub("database")); nil != e {
|
|
log.Errorln("Open database failed:> ", e)
|
|
return nil, e
|
|
}
|
|
if d._cache, e = cache.SetupCache(cfg.Sub("cache")); nil != e {
|
|
log.Errorln("Make Cache failed:> ", e)
|
|
return nil, e
|
|
}
|
|
if d._kvi, e = kv.SetupKV(cfg.Sub("kv")); nil != e {
|
|
log.Errorln("Make KVStore failed:> ", e)
|
|
return nil, e
|
|
}
|
|
if d._pub, e = msq.SetupPublisher(cfg.Sub("publish")); nil != e {
|
|
log.Errorln("Make MessagePub failed:> ", e)
|
|
return nil, e
|
|
}
|
|
if d._sub, e = msq.SetupSubscriber(cfg.Sub("subscribe")); nil != e {
|
|
log.Errorln("Make MessageSub failed:> ", e)
|
|
return nil, e
|
|
}
|
|
return d, nil
|
|
}
|