-
Notifications
You must be signed in to change notification settings - Fork 1
/
config.go
99 lines (86 loc) · 2.63 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
package handler
import (
"context"
"encoding/json"
"fmt"
"github.com/ScoreTrak/ScoreTrak/pkg/config"
"github.com/ScoreTrak/ScoreTrak/pkg/config/configservice"
"github.com/golang/protobuf/ptypes/wrappers"
configv1 "go.buf.build/library/go-grpc/scoretrak/scoretrakapis/scoretrak/config/v1"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
type ConfigController struct {
svc configservice.Serv
configv1.UnimplementedDynamicConfigServiceServer
}
func (p ConfigController) Get(ctx context.Context, _ *configv1.GetRequest) (*configv1.GetResponse, error) {
cnf, err := p.svc.Get(ctx)
if err != nil {
return nil, getErrorParser(err)
}
return &configv1.GetResponse{DynamicConfig: ConvertDynamicConfigToDynamicConfigPB(cnf)}, nil
}
func (p ConfigController) Update(ctx context.Context, request *configv1.UpdateRequest) (*configv1.UpdateResponse, error) {
tmspb := request.GetDynamicConfig()
var enabled *bool
if tmspb.GetEnabled() != nil {
enabled = &tmspb.GetEnabled().Value
}
err := p.svc.Update(ctx, &config.DynamicConfig{
RoundDuration: tmspb.RoundDuration,
Enabled: enabled,
})
if err != nil {
return nil, status.Errorf(
codes.Internal,
fmt.Sprintf("Unknown internal error: %v", err),
)
}
return &configv1.UpdateResponse{}, nil
}
func NewConfigController(svc configservice.Serv) *ConfigController {
return &ConfigController{svc: svc}
}
func ConvertDynamicConfigPBToDynamicConfig(pb *configv1.DynamicConfig) *config.DynamicConfig {
var enabled *bool
if pb.GetEnabled() != nil {
enabled = &pb.GetEnabled().Value
}
return &config.DynamicConfig{
RoundDuration: pb.GetRoundDuration(),
Enabled: enabled,
}
}
func ConvertDynamicConfigToDynamicConfigPB(obj *config.DynamicConfig) *configv1.DynamicConfig {
return &configv1.DynamicConfig{
RoundDuration: obj.RoundDuration,
Enabled: &wrappers.BoolValue{Value: *obj.Enabled},
}
}
func NewStaticConfigController(svc configservice.StaticServ) *StaticConfigController {
return &StaticConfigController{svc: svc}
}
type StaticConfigController struct {
svc configservice.StaticServ
configv1.UnimplementedStaticConfigServiceServer
}
func (s StaticConfigController) Get(ctx context.Context, request *configv1.GetStaticConfigRequest) (*configv1.GetStaticConfigResponse, error) {
sc, err := s.svc.Get()
if err != nil {
return nil, status.Errorf(
codes.Internal,
fmt.Sprintf("Unknown internal error: %v", err),
)
}
ret, err := json.Marshal(sc)
if err != nil {
return nil, status.Errorf(
codes.Internal,
fmt.Sprintf("Unknown internal error: %v", err),
)
}
return &configv1.GetStaticConfigResponse{
StaticConfig: string(ret),
}, nil
}