df/bff/gapi/server.go

57 lines
1.3 KiB
Go

package gapi
import (
"context"
"fmt"
"log"
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
db "github.com/itsscb/df/bff/db/sqlc"
"github.com/itsscb/df/bff/pb"
"github.com/itsscb/df/bff/token"
"github.com/itsscb/df/bff/util"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
// Server serves gRPC requests for df service
type Server struct {
pb.UnimplementedAccountsServer
pb.UnimplementedSessionsServer
store db.Store
config util.Config
tokenMaker token.Maker
}
func NewServer(config util.Config, store db.Store) (*Server, error) {
tokenMaker, err := token.NewPasetoMaker(config.TokenPrivateKeyHex)
if err != nil {
return nil, fmt.Errorf("cannot create token maker: %w", err)
}
server := &Server{
store: store,
config: config,
tokenMaker: tokenMaker,
}
return server, nil
}
func (server *Server) RegisterServer(grpcServer *grpc.Server) {
pb.RegisterAccountsServer(grpcServer, server)
pb.RegisterSessionsServer(grpcServer, server)
reflection.Register(grpcServer)
}
func (server *Server) RegisterHandler(ctx context.Context, mux *runtime.ServeMux) {
err := pb.RegisterAccountsHandlerServer(ctx, mux, server)
if err != nil {
log.Fatal("cannot register handler server")
}
err = pb.RegisterSessionsHandlerServer(ctx, mux, server)
if err != nil {
log.Fatal("cannot register handler server")
}
}