Skip to content

Commit

Permalink
feature: list friend invitation
Browse files Browse the repository at this point in the history
  • Loading branch information
Danielllllllllllllll committed Jun 27, 2024
1 parent 21d3b71 commit 164dbb8
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 73 deletions.
4 changes: 2 additions & 2 deletions protobuf/friend.proto
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ message ListFriendInvitationResponse{
}

message Invitation{
string sender_id = 1;
string name = 2;
string sender_nickId = 1;
string sender_name = 2;
}

message AcceptInvitation_post_Request{
Expand Down
136 changes: 69 additions & 67 deletions protobuf/gen/go/friend.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 46 additions & 0 deletions services/api/controllers/friend/list_friend_invitation.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package friend

import (
"context"
"database/sql"
"monify/lib"
monify "monify/protobuf/gen/go"

"go.uber.org/zap"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)

func (s Service) ListFriendInvitation(ctx context.Context, req *monify.FriendEmpty) (*monify.ListFriendInvitationResponse, error) {
logger := ctx.Value(lib.LoggerContextKey{}).(*zap.Logger)
userId := ctx.Value(lib.UserIdContextKey{})
if userId == nil {
return nil, status.Error(codes.Unauthenticated, "Unauthorized.")
}
db := ctx.Value(lib.DatabaseContextKey{}).(*sql.DB)
query, err := db.QueryContext(ctx, `
SELECT nick_id, name
FROM user_identity JOIN friend_invite ON user_identity.user_id = friend_invite.sender
WHERE friend_invite.receiver = $1`, userId)
if err != nil {
logger.Error("Select friend invitation error.", zap.Error(err))
return nil, status.Error(codes.Internal, "")
}

var invitaions []*monify.Invitation
for {
if !query.Next() {
break
}
var invitaion monify.Invitation
if err = query.Scan(&invitaion.SenderNickId, &invitaion.SenderName); err != nil {
logger.Error("Scan invitation nick_id and name error.", zap.Error(err))
return nil, status.Error(codes.Internal, "")
}
invitaions = append(invitaions, &invitaion)
}

return &monify.ListFriendInvitationResponse{
Invitation: invitaions,
}, nil
}
16 changes: 12 additions & 4 deletions services/api/test/friend_invite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,19 @@ import (
)

func TestInviteFriend(t *testing.T) {
// test invite
client := GetTestClient(t)
_ = client.CreateTestUser()
_, err := client.UpdateUserNickId(context.Background(), &monify.UpdateUserNickIdRequest{NickId: "test_nickId"})
user1 := client.CreateTestUser()
_, err := client.UpdateUserNickId(context.Background(), &monify.UpdateUserNickIdRequest{NickId: "test_nickId1"})
assert.NoError(t, err)
_, err = client.InviteFriend(context.TODO(), &monify.InviteFriendRequest{ReceiverNickId: "test_nickId1"})
assert.NoError(t, err)
//_, err = client.InviteFriend(context.TODO(), &monify.InviteFriendRequest{ReceiverNickId: "test_nickId"})
//assert.NoError(t, err)

// test list invitation
_ = client.CreateTestUser()
_, err = client.InviteFriend(context.TODO(), &monify.InviteFriendRequest{ReceiverNickId: "test_nickId1"})
client.SetTestUser(user1)
invitaions, err := client.ListFriendInvitation(context.TODO(), &monify.FriendEmpty{})
assert.NoError(t, err)
assert.Equal(t, len(invitaions.GetInvitation()), 2)
}

0 comments on commit 164dbb8

Please sign in to comment.