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 }