47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package marketplace
|
|
|
|
import (
|
|
"context"
|
|
"github.com/jackc/pgx/v5"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
pb "sipro-mps/api/generated/v1/marketplace"
|
|
)
|
|
|
|
// AdapterGRPC implements the gRPC server for the Marketplace service.
|
|
type AdapterGRPC struct {
|
|
pb.UnimplementedMarketplaceServiceServer
|
|
repo Repository
|
|
}
|
|
|
|
func NewAdapterGRPC(repo Repository) *AdapterGRPC {
|
|
return &AdapterGRPC{
|
|
repo: repo,
|
|
}
|
|
}
|
|
func RegisterAdapterGRPC(server *grpc.Server) (*Repository, error) {
|
|
conn, err := pgx.Connect(context.Background(), "postgresql://postgres:GjitkeYf%5Beq@/sipro?host=/run/postgresql")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
repo := NewDBRepository(conn)
|
|
adapter := NewAdapterGRPC(repo)
|
|
pb.RegisterMarketplaceServiceServer(server, adapter)
|
|
return &repo, nil
|
|
}
|
|
|
|
func (g *AdapterGRPC) GetMarketplaceById(ctx context.Context, r *pb.GetMarketplaceByIdRequest) (*pb.Marketplace, error) {
|
|
mp, err := g.repo.GetMarketplaceByID(ctx, int(r.MarketplaceId))
|
|
if err != nil {
|
|
return nil, status.Errorf(codes.Internal, "failed to get marketplace by ID: %v", err)
|
|
}
|
|
|
|
return &pb.Marketplace{
|
|
Id: uint64(uint32(mp.ID)),
|
|
BaseMarketplace: uint32(int32(mp.BaseMarketplace)),
|
|
AuthData: mp.AuthData,
|
|
WarehouseId: mp.WarehouseID,
|
|
}, nil
|
|
}
|