udemy-go-microservices/logger-service/cmd/api/grpc.go

60 lines
1.1 KiB
Go
Raw Permalink Normal View History

2024-09-06 20:42:23 +00:00
package main
2024-09-06 20:36:07 +00:00
import (
"context"
2024-09-06 20:42:23 +00:00
"fmt"
"log"
2024-09-06 20:36:07 +00:00
"logger/data"
"logger/logs"
2024-09-06 20:42:23 +00:00
"net"
2024-09-06 21:11:49 +00:00
"time"
2024-09-06 20:42:23 +00:00
"google.golang.org/grpc"
2024-09-06 20:36:07 +00:00
)
type LogServer struct {
logs.UnimplementedLogServiceServer
Models data.Models
}
func (l *LogServer) WriteLog(
ctx context.Context,
req *logs.LogRequest,
) (*logs.LogResponse, error) {
2024-09-06 21:11:49 +00:00
now := time.Now()
2024-09-06 20:36:07 +00:00
input := req.GetLogEntry()
// write the log
logEntry := data.LogEntry{
Name: input.Name,
Data: input.Data,
}
2024-09-06 21:11:49 +00:00
logEntry.Data += fmt.Sprintf(" received date %d", now.UnixMicro())
2024-09-06 20:36:07 +00:00
err := l.Models.LogEntry.Insert(logEntry)
if err != nil {
res := &logs.LogResponse{Result: "failed"}
return res, err
}
res := &logs.LogResponse{Result: "logged!"}
return res, nil
}
2024-09-06 20:42:23 +00:00
func (app *Config) gRPCListen() {
lis, err := net.Listen("tcp", fmt.Sprintf(":%s", gRpcPort))
if err != nil {
log.Fatalf("Failed to listen to gRPC %v", err)
}
s := grpc.NewServer()
logs.RegisterLogServiceServer(s, &LogServer{Models: app.Models})
log.Printf("gRPC Server started on port %s", gRpcPort)
if err := s.Serve(lis); err != nil {
log.Fatalf("Failed to listen to gRPC %v", err)
}
}