Skip to content
Snippets Groups Projects
Select Git revision
  • 75f31532aa7b3007d9ff32c89ec6b62877b93085
  • master default protected
  • feature/PRXS-3421-ImplementNewRefAPI
  • refactor/PRXS-3053-Files
  • feature/3149-LocaleCodeAsID-Feature
  • feature/PRXS-3383-CollectionsSort
  • feature/PRXS-3143-3235-ReferenceOptions
  • feature/PRXS-3143-LimitReferenceFields
  • feature/PRXS-3234-FeaturePruneIdents
  • PRXS-3421-RecursiveReferences
  • feature/3109-SerializeFeature
  • release/0.33
  • feature/3109-RecoverySchema
  • feature/3109-feature
  • fix/PRXS-3369-ValidateFields
  • refactor/PRXS-3306-MovePkgGroup1
  • refactor/6-pkg-refactor-expr
  • fix/PRXS-3360-TemplateBuilderPatch
  • feature/3293-MongoV2
  • feature/3272-GoVersionUp
  • feature/PRXS-3218-HideTemplateActions
  • v0.33.1
  • v0.32.0
  • v0.31.1
  • v0.31.0
  • v0.30.0
  • v0.29.0
  • v0.28.0
  • v0.27.0-alpha.1+16
  • v0.27.0-alpha.1+15
  • v0.27.0-alpha.1+14
  • v0.27.0-alpha.1+13
  • v0.27.0-alpha.1+12
  • v0.27.0-alpha.1+11
  • v0.27.0-alpha.1+10
  • v0.27.0-alpha.1+9
  • v0.27.0-alpha.1+8
  • v0.27.0-alpha.1+7
  • v0.27.0-alpha.1+6
  • v0.27.0-alpha.1+5
  • v0.27.0-alpha.1+4
41 results

error_logging_middleware.go

