Added an initial call to get all user preferences on page load
Этот коммит содержится в:
@@ -212,3 +212,30 @@ func (s SqlPreferenceStore) GetCategory(userId string, category string) StoreCha
|
||||
|
||||
return storeChannel
|
||||
}
|
||||
|
||||
func (s SqlPreferenceStore) GetAll(userId string) StoreChannel {
|
||||
storeChannel := make(StoreChannel)
|
||||
|
||||
go func() {
|
||||
result := StoreResult{}
|
||||
|
||||
var preferences model.Preferences
|
||||
|
||||
if _, err := s.GetReplica().Select(&preferences,
|
||||
`SELECT
|
||||
*
|
||||
FROM
|
||||
Preferences
|
||||
WHERE
|
||||
UserId = :UserId`, map[string]interface{}{"UserId": userId}); err != nil {
|
||||
result.Err = model.NewAppError("SqlPreferenceStore.GetAll", "We encounted an error while finding preferences", err.Error())
|
||||
} else {
|
||||
result.Data = preferences
|
||||
}
|
||||
|
||||
storeChannel <- result
|
||||
close(storeChannel)
|
||||
}()
|
||||
|
||||
return storeChannel
|
||||
}
|
||||
|
||||
@@ -144,3 +144,51 @@ func TestPreferenceGetCategory(t *testing.T) {
|
||||
t.Fatal("shouldn't have got any preferences")
|
||||
}
|
||||
}
|
||||
|
||||
func TestPreferenceGetAll(t *testing.T) {
|
||||
Setup()
|
||||
|
||||
userId := model.NewId()
|
||||
category := model.PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW
|
||||
name := model.NewId()
|
||||
|
||||
preferences := model.Preferences{
|
||||
{
|
||||
UserId: userId,
|
||||
Category: category,
|
||||
Name: name,
|
||||
},
|
||||
// same user/category, different name
|
||||
{
|
||||
UserId: userId,
|
||||
Category: category,
|
||||
Name: model.NewId(),
|
||||
},
|
||||
// same user/name, different category
|
||||
{
|
||||
UserId: userId,
|
||||
Category: model.NewId(),
|
||||
Name: name,
|
||||
},
|
||||
// same name/category, different user
|
||||
{
|
||||
UserId: model.NewId(),
|
||||
Category: category,
|
||||
Name: name,
|
||||
},
|
||||
}
|
||||
|
||||
Must(store.Preference().Save(&preferences))
|
||||
|
||||
if result := <-store.Preference().GetAll(userId); result.Err != nil {
|
||||
t.Fatal(result.Err)
|
||||
} else if data := result.Data.(model.Preferences); len(data) != 3 {
|
||||
t.Fatal("got the wrong number of preferences")
|
||||
} else {
|
||||
for i := 0; i < 3; i++ {
|
||||
if data[0] != preferences[i] && data[1] != preferences[i] && data[2] != preferences[i] {
|
||||
t.Fatal("got incorrect preferences")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,4 +156,5 @@ type PreferenceStore interface {
|
||||
Save(preferences *model.Preferences) StoreChannel
|
||||
Get(userId string, category string, name string) StoreChannel
|
||||
GetCategory(userId string, category string) StoreChannel
|
||||
GetAll(userId string) StoreChannel
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user