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 }