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  }