package service
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"database/sql"
|
|
_ "github.com/lib/pq"
|
|
"cygnux/kepler/restlet"
|
|
"cygnux/kepler/cache"
|
|
"cygnux/kepler/kv"
|
|
"cygnux/kepler/configs"
|
|
)
|
|
|
|
type RequestContext struct {
|
|
_request *http.Request
|
|
_service *KeplerService
|
|
}
|
|
|
|
func NewRequestContext(service *KeplerService, request *http.Request) *RequestContext {
|
|
ctx := &RequestContext{_service: service }
|
|
ctx._request = request
|
|
return ctx
|
|
}
|
|
|
|
func (self *RequestContext) SQL() *sql.DB {
|
|
return self._service.db
|
|
}
|
|
|
|
func (self *RequestContext) Schema() string {
|
|
return self._service.db_schema
|
|
}
|
|
|
|
func (self *RequestContext) Cache() cache.Cache {
|
|
return self._service.cache
|
|
}
|
|
|
|
|
|
func (self *RequestContext) Config() configs.ParameterOption {
|
|
return self._service.params
|
|
}
|
|
|
|
|
|
func (self *RequestContext) Chan(topic string, objs ...interface{}) error {
|
|
if len(objs) < 1 {
|
|
return errors.New("No Object!")
|
|
}
|
|
taskObj := restlet.TaskObject{Queue:topic, Params:objs}
|
|
self._service._task_chan <- taskObj
|
|
return nil
|
|
}
|
|
|
|
func (self *RequestContext) Publish(topic string, datas ...[]byte) error {
|
|
for _, x := range datas {
|
|
e := self._service.mpub.Publish(topic, x)
|
|
if nil != e {
|
|
return e
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (self *RequestContext) KV() kv.KV {
|
|
return self._service.kvstore
|
|
}
|
|
|
|
|
|
func (self *RequestContext) Request() *http.Request {
|
|
return self._request
|
|
}
|
|
|
|
type TaskContext struct {
|
|
_service *KeplerService
|
|
}
|
|
|
|
func NewTaskContext(service *KeplerService) *TaskContext {
|
|
ctx := &TaskContext{_service: service }
|
|
return ctx
|
|
}
|
|
|
|
func (self *TaskContext) SQL() *sql.DB {
|
|
return self._service.db
|
|
}
|
|
|
|
func (self *TaskContext) Schema() string {
|
|
return self._service.db_schema
|
|
}
|
|
|
|
func (self *TaskContext) Chan(topic string, objs ...interface{}) error {
|
|
if len(objs) < 1 {
|
|
return errors.New("No Object!")
|
|
}
|
|
taskObj := restlet.TaskObject{Queue:topic, Params:objs}
|
|
self._service._task_chan <- taskObj
|
|
return nil
|
|
}
|
|
|
|
func (self *TaskContext) Publish(topic string, datas ...[]byte) error {
|
|
for _, x := range datas {
|
|
e := self._service.mpub.Publish(topic, x)
|
|
if nil != e {
|
|
return e
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
|
|
func (self *TaskContext) Cache() cache.Cache {
|
|
return self._service.cache
|
|
}
|
|
|
|
func (self *TaskContext) Config() configs.ParameterOption {
|
|
return self._service.params
|
|
}
|
|
|
|
func (self *TaskContext) KV() kv.KV {
|
|
return self._service.kvstore
|
|
}
|