Add gRPC server implementation and database integration for marketplace and products

This commit is contained in:
2025-05-27 03:41:52 +03:00
parent 008f3df42d
commit b083cccc09
44 changed files with 2182 additions and 1201 deletions

View File

@@ -0,0 +1,46 @@
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
}