feat: opentelemetry for tracing and metrics
This commit is contained in:
@@ -5,24 +5,47 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/sour-is/ev/internal/logz"
|
||||
"github.com/sour-is/ev/pkg/es"
|
||||
"github.com/sour-is/ev/pkg/msgbus"
|
||||
"go.opentelemetry.io/otel/metric/instrument/syncint64"
|
||||
"go.uber.org/multierr"
|
||||
)
|
||||
|
||||
// This file will not be regenerated automatically.
|
||||
//
|
||||
// It serves as dependency injection for your app, add any dependencies you require here.
|
||||
|
||||
type Resolver struct {
|
||||
es *es.EventStore
|
||||
|
||||
Mresolver_posts syncint64.Counter
|
||||
Mresolver_post_added syncint64.Counter
|
||||
Mresolver_post_added_event syncint64.Counter
|
||||
}
|
||||
|
||||
func New(es *es.EventStore) *Resolver {
|
||||
return &Resolver{es}
|
||||
func New(es *es.EventStore) (*Resolver, error) {
|
||||
m := logz.Meter(context.Background())
|
||||
|
||||
var errs error
|
||||
|
||||
Mresolver_posts, err := m.SyncInt64().Counter("resolver_posts")
|
||||
errs = multierr.Append(errs, err)
|
||||
|
||||
Mresolver_post_added, err := m.SyncInt64().Counter("resolver_post_added")
|
||||
errs = multierr.Append(errs, err)
|
||||
|
||||
Mresolver_post_added_event, err := m.SyncInt64().Counter("resolver_post_added")
|
||||
errs = multierr.Append(errs, err)
|
||||
|
||||
return &Resolver{
|
||||
es,
|
||||
Mresolver_posts,
|
||||
Mresolver_post_added,
|
||||
Mresolver_post_added_event,
|
||||
}, errs
|
||||
}
|
||||
|
||||
// Posts is the resolver for the events field.
|
||||
func (r *Resolver) Posts(ctx context.Context, streamID string, paging *PageInput) (*Connection, error) {
|
||||
r.Mresolver_posts.Add(ctx, 1)
|
||||
|
||||
lis, err := r.es.Read(ctx, streamID, paging.GetIdx(0), paging.GetCount(30))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -66,6 +89,8 @@ func (r *Resolver) Posts(ctx context.Context, streamID string, paging *PageInput
|
||||
}
|
||||
|
||||
func (r *Resolver) PostAdded(ctx context.Context, streamID string, after int64) (<-chan *PostEvent, error) {
|
||||
r.Mresolver_post_added.Add(ctx, 1)
|
||||
|
||||
es := r.es.EventStream()
|
||||
if es == nil {
|
||||
return nil, fmt.Errorf("EventStore does not implement streaming")
|
||||
@@ -90,6 +115,8 @@ func (r *Resolver) PostAdded(ctx context.Context, streamID string, after int64)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
r.Mresolver_post_added_event.Add(ctx, int64(len(events)))
|
||||
|
||||
for _, e := range events {
|
||||
m := e.EventMeta()
|
||||
if p, ok := e.(*msgbus.PostEvent); ok {
|
||||
|
||||
Reference in New Issue
Block a user