github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/store/layer_generators/timer_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 timerlayer 8 9 import ( 10 "context" 11 timemodule "time" 12 13 "github.com/mattermost/mattermost-server/v5/einterfaces" 14 "github.com/mattermost/mattermost-server/v5/model" 15 "github.com/mattermost/mattermost-server/v5/store" 16 ) 17 18 type {{.Name}} struct { 19 store.Store 20 Metrics einterfaces.MetricsInterface 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 start := timemodule.Now() 42 {{if $element.Results | len | eq 0}} 43 s.{{$substoreName}}Store.{{$index}}({{$element.Params | joinParams}}) 44 {{else}} 45 {{genResultsVars $element.Results false }} := s.{{$substoreName}}Store.{{$index}}({{$element.Params | joinParams}}) 46 {{end}} 47 elapsed := float64(timemodule.Since(start)) / float64(timemodule.Second) 48 if s.Root.Metrics != nil { 49 success := "false" 50 if {{$element.Results | errorToBoolean}} { 51 success = "true" 52 } 53 s.Root.Metrics.ObserveStoreMethodDuration("{{$substoreName}}Store.{{$index}}", success, elapsed) 54 {{ with (genResultsVars $element.Results false ) -}} 55 } 56 return {{ . }} 57 {{- else -}} 58 } 59 {{- end }} 60 } 61 {{end}} 62 {{end}} 63 64 {{range $index, $element := .Methods}} 65 func (s *{{$.Name}}) {{$index}}({{$element.Params | joinParamsWithType}}) {{$element.Results | joinResultsForSignature}} { 66 {{if $element.Results | len | eq 0}}s.Store.{{$index}}({{$element.Params | joinParams}}) 67 {{else}}return s.Store.{{$index}}({{$element.Params | joinParams}}) 68 {{end}}} 69 {{end}} 70 71 func New(childStore store.Store, metrics einterfaces.MetricsInterface) *{{.Name}} { 72 newStore := {{.Name}}{ 73 Store: childStore, 74 Metrics: metrics, 75 } 76 {{range $substoreName, $substore := .SubStores}} 77 newStore.{{$substoreName}}Store = &{{$.Name}}{{$substoreName}}Store{{"{"}}{{$substoreName}}Store: childStore.{{$substoreName}}(), Root: &newStore}{{end}} 78 return &newStore 79 }