summaryrefslogtreecommitdiff
path: root/internal/pb/server.go
blob: 0e8ecb7789b158e1a77d8cb2efbf28585c0832b0 (plain)
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
package pb

import (
	"context"
	"errors"
	"log/slog"

	"github.com/ChausseBenjamin/rafta/internal/db"
	"github.com/ChausseBenjamin/rafta/internal/intercept"
	m "github.com/ChausseBenjamin/rafta/pkg/model"
	"google.golang.org/grpc"
)

var ErrOutOfBoundsPort = errors.New("given port is out of bounds (1024-65535)")

// Implements ComsServer interface
type UserServer struct {
	db *db.Store
	m.UnimplementedRaftaUserServer
}

type AdminServer struct {
	db *db.Store
	m.UnimplementedRaftaAdminServer
}

func NewUserServer(store *db.Store) *UserServer {
	return &UserServer{db: store}
}

func NewAdminServer(store *db.Store) *AdminServer {
	return &AdminServer{db: store}
}

// Setup creates a new gRPC with both services
// and starts listening on the given port
func Setup(ctx context.Context, store *db.Store) (*grpc.Server, error) {
	slog.DebugContext(ctx, "Configuring gRPC server")
	server := grpc.NewServer(grpc.ChainUnaryInterceptor(
		intercept.Tagging,
	))

	m.RegisterRaftaUserServer(server, NewUserServer(store))
	m.RegisterRaftaAdminServer(server, NewAdminServer(store))

	return server, nil
}