Select Git revision
metrics_middleware.go
metrics_middleware.go 3.78 KiB
// Code generated by gowrap. DO NOT EDIT.
// template: ../../../assets/templates/middleware/metrics
// 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/metrics -o metrics_middleware.go -l ""
import (
"context"
"git.perx.ru/perxis/perxis-go/pkg/members"
"git.perx.ru/perxis/perxis-go/pkg/metrics"
"github.com/prometheus/client_golang/prometheus"
)
// metricsMiddleware implements members.Members that is instrumented with metrics
type metricsMiddleware struct {
requestMetrics *metrics.RequestMetrics
next members.Members
}
// MetricsMiddleware instruments an implementation of the metricsMiddleware with metrics
func MetricsMiddleware(requestMetrics *metrics.RequestMetrics) Middleware {
return func(next members.Members) members.Members {
return &metricsMiddleware{
requestMetrics: requestMetrics,
next: next,
}
}
}
// Get implements members.Members
func (m metricsMiddleware) Get(ctx context.Context, orgId string, userId string) (role members.Role, err error) {
timer := prometheus.NewTimer(m.requestMetrics.DurationSeconds.WithLabelValues("Get"))
defer timer.ObserveDuration()
m.requestMetrics.Total.WithLabelValues("Get").Inc()
role, err = m.next.Get(ctx, orgId, userId)
if err != nil {
m.requestMetrics.FailedTotal.WithLabelValues("Get").Inc()
return
}
return
}
// ListMembers implements members.Members
func (m metricsMiddleware) ListMembers(ctx context.Context, orgId string) (members []*members.Member, err error) {
timer := prometheus.NewTimer(m.requestMetrics.DurationSeconds.WithLabelValues("ListMembers"))
defer timer.ObserveDuration()
m.requestMetrics.Total.WithLabelValues("ListMembers").Inc()
members, err = m.next.ListMembers(ctx, orgId)
if err != nil {
m.requestMetrics.FailedTotal.WithLabelValues("ListMembers").Inc()
return
}
return
}
// ListOrganizations implements members.Members
func (m metricsMiddleware) ListOrganizations(ctx context.Context, userId string) (organizations []*members.Member, err error) {
timer := prometheus.NewTimer(m.requestMetrics.DurationSeconds.WithLabelValues("ListOrganizations"))
defer timer.ObserveDuration()
m.requestMetrics.Total.WithLabelValues("ListOrganizations").Inc()
organizations, err = m.next.ListOrganizations(ctx, userId)
if err != nil {
m.requestMetrics.FailedTotal.WithLabelValues("ListOrganizations").Inc()
return
}
return
}
// Remove implements members.Members
func (m metricsMiddleware) Remove(ctx context.Context, orgId string, userId string) (err error) {
timer := prometheus.NewTimer(m.requestMetrics.DurationSeconds.WithLabelValues("Remove"))
defer timer.ObserveDuration()
m.requestMetrics.Total.WithLabelValues("Remove").Inc()
err = m.next.Remove(ctx, orgId, userId)
if err != nil {
m.requestMetrics.FailedTotal.WithLabelValues("Remove").Inc()
return
}
return
}
// RemoveAll implements members.Members
func (m metricsMiddleware) RemoveAll(ctx context.Context, orgId string) (err error) {
timer := prometheus.NewTimer(m.requestMetrics.DurationSeconds.WithLabelValues("RemoveAll"))
defer timer.ObserveDuration()
m.requestMetrics.Total.WithLabelValues("RemoveAll").Inc()
err = m.next.RemoveAll(ctx, orgId)
if err != nil {
m.requestMetrics.FailedTotal.WithLabelValues("RemoveAll").Inc()
return
}
return
}
// Set implements members.Members
func (m metricsMiddleware) Set(ctx context.Context, orgId string, userId string, role members.Role) (err error) {
timer := prometheus.NewTimer(m.requestMetrics.DurationSeconds.WithLabelValues("Set"))
defer timer.ObserveDuration()
m.requestMetrics.Total.WithLabelValues("Set").Inc()
err = m.next.Set(ctx, orgId, userId, role)
if err != nil {
m.requestMetrics.FailedTotal.WithLabelValues("Set").Inc()
return
}
return
}