/
server.go
62 lines (50 loc) 路 1.44 KB
/
server.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
package server
import (
"fmt"
"net"
"github.com/rs/zerolog/log"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
"github.com/fogo-sh/bogos/backend/pkg/config"
"github.com/fogo-sh/bogos/backend/pkg/database"
"github.com/fogo-sh/bogos/backend/pkg/proto"
)
type Server struct {
db *database.Queries
config *config.Config
grpcServer *grpc.Server
}
func (s *Server) Run() error {
log.Debug().Msg("Starting server.")
listener, err := net.Listen("tcp", s.config.ListenAddr)
if err != nil {
return fmt.Errorf("error creating listener: %w", err)
}
log.Info().Msg("Starting Bogos. Press Ctrl-C to quit.")
err = s.grpcServer.Serve(listener)
if err != nil {
return fmt.Errorf("error running gRPC server: %w", err)
}
return nil
}
func New(config *config.Config) (*Server, error) {
log.Debug().Msg("Creating new server.")
db, err := database.Connect(config)
if err != nil {
return nil, fmt.Errorf("error connecting to db: %w", err)
}
grpcServer := grpc.NewServer()
server := &Server{
config: config,
db: db,
grpcServer: grpcServer,
}
log.Debug().Msg("Registering services.")
reflection.Register(grpcServer)
proto.RegisterUsersServer(grpcServer, newUsersService(server))
proto.RegisterOutingsServer(grpcServer, newOutingsService(server))
proto.RegisterPhotosServer(grpcServer, newPhotosService(server))
log.Debug().Msg("Services registered.")
log.Debug().Msg("Server created.")
return server, nil
}