From 5462f0119edb788428f90fc61c8651e4a8cd9ad1 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Tue, 7 Feb 2017 14:58:27 -0800 Subject: Implement a few channel member endpoints for APIv4 (#5304) * Implement GET /channels/{channel_id}/members * Implement GET /channels/{channel_id}/members/{user_id} endpoint for APIv4 * Implement /users/{user_id}/teams/{team_id}/channels/members endpoint for APIv4 * Fix unit test --- store/sql_channel_store.go | 10 +++++----- store/sql_channel_store_test.go | 8 ++++---- store/store.go | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'store') diff --git a/store/sql_channel_store.go b/store/sql_channel_store.go index 7c4e97bc0..dfc77bd8a 100644 --- a/store/sql_channel_store.go +++ b/store/sql_channel_store.go @@ -751,18 +751,18 @@ func (s SqlChannelStore) UpdateMember(member *model.ChannelMember) StoreChannel return storeChannel } -func (s SqlChannelStore) GetMembers(channelId string) StoreChannel { +func (s SqlChannelStore) GetMembers(channelId string, offset, limit int) StoreChannel { storeChannel := make(StoreChannel, 1) go func() { result := StoreResult{} - var members []model.ChannelMember - _, err := s.GetReplica().Select(&members, "SELECT * FROM ChannelMembers WHERE ChannelId = :ChannelId", map[string]interface{}{"ChannelId": channelId}) + var members model.ChannelMembers + _, err := s.GetReplica().Select(&members, "SELECT * FROM ChannelMembers WHERE ChannelId = :ChannelId LIMIT :Limit OFFSET :Offset", map[string]interface{}{"ChannelId": channelId, "Limit": limit, "Offset": offset}) if err != nil { result.Err = model.NewLocAppError("SqlChannelStore.GetMembers", "store.sql_channel.get_members.app_error", nil, "channel_id="+channelId+err.Error()) } else { - result.Data = members + result.Data = &members } storeChannel <- result @@ -782,7 +782,7 @@ func (s SqlChannelStore) GetMember(channelId string, userId string) StoreChannel if err := s.GetReplica().SelectOne(&member, "SELECT * FROM ChannelMembers WHERE ChannelId = :ChannelId AND UserId = :UserId", map[string]interface{}{"ChannelId": channelId, "UserId": userId}); err != nil { if err == sql.ErrNoRows { - result.Err = model.NewLocAppError("SqlChannelStore.GetMember", MISSING_CHANNEL_MEMBER_ERROR, nil, "channel_id="+channelId+"user_id="+userId+","+err.Error()) + result.Err = model.NewAppError("SqlChannelStore.GetMember", MISSING_CHANNEL_MEMBER_ERROR, nil, "channel_id="+channelId+"user_id="+userId+","+err.Error(), http.StatusNotFound) } else { result.Err = model.NewLocAppError("SqlChannelStore.GetMember", "store.sql_channel.get_member.app_error", nil, "channel_id="+channelId+"user_id="+userId+","+err.Error()) } diff --git a/store/sql_channel_store_test.go b/store/sql_channel_store_test.go index 51ca11e8e..03fc50857 100644 --- a/store/sql_channel_store_test.go +++ b/store/sql_channel_store_test.go @@ -79,8 +79,8 @@ func TestChannelStoreSaveDirectChannel(t *testing.T) { t.Fatal("couldn't save direct channel", err) } - members := (<-store.Channel().GetMembers(o1.Id)).Data.([]model.ChannelMember) - if len(members) != 2 { + members := (<-store.Channel().GetMembers(o1.Id, 0, 100)).Data.(*model.ChannelMembers) + if len(*members) != 2 { t.Fatal("should have saved 2 members") } @@ -135,8 +135,8 @@ func TestChannelStoreCreateDirectChannel(t *testing.T) { c1 := res.Data.(*model.Channel) - members := (<-store.Channel().GetMembers(c1.Id)).Data.([]model.ChannelMember) - if len(members) != 2 { + members := (<-store.Channel().GetMembers(c1.Id, 0, 100)).Data.(*model.ChannelMembers) + if len(*members) != 2 { t.Fatal("should have saved 2 members") } } diff --git a/store/store.go b/store/store.go index faf40c280..c94dbc469 100644 --- a/store/store.go +++ b/store/store.go @@ -105,7 +105,7 @@ type ChannelStore interface { GetForPost(postId string) StoreChannel SaveMember(member *model.ChannelMember) StoreChannel UpdateMember(member *model.ChannelMember) StoreChannel - GetMembers(channelId string) StoreChannel + GetMembers(channelId string, offset, limit int) StoreChannel GetMember(channelId string, userId string) StoreChannel GetAllChannelMembersForUser(userId string, allowFromCache bool) StoreChannel InvalidateAllChannelMembersForUser(userId string) -- cgit v1.2.3-1-g7c22