From eecf8bb8ae1b777e35af3edf2e2bd4f9f548f0cd Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Thu, 9 Feb 2023 15:38:50 +0800 Subject: [PATCH] api to rpc use generic paradigm --- internal/api/group/group_test.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/internal/api/group/group_test.go b/internal/api/group/group_test.go index 1cfeb0810..ddd6e61f2 100644 --- a/internal/api/group/group_test.go +++ b/internal/api/group/group_test.go @@ -4,8 +4,10 @@ import ( "Open_IM/pkg/api_struct" "Open_IM/pkg/proto/group" "context" + "errors" "github.com/gin-gonic/gin" "google.golang.org/grpc" + "reflect" "testing" ) @@ -67,7 +69,8 @@ func KickGroupMember(c *gin.Context) { // 默认 全部自动 NewRpc(NewApiBind[api_struct.KickGroupMemberReq, api_struct.KickGroupMemberResp](c), "", group.NewGroupClient, group.GroupClient.KickGroupMember).Execute() // 可以自定义编辑请求和响应 - NewRpc(NewApiBind[api_struct.KickGroupMemberReq, api_struct.KickGroupMemberResp](c), "", group.NewGroupClient, group.GroupClient.KickGroupMember).Before(func(apiReq *api_struct.KickGroupMemberReq, rpcReq *group.KickGroupMemberReq, bind func() error) error { + a := NewRpc(NewApiBind[api_struct.KickGroupMemberReq, api_struct.KickGroupMemberResp](c), "", group.NewGroupClient, group.GroupClient.KickGroupMember) + a.Before(func(apiReq *api_struct.KickGroupMemberReq, rpcReq *group.KickGroupMemberReq, bind func() error) error { return bind() }).After(func(rpcResp *group.KickGroupMemberResp, apiResp *api_struct.KickGroupMemberResp, bind func() error) error { return bind() @@ -102,6 +105,22 @@ func (a *RpcRun[A, B, C, D, Z]) After(fn func(rpcResp D, apiResp *B, bind func() return a } +func (a *RpcRun[A, B, C, D, Z]) execute() (*B, error) { + userID, err := a.bind.OpUserID() + if err != nil { + return nil, err + } + opID := a.bind.OperationID() + var rpcReq C // C type => *Struct + rpcReq = reflect.New(reflect.TypeOf(rpcReq).Elem()).Interface().(C) + + return nil, nil +} + func (a *RpcRun[A, B, C, D, Z]) Execute() { } + +func GetGrpcConn(name string) (*grpc.ClientConn, error) { + return nil, errors.New("todo") +}