This repository has been archived by the owner on May 27, 2021. It is now read-only.
forked from DataDog/dd-trace-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
collection.go
202 lines (176 loc) · 5.69 KB
/
collection.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
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,
}
}