Kepler core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

100 lines
2.2 KiB

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
}