Select Git revision
telemetry_middleware.go
telemetry_middleware.go 5.12 KiB
// Code generated by gowrap. DO NOT EDIT.
// template: ../../../assets/templates/middleware/telemetry
// gowrap: http://github.com/hexdigest/gowrap
package middleware
//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/members -i Members -t ../../../assets/templates/middleware/telemetry -o telemetry_middleware.go -l ""
import (
"context"
"git.perx.ru/perxis/perxis-go/pkg/members"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
)
// telemetryMiddleware implements members.Members interface instrumented with opentracing spans
type telemetryMiddleware struct {
members.Members
_instance string
_spanDecorator func(span trace.Span, params, results map[string]interface{})
}
// TelemetryMiddleware returns telemetryMiddleware
func TelemetryMiddleware(base members.Members, instance string, spanDecorator ...func(span trace.Span, params, results map[string]interface{})) telemetryMiddleware {
d := telemetryMiddleware{
Members: base,
_instance: instance,
}
if len(spanDecorator) > 0 && spanDecorator[0] != nil {
d._spanDecorator = spanDecorator[0]
}
return d
}
// Get implements members.Members
func (_d telemetryMiddleware) Get(ctx context.Context, orgId string, userId string) (role members.Role, err error) {
ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Members.Get")
defer func() {
if _d._spanDecorator != nil {
_d._spanDecorator(_span, map[string]interface{}{
"ctx": ctx,
"orgId": orgId,
"userId": userId}, map[string]interface{}{
"role": role,
"err": err})
} else if err != nil {
_span.RecordError(err)
_span.SetAttributes(attribute.String("event", "error"))
_span.SetAttributes(attribute.String("message", err.Error()))
}
_span.End()
}()
return _d.Members.Get(ctx, orgId, userId)
}
// ListMembers implements members.Members
func (_d telemetryMiddleware) ListMembers(ctx context.Context, orgId string) (members []*members.Member, err error) {
ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Members.ListMembers")
defer func() {
if _d._spanDecorator != nil {
_d._spanDecorator(_span, map[string]interface{}{
"ctx": ctx,
"orgId": orgId}, map[string]interface{}{
"members": members,
"err": err})
} else if err != nil {
_span.RecordError(err)
_span.SetAttributes(attribute.String("event", "error"))
_span.SetAttributes(attribute.String("message", err.Error()))
}
_span.End()
}()
return _d.Members.ListMembers(ctx, orgId)
}
// ListOrganizations implements members.Members
func (_d telemetryMiddleware) ListOrganizations(ctx context.Context, userId string) (organizations []*members.Member, err error) {
ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Members.ListOrganizations")
defer func() {
if _d._spanDecorator != nil {
_d._spanDecorator(_span, map[string]interface{}{
"ctx": ctx,
"userId": userId}, map[string]interface{}{
"organizations": organizations,
"err": err})
} else if err != nil {
_span.RecordError(err)
_span.SetAttributes(attribute.String("event", "error"))
_span.SetAttributes(attribute.String("message", err.Error()))
}
_span.End()
}()
return _d.Members.ListOrganizations(ctx, userId)
}
// Remove implements members.Members
func (_d telemetryMiddleware) Remove(ctx context.Context, orgId string, userId string) (err error) {
ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Members.Remove")
defer func() {
if _d._spanDecorator != nil {
_d._spanDecorator(_span, map[string]interface{}{
"ctx": ctx,
"orgId": orgId,
"userId": userId}, map[string]interface{}{
"err": err})
} else if err != nil {
_span.RecordError(err)
_span.SetAttributes(attribute.String("event", "error"))
_span.SetAttributes(attribute.String("message", err.Error()))
}
_span.End()
}()
return _d.Members.Remove(ctx, orgId, userId)
}
// RemoveAll implements members.Members
func (_d telemetryMiddleware) RemoveAll(ctx context.Context, orgId string) (err error) {
ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Members.RemoveAll")
defer func() {
if _d._spanDecorator != nil {
_d._spanDecorator(_span, map[string]interface{}{
"ctx": ctx,
"orgId": orgId}, map[string]interface{}{
"err": err})
} else if err != nil {
_span.RecordError(err)
_span.SetAttributes(attribute.String("event", "error"))
_span.SetAttributes(attribute.String("message", err.Error()))
}
_span.End()
}()
return _d.Members.RemoveAll(ctx, orgId)
}
// Set implements members.Members
func (_d telemetryMiddleware) Set(ctx context.Context, orgId string, userId string, role members.Role) (err error) {
ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Members.Set")
defer func() {
if _d._spanDecorator != nil {
_d._spanDecorator(_span, map[string]interface{}{
"ctx": ctx,
"orgId": orgId,
"userId": userId,
"role": role}, map[string]interface{}{
"err": err})
} else if err != nil {
_span.RecordError(err)
_span.SetAttributes(attribute.String("event", "error"))
_span.SetAttributes(attribute.String("message", err.Error()))
}
_span.End()
}()
return _d.Members.Set(ctx, orgId, userId, role)
}