github.com/NpoolPlatform/chain-middleware@v0.0.0-20240228100535-eb1bcf896eb9/pkg/client/tx/client.go (about)

     1  package tx
     2  
     3  import (
     4  	"context"
     5  	"time"
     6  
     7  	grpc2 "github.com/NpoolPlatform/go-service-framework/pkg/grpc"
     8  
     9  	"github.com/NpoolPlatform/libent-cruder/pkg/cruder"
    10  	npool "github.com/NpoolPlatform/message/npool/chain/mw/v1/tx"
    11  
    12  	servicename "github.com/NpoolPlatform/chain-middleware/pkg/servicename"
    13  )
    14  
    15  var timeout = 10 * time.Second
    16  
    17  type handler func(context.Context, npool.MiddlewareClient) (cruder.Any, error)
    18  
    19  func do(ctx context.Context, handler handler) (cruder.Any, error) {
    20  	_ctx, cancel := context.WithTimeout(ctx, timeout)
    21  	defer cancel()
    22  
    23  	conn, err := grpc2.GetGRPCConn(servicename.ServiceDomain, grpc2.GRPCTAG)
    24  	if err != nil {
    25  		return nil, err
    26  	}
    27  
    28  	defer conn.Close()
    29  
    30  	cli := npool.NewMiddlewareClient(conn)
    31  
    32  	return handler(_ctx, cli)
    33  }
    34  
    35  func CreateTx(ctx context.Context, in *npool.TxReq) (*npool.Tx, error) {
    36  	info, err := do(ctx, func(_ctx context.Context, cli npool.MiddlewareClient) (cruder.Any, error) {
    37  		resp, err := cli.CreateTx(ctx, &npool.CreateTxRequest{
    38  			Info: in,
    39  		})
    40  		if err != nil {
    41  			return nil, err
    42  		}
    43  		return resp.Info, nil
    44  	})
    45  	if err != nil {
    46  		return nil, err
    47  	}
    48  	return info.(*npool.Tx), nil
    49  }
    50  
    51  func CreateTxs(ctx context.Context, in []*npool.TxReq) ([]*npool.Tx, error) {
    52  	infos, err := do(ctx, func(_ctx context.Context, cli npool.MiddlewareClient) (cruder.Any, error) {
    53  		resp, err := cli.CreateTxs(ctx, &npool.CreateTxsRequest{
    54  			Infos: in,
    55  		})
    56  		if err != nil {
    57  			return nil, err
    58  		}
    59  		return resp.Infos, nil
    60  	})
    61  	if err != nil {
    62  		return nil, err
    63  	}
    64  	return infos.([]*npool.Tx), nil
    65  }
    66  
    67  func GetTx(ctx context.Context, id string) (*npool.Tx, error) {
    68  	info, err := do(ctx, func(_ctx context.Context, cli npool.MiddlewareClient) (cruder.Any, error) {
    69  		resp, err := cli.GetTx(ctx, &npool.GetTxRequest{
    70  			EntID: id,
    71  		})
    72  		if err != nil {
    73  			return nil, err
    74  		}
    75  		return resp.Info, nil
    76  	})
    77  	if err != nil {
    78  		return nil, err
    79  	}
    80  	return info.(*npool.Tx), nil
    81  }
    82  
    83  func GetTxs(ctx context.Context, conds *npool.Conds, offset, limit int32) ([]*npool.Tx, uint32, error) {
    84  	var total uint32
    85  
    86  	infos, err := do(ctx, func(_ctx context.Context, cli npool.MiddlewareClient) (cruder.Any, error) {
    87  		resp, err := cli.GetTxs(ctx, &npool.GetTxsRequest{
    88  			Conds:  conds,
    89  			Offset: offset,
    90  			Limit:  limit,
    91  		})
    92  		if err != nil {
    93  			return nil, err
    94  		}
    95  
    96  		total = resp.Total
    97  
    98  		return resp.Infos, nil
    99  	})
   100  	if err != nil {
   101  		return nil, 0, err
   102  	}
   103  	return infos.([]*npool.Tx), total, nil
   104  }
   105  
   106  func UpdateTx(ctx context.Context, in *npool.TxReq) (*npool.Tx, error) {
   107  	info, err := do(ctx, func(_ctx context.Context, cli npool.MiddlewareClient) (cruder.Any, error) {
   108  		resp, err := cli.UpdateTx(ctx, &npool.UpdateTxRequest{
   109  			Info: in,
   110  		})
   111  		if err != nil {
   112  			return nil, err
   113  		}
   114  		return resp.Info, nil
   115  	})
   116  	if err != nil {
   117  		return nil, err
   118  	}
   119  	return info.(*npool.Tx), nil
   120  }
   121  
   122  func ExistTxConds(ctx context.Context, conds *npool.Conds) (bool, error) {
   123  	info, err := do(ctx, func(_ctx context.Context, cli npool.MiddlewareClient) (cruder.Any, error) {
   124  		resp, err := cli.ExistTxConds(ctx, &npool.ExistTxCondsRequest{
   125  			Conds: conds,
   126  		})
   127  		if err != nil {
   128  			return nil, err
   129  		}
   130  		return resp.Info, nil
   131  	})
   132  	if err != nil {
   133  		return false, err
   134  	}
   135  	return info.(bool), nil
   136  }