ipld-eth-server/vendor/gopkg.in/DataDog/dd-trace-go.v1/contrib/globalsign/mgo/collection.go

203 lines
5.7 KiB
Go
Raw Normal View History

2018-09-04 16:35:38 +00:00
package mgo
import (
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
)
// Collection provides a mgo.Collection along with
// data used for APM Tracing.
type Collection struct {
*mgo.Collection
cfg mongoConfig
}
// Create invokes and traces Collection.Create
func (c *Collection) Create(info *mgo.CollectionInfo) error {
span := newChildSpanFromContext(c.cfg)
err := c.Collection.Create(info)
span.Finish(tracer.WithError(err))
return err
}
// DropCollection invokes and traces Collection.DropCollection
func (c *Collection) DropCollection() error {
span := newChildSpanFromContext(c.cfg)
err := c.Collection.DropCollection()
span.Finish(tracer.WithError(err))
return err
}
// EnsureIndexKey invokes and traces Collection.EnsureIndexKey
func (c *Collection) EnsureIndexKey(key ...string) error {
span := newChildSpanFromContext(c.cfg)
err := c.Collection.EnsureIndexKey(key...)
span.Finish(tracer.WithError(err))
return err
}
// EnsureIndex invokes and traces Collection.EnsureIndex
func (c *Collection) EnsureIndex(index mgo.Index) error {
span := newChildSpanFromContext(c.cfg)
err := c.Collection.EnsureIndex(index)
span.Finish(tracer.WithError(err))
return err
}
// DropIndex invokes and traces Collection.DropIndex
func (c *Collection) DropIndex(key ...string) error {
span := newChildSpanFromContext(c.cfg)
err := c.Collection.DropIndex(key...)
span.Finish(tracer.WithError(err))
return err
}
// DropIndexName invokes and traces Collection.DropIndexName
func (c *Collection) DropIndexName(name string) error {
span := newChildSpanFromContext(c.cfg)
err := c.Collection.DropIndexName(name)
span.Finish(tracer.WithError(err))
return err
}
// Indexes invokes and traces Collection.Indexes
func (c *Collection) Indexes() (indexes []mgo.Index, err error) {
span := newChildSpanFromContext(c.cfg)
indexes, err = c.Collection.Indexes()
span.Finish(tracer.WithError(err))
return indexes, err
}
// Insert invokes and traces Collectin.Insert
func (c *Collection) Insert(docs ...interface{}) error {
span := newChildSpanFromContext(c.cfg)
err := c.Collection.Insert(docs...)
span.Finish(tracer.WithError(err))
return err
}
// Find invokes and traces Collection.Find
func (c *Collection) Find(query interface{}) *Query {
return &Query{
Query: c.Collection.Find(query),
cfg: c.cfg,
}
}
// FindId invokes and traces Collection.FindId
func (c *Collection) FindId(id interface{}) *Query { // nolint
return &Query{
Query: c.Collection.FindId(id),
cfg: c.cfg,
}
}
// Count invokes and traces Collection.Count
func (c *Collection) Count() (n int, err error) {
span := newChildSpanFromContext(c.cfg)
n, err = c.Collection.Count()
span.Finish(tracer.WithError(err))
return n, err
}
// Bulk creates a trace ready wrapper around Collection.Bulk
func (c *Collection) Bulk() *Bulk {
return &Bulk{
Bulk: c.Collection.Bulk(),
cfg: c.cfg,
}
}
// NewIter invokes and traces Collection.Iter
func (c *Collection) NewIter(session *mgo.Session, firstBatch []bson.Raw, cursorId int64, err error) *Iter { // nolint
return &Iter{
Iter: c.Collection.NewIter(session, firstBatch, cursorId, err),
cfg: c.cfg,
}
}
// Pipe invokes and traces Collection.Pipe
func (c *Collection) Pipe(pipeline interface{}) *Pipe {
return &Pipe{
Pipe: c.Collection.Pipe(pipeline),
cfg: c.cfg,
}
}
// Update invokes and traces Collection.Update
func (c *Collection) Update(selector interface{}, update interface{}) error {
span := newChildSpanFromContext(c.cfg)
err := c.Collection.Update(selector, update)
span.Finish(tracer.WithError(err))
return err
}
// UpdateId invokes and traces Collection.UpdateId
func (c *Collection) UpdateId(id interface{}, update interface{}) error { // nolint
span := newChildSpanFromContext(c.cfg)
err := c.Collection.UpdateId(id, update)
span.Finish(tracer.WithError(err))
return err
}
// UpdateAll invokes and traces Collection.UpdateAll
func (c *Collection) UpdateAll(selector interface{}, update interface{}) (info *mgo.ChangeInfo, err error) {
span := newChildSpanFromContext(c.cfg)
info, err = c.Collection.UpdateAll(selector, update)
span.Finish(tracer.WithError(err))
return info, err
}
// Upsert invokes and traces Collection.Upsert
func (c *Collection) Upsert(selector interface{}, update interface{}) (info *mgo.ChangeInfo, err error) {
span := newChildSpanFromContext(c.cfg)
info, err = c.Collection.Upsert(selector, update)
span.Finish(tracer.WithError(err))
return info, err
}
// UpsertId invokes and traces Collection.UpsertId
func (c *Collection) UpsertId(id interface{}, update interface{}) (info *mgo.ChangeInfo, err error) { // nolint
span := newChildSpanFromContext(c.cfg)
info, err = c.Collection.UpsertId(id, update)
span.Finish(tracer.WithError(err))
return info, err
}
// Remove invokes and traces Collection.Remove
func (c *Collection) Remove(selector interface{}) error {
span := newChildSpanFromContext(c.cfg)
err := c.Collection.Remove(selector)
span.Finish(tracer.WithError(err))
return err
}
// RemoveId invokes and traces Collection.RemoveId
func (c *Collection) RemoveId(id interface{}) error { // nolint
span := newChildSpanFromContext(c.cfg)
err := c.Collection.RemoveId(id)
span.Finish(tracer.WithError(err))
return err
}
// RemoveAll invokes and traces Collection.RemoveAll
func (c *Collection) RemoveAll(selector interface{}) (info *mgo.ChangeInfo, err error) {
span := newChildSpanFromContext(c.cfg)
info, err = c.Collection.RemoveAll(selector)
span.Finish(tracer.WithError(err))
return info, err
}
// Repair invokes and traces Collection.Repair
func (c *Collection) Repair() *Iter {
span := newChildSpanFromContext(c.cfg)
iter := c.Collection.Repair()
span.Finish()
return &Iter{
Iter: iter,
cfg: c.cfg,
}
}