Skip to content

Commit 7449453

Browse files
refactor(controller): unify backend initialization in log, stats, and user handlers
1 parent 0c63426 commit 7449453

3 files changed

Lines changed: 60 additions & 9 deletions

File tree

controller/rpc/log.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ import (
88
)
99

1010
func (s *Service) GetLogs(_ *common.Empty, stream common.NodeService_GetLogsServer) error {
11-
logChan := s.Backend().Logs()
11+
backend, err := s.backend()
12+
if err != nil {
13+
return err
14+
}
15+
16+
logChan := backend.Logs()
1217

1318
for {
1419
select {

controller/rpc/stats.go

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,27 @@ package rpc
33
import (
44
"context"
55

6+
"github.com/pasarguard/node/backend"
67
"github.com/pasarguard/node/common"
8+
"google.golang.org/grpc/codes"
9+
"google.golang.org/grpc/status"
710
)
811

12+
func (s *Service) backend() (backend.Backend, error) {
13+
backend := s.Backend()
14+
if backend == nil {
15+
return nil, status.Errorf(codes.Unavailable, "backend not initialized")
16+
}
17+
return backend, nil
18+
}
19+
920
func (s *Service) GetStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) {
10-
stats, err := s.Backend().GetStats(ctx, request)
21+
backend, err := s.backend()
22+
if err != nil {
23+
return nil, err
24+
}
25+
26+
stats, err := backend.GetStats(ctx, request)
1127
if err != nil {
1228
err = common.InterceptNotFound(err)
1329
return nil, err
@@ -16,7 +32,12 @@ func (s *Service) GetStats(ctx context.Context, request *common.StatRequest) (*c
1632
}
1733

1834
func (s *Service) GetUserOnlineStats(ctx context.Context, request *common.StatRequest) (*common.OnlineStatResponse, error) {
19-
stats, err := s.Backend().GetUserOnlineStats(ctx, request.GetName())
35+
backend, err := s.backend()
36+
if err != nil {
37+
return nil, err
38+
}
39+
40+
stats, err := backend.GetUserOnlineStats(ctx, request.GetName())
2041
if err != nil {
2142
err = common.InterceptNotFound(err)
2243
return nil, err
@@ -25,7 +46,12 @@ func (s *Service) GetUserOnlineStats(ctx context.Context, request *common.StatRe
2546
}
2647

2748
func (s *Service) GetUserOnlineIpListStats(ctx context.Context, request *common.StatRequest) (*common.StatsOnlineIpListResponse, error) {
28-
stats, err := s.Backend().GetUserOnlineIpListStats(ctx, request.GetName())
49+
backend, err := s.backend()
50+
if err != nil {
51+
return nil, err
52+
}
53+
54+
stats, err := backend.GetUserOnlineIpListStats(ctx, request.GetName())
2955
if err != nil {
3056
err = common.InterceptNotFound(err)
3157
return nil, err
@@ -34,7 +60,12 @@ func (s *Service) GetUserOnlineIpListStats(ctx context.Context, request *common.
3460
}
3561

3662
func (s *Service) GetBackendStats(ctx context.Context, _ *common.Empty) (*common.BackendStatsResponse, error) {
37-
return s.Backend().GetSysStats(ctx)
63+
backend, err := s.backend()
64+
if err != nil {
65+
return nil, err
66+
}
67+
68+
return backend.GetSysStats(ctx)
3869
}
3970

4071
func (s *Service) GetOutboundsLatency(ctx context.Context, request *common.LatencyRequest) (*common.LatencyResponse, error) {

controller/rpc/user.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ import (
1515
)
1616

1717
func (s *Service) SyncUser(stream grpc.ClientStreamingServer[common.User, common.Empty]) error {
18+
backend, err := s.backend()
19+
if err != nil {
20+
return err
21+
}
22+
1823
for {
1924
user, err := stream.Recv()
2025
if err != nil {
@@ -27,15 +32,20 @@ func (s *Service) SyncUser(stream grpc.ClientStreamingServer[common.User, common
2732

2833
log.Printf("Got user: %v", user.GetEmail())
2934

30-
if err = s.Backend().SyncUser(stream.Context(), user); err != nil {
35+
if err = backend.SyncUser(stream.Context(), user); err != nil {
3136
log.Printf("Error syncing user: %v", err)
3237
return status.Errorf(codes.Internal, "failed to update user: %v", err)
3338
}
3439
}
3540
}
3641

3742
func (s *Service) SyncUsers(ctx context.Context, users *common.Users) (*common.Empty, error) {
38-
if err := s.Backend().SyncUsers(ctx, users.GetUsers()); err != nil {
43+
backend, err := s.backend()
44+
if err != nil {
45+
return nil, err
46+
}
47+
48+
if err := backend.SyncUsers(ctx, users.GetUsers()); err != nil {
3949
return nil, err
4050
}
4151

@@ -72,14 +82,19 @@ func (s *Service) SyncUsersChunked(stream grpc.ClientStreamingServer[common.User
7282
return status.Error(codes.InvalidArgument, err.Error())
7383
}
7484

85+
backend, err := s.backend()
86+
if err != nil {
87+
return err
88+
}
89+
7590
// Large chunk: update in-memory then restart (no API calls).
7691
if len(users) > 100 {
77-
if err := s.Backend().UpdateUsersAndRestart(stream.Context(), users); err != nil {
92+
if err := backend.UpdateUsersAndRestart(stream.Context(), users); err != nil {
7893
return status.Errorf(codes.Internal, "failed to update users: %v", err)
7994
}
8095
} else {
8196
// Small chunk: update via API without restart.
82-
if err := s.Backend().UpdateUsers(stream.Context(), users); err != nil {
97+
if err := backend.UpdateUsers(stream.Context(), users); err != nil {
8398
return status.Errorf(codes.Internal, "failed to update users: %v", err)
8499
}
85100
}

0 commit comments

Comments
 (0)