github.com/NpoolPlatform/chain-middleware@v0.0.0-20240228100535-eb1bcf896eb9/api/coin/usedfor/create.go (about) 1 package coinusedfor 2 3 import ( 4 "context" 5 6 coinusedfor1 "github.com/NpoolPlatform/chain-middleware/pkg/mw/coin/usedfor" 7 "github.com/NpoolPlatform/go-service-framework/pkg/logger" 8 npool "github.com/NpoolPlatform/message/npool/chain/mw/v1/coin/usedfor" 9 10 "google.golang.org/grpc/codes" 11 "google.golang.org/grpc/status" 12 ) 13 14 func (s *Server) CreateCoinUsedFor(ctx context.Context, in *npool.CreateCoinUsedForRequest) (*npool.CreateCoinUsedForResponse, error) { 15 req := in.GetInfo() 16 if req == nil { 17 logger.Sugar().Errorw( 18 "CreateCoinUsedFor", 19 "In", in, 20 ) 21 return &npool.CreateCoinUsedForResponse{}, status.Error(codes.InvalidArgument, "invalid info") 22 } 23 handler, err := coinusedfor1.NewHandler( 24 ctx, 25 coinusedfor1.WithCoinTypeID(req.CoinTypeID, true), 26 coinusedfor1.WithUsedFor(req.UsedFor, true), 27 coinusedfor1.WithPriority(req.Priority, true), 28 ) 29 if err != nil { 30 logger.Sugar().Errorw( 31 "CreateCoinUsedFor", 32 "In", in, 33 "Error", err, 34 ) 35 return &npool.CreateCoinUsedForResponse{}, status.Error(codes.InvalidArgument, err.Error()) 36 } 37 38 info, err := handler.CreateCoinUsedFor(ctx) 39 if err != nil { 40 logger.Sugar().Errorw( 41 "CreateCoinUsedFor", 42 "In", in, 43 "Error", err, 44 ) 45 return &npool.CreateCoinUsedForResponse{}, status.Error(codes.Internal, err.Error()) 46 } 47 48 return &npool.CreateCoinUsedForResponse{ 49 Info: info, 50 }, nil 51 }