45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
package grpc
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
"net"
|
|
|
|
"git.maximotejeda.com/maximo/cedulados/config"
|
|
"git.maximotejeda.com/maximo/cedulados/internal/ports"
|
|
"git.maximotejeda.com/maximo/cedulados/proto/golang/cedulados"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/reflection"
|
|
)
|
|
|
|
type Adapter struct {
|
|
api ports.APIPorts
|
|
port int
|
|
log *slog.Logger
|
|
cedulados.UnimplementedQueryCeduladoServer
|
|
}
|
|
|
|
func NewAdapter(api ports.APIPorts, port int) *Adapter {
|
|
log := slog.Default()
|
|
log = log.With("adapter", "cedulados-grpc")
|
|
return &Adapter{api: api, port: port, log: log}
|
|
}
|
|
|
|
func (a Adapter) Run() {
|
|
var err error
|
|
|
|
listen, err := net.Listen("tcp", fmt.Sprintf(":%d", a.port))
|
|
if err != nil {
|
|
a.log.Error("failed to listen", "port", a.port, "error", err)
|
|
panic(err)
|
|
}
|
|
grpcServer := grpc.NewServer()
|
|
cedulados.RegisterQueryCeduladoServer(grpcServer, a)
|
|
if config.GetEnv() == "development" {
|
|
reflection.Register(grpcServer)
|
|
}
|
|
if err := grpcServer.Serve(listen); err != nil {
|
|
a.log.Error("failed to serve grpc on port", "port", a.port)
|
|
}
|
|
}
|