github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/store/layer_generators/opentracing_layer.go.tmpl (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  // Code generated by "make store-layers"
     5  // DO NOT EDIT
     6  
     7  package opentracinglayer
     8  
     9  import (
    10  	"context"
    11  
    12  	"github.com/mattermost/mattermost-server/v5/model"
    13  	"github.com/mattermost/mattermost-server/v5/services/tracing"
    14  	"github.com/mattermost/mattermost-server/v5/store"
    15  	"github.com/opentracing/opentracing-go/ext"
    16  	spanlog "github.com/opentracing/opentracing-go/log"
    17  )
    18  
    19  type {{.Name}} struct {
    20  	store.Store
    21  {{range $index, $element := .SubStores}}	{{$index}}Store store.{{$index}}Store
    22  {{end}}
    23  }
    24  
    25  {{range $index, $element := .SubStores}}func (s *{{$.Name}}) {{$index}}() store.{{$index}}Store {
    26  	return s.{{$index}}Store
    27  }
    28  
    29  {{end}}
    30  
    31  {{range $index, $element := .SubStores}}type {{$.Name}}{{$index}}Store struct {
    32  	store.{{$index}}Store
    33  	Root *{{$.Name}}
    34  }
    35  
    36  {{end}}
    37  
    38  {{range $substoreName, $substore := .SubStores}}
    39  {{range $index, $element := $substore.Methods}}
    40  func (s *{{$.Name}}{{$substoreName}}Store) {{$index}}({{$element.Params | joinParamsWithType}}) {{$element.Results | joinResultsForSignature}} {
    41  	origCtx := s.Root.Store.Context()
    42  	span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "{{$substoreName}}Store.{{$index}}")
    43  	s.Root.Store.SetContext(newCtx)
    44  	defer func(){
    45  		s.Root.Store.SetContext(origCtx)
    46  	}()
    47  	{{range $paramName, $param := $element.Params}}
    48  		{{if index $element.ParamsToTrace $param.Name }}
    49  			span.SetTag("{{$param.Name}}", {{$param.Name}})
    50  		{{end}}
    51  	{{end}}
    52  	defer span.Finish()
    53  	{{- if $element.Results | len | eq 0}}
    54  	s.{{$substoreName}}Store.{{$index}}({{$element.Params | joinParams}})
    55  	{{else}}
    56  		{{genResultsVars $element.Results false }} := s.{{$substoreName}}Store.{{$index}}({{$element.Params | joinParams}})
    57  		{{- if $element.Results | errorPresent }}
    58  			if {{$element.Results | errorVar}} != nil {
    59  				span.LogFields(spanlog.Error({{$element.Results | errorVar}}))
    60  				ext.Error.Set(span, true)
    61  			}
    62  		{{end}}
    63  		return {{ genResultsVars $element.Results false -}}
    64  	{{end}}
    65  }
    66  {{end}}
    67  {{end}}
    68  
    69  {{range $index, $element := .Methods}}
    70  func (s *{{$.Name}}) {{$index}}({{$element.Params | joinParamsWithType}}) {{$element.Results | joinResultsForSignature}} {
    71  	{{if $element.Results | len | eq 0}}s.Store.{{$index}}({{$element.Params | joinParams}})
    72  	{{else}}return s.Store.{{$index}}({{$element.Params | joinParams}})
    73  	{{end}}}
    74  {{end}}
    75  
    76  func New(childStore store.Store, ctx context.Context) *{{.Name}} {
    77  	newStore := {{.Name}}{
    78  		Store: childStore,
    79  	}
    80  	{{range $substoreName, $substore := .SubStores}}
    81  	newStore.{{$substoreName}}Store = &{{$.Name}}{{$substoreName}}Store{{"{"}}{{$substoreName}}Store: childStore.{{$substoreName}}(), Root: &newStore}{{end}}
    82  	return &newStore
    83  }