github.com/orofarne/hammy@v0.0.0-20130409105742-374fadfd6ecb/src/hammy/couchbase_triggers.go (about) 1 package hammy 2 3 import ( 4 "fmt" 5 "encoding/json" 6 "github.com/couchbaselabs/go-couchbase" 7 "github.com/dustin/gomemcached" 8 ) 9 10 type CouchbaseTriggersGetter struct { 11 Client *couchbase.Client 12 Pool *couchbase.Pool 13 Bucket *couchbase.Bucket 14 } 15 16 func NewCouchbaseTriggersGetter(cfg Config) (*CouchbaseTriggersGetter, error) { 17 tg := new(CouchbaseTriggersGetter) 18 19 c, err := couchbase.Connect(cfg.CouchbaseTriggers.ConnectTo) 20 if err != nil { 21 return nil, err 22 } 23 tg.Client = &c 24 25 p, err := tg.Client.GetPool(cfg.CouchbaseTriggers.Pool) 26 if err != nil { 27 return nil, err 28 } 29 tg.Pool = &p 30 31 b, err := tg.Pool.GetBucket(cfg.CouchbaseTriggers.Bucket) 32 if err != nil { 33 return nil, err 34 } 35 tg.Bucket = b 36 37 return tg, nil 38 } 39 40 func (tg *CouchbaseTriggersGetter) MGet(keys []string) (triggers map[string]string, err error) { 41 ans := tg.Bucket.GetBulk(keys) 42 43 triggers = make(map[string]string) 44 for k, r := range ans { 45 switch r.Status { 46 case gomemcached.SUCCESS: 47 var body string 48 err = json.Unmarshal(r.Body, &body) 49 if err != nil { 50 return 51 } 52 triggers[k] = body 53 case gomemcached.KEY_ENOENT: 54 // nil 55 default: 56 err = fmt.Errorf("%s", r.Error()) 57 return 58 } 59 } 60 61 return 62 }