first commit
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
|
||||
"api-service/internal/config"
|
||||
"api-service/internal/grpc/pb"
|
||||
pasienHandlers "api-service/internal/handlers/pasien"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
func RunGRPCServer(cfg *config.Config, pasienHandler *pasienHandlers.PasienHandler) error {
|
||||
lis, err := net.Listen("tcp", fmt.Sprintf(":%d", cfg.GRPC.Port))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
s := grpc.NewServer()
|
||||
pb.RegisterPasienServiceServer(s, NewPasienGRPCServer(pasienHandler))
|
||||
|
||||
log.Printf("gRPC server listening on :%d", cfg.GRPC.Port)
|
||||
return s.Serve(lis)
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"api-service/internal/grpc/pb"
|
||||
pasienHandlers "api-service/internal/handlers/pasien"
|
||||
)
|
||||
|
||||
type PasienGRPCServer struct {
|
||||
pb.UnimplementedPasienServiceServer
|
||||
handler *pasienHandlers.PasienHandler
|
||||
}
|
||||
|
||||
func NewPasienGRPCServer(handler *pasienHandlers.PasienHandler) *PasienGRPCServer {
|
||||
return &PasienGRPCServer{handler: handler}
|
||||
}
|
||||
|
||||
func (s *PasienGRPCServer) GetPasien(ctx context.Context, req *pb.GetPasienRequest) (*pb.GetPasienResponse, error) {
|
||||
// Di sini idealnya kamu panggil service langsung.
|
||||
// Contoh pseudo (sesuaikan dengan service asli kamu):
|
||||
list, err := s.handler.Service.GetPasien(ctx, int(req.Page), int(req.Limit))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
out := make([]*pb.Pasien, 0, len(list))
|
||||
for _, p := range list {
|
||||
out = &pb.Pasien{
|
||||
Nomr: p.Nomr,
|
||||
Nama: p.Nama,
|
||||
Umur: int32(p.Umur),
|
||||
}
|
||||
out = append(out, out)
|
||||
}
|
||||
|
||||
return &pb.GetPasienResponse{Data: out}, nil
|
||||
}
|
||||
|
||||
func (s *PasienGRPCServer) GetPasienByNomr(ctx context.Context, req *pb.GetPasienByNomrRequest) (*pb.Pasien, error) {
|
||||
p, err := s.handler.Service.GetByNomr(ctx, req.Nomr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &pb.Pasien{
|
||||
Nomr: p.Nomr,
|
||||
Nama: p.Nama,
|
||||
Umur: int32(p.Umur),
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user