-
Notifications
You must be signed in to change notification settings - Fork 2
/
config.go
142 lines (114 loc) · 3.88 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package config
import (
"github.com/alexfalkowski/go-service/cache"
"github.com/alexfalkowski/go-service/cache/redis"
"github.com/alexfalkowski/go-service/cache/ristretto"
"github.com/alexfalkowski/go-service/cmd"
"github.com/alexfalkowski/go-service/database/sql"
"github.com/alexfalkowski/go-service/database/sql/pg"
"github.com/alexfalkowski/go-service/debug"
"github.com/alexfalkowski/go-service/env"
"github.com/alexfalkowski/go-service/feature"
"github.com/alexfalkowski/go-service/hooks"
"github.com/alexfalkowski/go-service/limiter"
"github.com/alexfalkowski/go-service/security/token"
"github.com/alexfalkowski/go-service/telemetry"
"github.com/alexfalkowski/go-service/telemetry/logger/zap"
"github.com/alexfalkowski/go-service/telemetry/metrics"
"github.com/alexfalkowski/go-service/telemetry/tracer"
"github.com/alexfalkowski/go-service/time"
"github.com/alexfalkowski/go-service/transport"
"github.com/alexfalkowski/go-service/transport/grpc"
"github.com/alexfalkowski/go-service/transport/http"
)
// NewConfig for config.
func NewConfig(i *cmd.InputConfig) (*Config, error) {
c := &Config{}
return c, i.Unmarshal(c)
}
// Config for the service.
type Config struct {
Environment env.Environment `yaml:"environment,omitempty" json:"environment,omitempty" toml:"environment,omitempty"`
Debug *debug.Config `yaml:"debug,omitempty" json:"debug,omitempty" toml:"debug,omitempty"`
Cache *cache.Config `yaml:"cache,omitempty" json:"cache,omitempty" toml:"cache,omitempty"`
Feature *feature.Config `yaml:"feature,omitempty" json:"feature,omitempty" toml:"feature,omitempty"`
Hooks *hooks.Config `yaml:"hooks,omitempty" json:"hooks,omitempty" toml:"hooks,omitempty"`
Limiter *limiter.Config `yaml:"limiter,omitempty" json:"limiter,omitempty" toml:"limiter,omitempty"`
SQL *sql.Config `yaml:"sql,omitempty" json:"sql,omitempty" toml:"sql,omitempty"`
Telemetry *telemetry.Config `yaml:"telemetry,omitempty" json:"telemetry,omitempty" toml:"telemetry,omitempty"`
Time *time.Config `yaml:"time,omitempty" json:"time,omitempty" toml:"time,omitempty"`
Token *token.Config `yaml:"token,omitempty" json:"token,omitempty" toml:"token,omitempty"`
Transport *transport.Config `yaml:"transport,omitempty" json:"transport,omitempty" toml:"transport,omitempty"`
}
func debugConfig(cfg *Config) *debug.Config {
return cfg.Debug
}
func environmentConfig(cfg *Config) env.Environment {
return cfg.Environment
}
func featureConfig(cfg *Config) *feature.Config {
return cfg.Feature
}
func grpcConfig(cfg *Config) *grpc.Config {
if !transport.IsEnabled(cfg.Transport) {
return nil
}
return cfg.Transport.GRPC
}
func hooksConfig(cfg *Config) *hooks.Config {
return cfg.Hooks
}
func httpConfig(cfg *Config) *http.Config {
if !transport.IsEnabled(cfg.Transport) {
return nil
}
return cfg.Transport.HTTP
}
func limiterConfig(cfg *Config) *limiter.Config {
return cfg.Limiter
}
func loggerConfig(cfg *Config) *zap.Config {
if !telemetry.IsEnabled(cfg.Telemetry) {
return nil
}
return cfg.Telemetry.Logger
}
func metricsConfig(cfg *Config) *metrics.Config {
if !telemetry.IsEnabled(cfg.Telemetry) {
return nil
}
return cfg.Telemetry.Metrics
}
func timeConfig(cfg *Config) *time.Config {
if !time.IsEnabled(cfg.Time) {
return nil
}
return cfg.Time
}
func pgConfig(cfg *Config) *pg.Config {
if !sql.IsEnabled(cfg.SQL) {
return nil
}
return cfg.SQL.PG
}
func redisConfig(cfg *Config) *redis.Config {
if !cache.IsEnabled(cfg.Cache) {
return nil
}
return cfg.Cache.Redis
}
func ristrettoConfig(cfg *Config) *ristretto.Config {
if !cache.IsEnabled(cfg.Cache) {
return nil
}
return cfg.Cache.Ristretto
}
func tokenConfig(cfg *Config) *token.Config {
return cfg.Token
}
func tracerConfig(cfg *Config) *tracer.Config {
if !telemetry.IsEnabled(cfg.Telemetry) {
return nil
}
return cfg.Telemetry.Tracer
}