Blame
  • telemetry_middleware.go 15.67 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/items -i Items -t ../../../assets/templates/middleware/telemetry -o telemetry_middleware.go -l ""
    
    import (
    	"context"
    
    	"git.perx.ru/perxis/perxis-go/pkg/items"
    	"git.perx.ru/perxis/perxis-go/pkg/schema"
    	"go.opentelemetry.io/otel"
    	"go.opentelemetry.io/otel/attribute"
    	"go.opentelemetry.io/otel/trace"
    )
    
    // telemetryMiddleware implements items.Items interface instrumented with opentracing spans
    type telemetryMiddleware struct {
    	items.Items
    	_instance      string
    	_spanDecorator func(span trace.Span, params, results map[string]interface{})
    }
    
    // TelemetryMiddleware returns telemetryMiddleware
    func TelemetryMiddleware(base items.Items, instance string, spanDecorator ...func(span trace.Span, params, results map[string]interface{})) telemetryMiddleware {
    	d := telemetryMiddleware{
    		Items:     base,
    		_instance: instance,
    	}
    
    	if len(spanDecorator) > 0 && spanDecorator[0] != nil {
    		d._spanDecorator = spanDecorator[0]
    	}
    
    	return d
    }
    
    // Aggregate implements items.Items
    func (_d telemetryMiddleware) Aggregate(ctx context.Context, spaceId string, envId string, collectionId string, filter *items.Filter, options ...*items.AggregateOptions) (result map[string]interface{}, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Aggregate")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":          ctx,
    				"spaceId":      spaceId,
    				"envId":        envId,
    				"collectionId": collectionId,
    				"filter":       filter,
    				"options":      options}, map[string]interface{}{
    				"result": result,
    				"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.Items.Aggregate(ctx, spaceId, envId, collectionId, filter, options...)
    }
    
    // AggregatePublished implements items.Items
    func (_d telemetryMiddleware) AggregatePublished(ctx context.Context, spaceId string, envId string, collectionId string, filter *items.Filter, options ...*items.AggregatePublishedOptions) (result map[string]interface{}, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.AggregatePublished")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":          ctx,
    				"spaceId":      spaceId,
    				"envId":        envId,
    				"collectionId": collectionId,
    				"filter":       filter,
    				"options":      options}, map[string]interface{}{
    				"result": result,
    				"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.Items.AggregatePublished(ctx, spaceId, envId, collectionId, filter, options...)
    }
    
    // Archive implements items.Items
    func (_d telemetryMiddleware) Archive(ctx context.Context, item *items.Item, options ...*items.ArchiveOptions) (err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Archive")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":     ctx,
    				"item":    item,
    				"options": options}, 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.Items.Archive(ctx, item, options...)
    }
    
    // Create implements items.Items
    func (_d telemetryMiddleware) Create(ctx context.Context, item *items.Item, opts ...*items.CreateOptions) (created *items.Item, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Create")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":  ctx,
    				"item": item,
    				"opts": opts}, map[string]interface{}{
    				"created": created,
    				"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.Items.Create(ctx, item, opts...)
    }
    
    // Delete implements items.Items
    func (_d telemetryMiddleware) Delete(ctx context.Context, item *items.Item, options ...*items.DeleteOptions) (err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Delete")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":     ctx,
    				"item":    item,
    				"options": options}, 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.Items.Delete(ctx, item, options...)
    }
    
    // Find implements items.Items
    func (_d telemetryMiddleware) Find(ctx context.Context, spaceId string, envId string, collectionId string, filter *items.Filter, options ...*items.FindOptions) (items []*items.Item, total int, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Find")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":          ctx,
    				"spaceId":      spaceId,
    				"envId":        envId,
    				"collectionId": collectionId,
    				"filter":       filter,
    				"options":      options}, map[string]interface{}{
    				"items": items,
    				"total": total,
    				"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.Items.Find(ctx, spaceId, envId, collectionId, filter, options...)
    }
    
    // FindArchived implements items.Items
    func (_d telemetryMiddleware) FindArchived(ctx context.Context, spaceId string, envId string, collectionId string, filter *items.Filter, options ...*items.FindArchivedOptions) (items []*items.Item, total int, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.FindArchived")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":          ctx,
    				"spaceId":      spaceId,
    				"envId":        envId,
    				"collectionId": collectionId,
    				"filter":       filter,
    				"options":      options}, map[string]interface{}{
    				"items": items,
    				"total": total,
    				"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.Items.FindArchived(ctx, spaceId, envId, collectionId, filter, options...)
    }
    
    // FindPublished implements items.Items
    func (_d telemetryMiddleware) FindPublished(ctx context.Context, spaceId string, envId string, collectionId string, filter *items.Filter, options ...*items.FindPublishedOptions) (items []*items.Item, total int, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.FindPublished")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":          ctx,
    				"spaceId":      spaceId,
    				"envId":        envId,
    				"collectionId": collectionId,
    				"filter":       filter,
    				"options":      options}, map[string]interface{}{
    				"items": items,
    				"total": total,
    				"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.Items.FindPublished(ctx, spaceId, envId, collectionId, filter, options...)
    }
    
    // Get implements items.Items
    func (_d telemetryMiddleware) Get(ctx context.Context, spaceId string, envId string, collectionId string, itemId string, options ...*items.GetOptions) (item *items.Item, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Get")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":          ctx,
    				"spaceId":      spaceId,
    				"envId":        envId,
    				"collectionId": collectionId,
    				"itemId":       itemId,
    				"options":      options}, map[string]interface{}{
    				"item": item,
    				"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.Items.Get(ctx, spaceId, envId, collectionId, itemId, options...)
    }
    
    // GetPublished implements items.Items
    func (_d telemetryMiddleware) GetPublished(ctx context.Context, spaceId string, envId string, collectionId string, itemId string, options ...*items.GetPublishedOptions) (item *items.Item, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.GetPublished")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":          ctx,
    				"spaceId":      spaceId,
    				"envId":        envId,
    				"collectionId": collectionId,
    				"itemId":       itemId,
    				"options":      options}, map[string]interface{}{
    				"item": item,
    				"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.Items.GetPublished(ctx, spaceId, envId, collectionId, itemId, options...)
    }
    
    // GetRevision implements items.Items
    func (_d telemetryMiddleware) GetRevision(ctx context.Context, spaceId string, envId string, collectionId string, itemId string, revisionId string, options ...*items.GetRevisionOptions) (item *items.Item, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.GetRevision")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":          ctx,
    				"spaceId":      spaceId,
    				"envId":        envId,
    				"collectionId": collectionId,
    				"itemId":       itemId,
    				"revisionId":   revisionId,
    				"options":      options}, map[string]interface{}{
    				"item": item,
    				"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.Items.GetRevision(ctx, spaceId, envId, collectionId, itemId, revisionId, options...)
    }
    
    // Introspect implements items.Items
    func (_d telemetryMiddleware) Introspect(ctx context.Context, item *items.Item, opts ...*items.IntrospectOptions) (itm *items.Item, sch *schema.Schema, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Introspect")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":  ctx,
    				"item": item,
    				"opts": opts}, map[string]interface{}{
    				"itm": itm,
    				"sch": sch,
    				"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.Items.Introspect(ctx, item, opts...)
    }
    
    // ListRevisions implements items.Items
    func (_d telemetryMiddleware) ListRevisions(ctx context.Context, spaceId string, envId string, collectionId string, itemId string, options ...*items.ListRevisionsOptions) (items []*items.Item, err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.ListRevisions")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":          ctx,
    				"spaceId":      spaceId,
    				"envId":        envId,
    				"collectionId": collectionId,
    				"itemId":       itemId,
    				"options":      options}, map[string]interface{}{
    				"items": items,
    				"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.Items.ListRevisions(ctx, spaceId, envId, collectionId, itemId, options...)
    }
    
    // Publish implements items.Items
    func (_d telemetryMiddleware) Publish(ctx context.Context, item *items.Item, options ...*items.PublishOptions) (err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Publish")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":     ctx,
    				"item":    item,
    				"options": options}, 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.Items.Publish(ctx, item, options...)
    }
    
    // Unarchive implements items.Items
    func (_d telemetryMiddleware) Unarchive(ctx context.Context, item *items.Item, options ...*items.UnarchiveOptions) (err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Unarchive")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":     ctx,
    				"item":    item,
    				"options": options}, 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.Items.Unarchive(ctx, item, options...)
    }
    
    // Undelete implements items.Items
    func (_d telemetryMiddleware) Undelete(ctx context.Context, item *items.Item, options ...*items.UndeleteOptions) (err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Undelete")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":     ctx,
    				"item":    item,
    				"options": options}, 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.Items.Undelete(ctx, item, options...)
    }
    
    // Unpublish implements items.Items
    func (_d telemetryMiddleware) Unpublish(ctx context.Context, item *items.Item, options ...*items.UnpublishOptions) (err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Unpublish")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":     ctx,
    				"item":    item,
    				"options": options}, 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.Items.Unpublish(ctx, item, options...)
    }
    
    // Update implements items.Items
    func (_d telemetryMiddleware) Update(ctx context.Context, item *items.Item, options ...*items.UpdateOptions) (err error) {
    	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Items.Update")
    	defer func() {
    		if _d._spanDecorator != nil {
    			_d._spanDecorator(_span, map[string]interface{}{
    				"ctx":     ctx,
    				"item":    item,
    				"options": options}, 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.Items.Update(ctx, item, options...)
    }