summaryrefslogtreecommitdiffstats
path: root/store
diff options
context:
space:
mode:
Diffstat (limited to 'store')
-rw-r--r--store/sql_status_store.go22
-rw-r--r--store/sql_status_store_test.go11
-rw-r--r--store/store.go1
3 files changed, 33 insertions, 1 deletions
diff --git a/store/sql_status_store.go b/store/sql_status_store.go
index 235d12fa8..bb3c7c364 100644
--- a/store/sql_status_store.go
+++ b/store/sql_status_store.go
@@ -98,7 +98,27 @@ func (s SqlStatusStore) GetOnlineAway() StoreChannel {
var statuses []*model.Status
if _, err := s.GetReplica().Select(&statuses, "SELECT * FROM Status WHERE Status = :Online OR Status = :Away", map[string]interface{}{"Online": model.STATUS_ONLINE, "Away": model.STATUS_AWAY}); err != nil {
- result.Err = model.NewLocAppError("SqlStatusStore.GetOnline", "store.sql_status.get_online_away.app_error", nil, err.Error())
+ result.Err = model.NewLocAppError("SqlStatusStore.GetOnlineAway", "store.sql_status.get_online_away.app_error", nil, err.Error())
+ } else {
+ result.Data = statuses
+ }
+
+ storeChannel <- result
+ close(storeChannel)
+ }()
+
+ return storeChannel
+}
+
+func (s SqlStatusStore) GetOnline() StoreChannel {
+ storeChannel := make(StoreChannel)
+
+ go func() {
+ result := StoreResult{}
+
+ var statuses []*model.Status
+ if _, err := s.GetReplica().Select(&statuses, "SELECT * FROM Status WHERE Status = :Online", map[string]interface{}{"Online": model.STATUS_ONLINE}); err != nil {
+ result.Err = model.NewLocAppError("SqlStatusStore.GetOnline", "store.sql_status.get_online.app_error", nil, err.Error())
} else {
result.Data = statuses
}
diff --git a/store/sql_status_store_test.go b/store/sql_status_store_test.go
index e16dc14d0..139915bad 100644
--- a/store/sql_status_store_test.go
+++ b/store/sql_status_store_test.go
@@ -48,6 +48,17 @@ func TestSqlStatusStore(t *testing.T) {
}
}
+ if result := <-store.Status().GetOnline(); result.Err != nil {
+ t.Fatal(result.Err)
+ } else {
+ statuses := result.Data.([]*model.Status)
+ for _, status := range statuses {
+ if status.Status != model.STATUS_ONLINE {
+ t.Fatal("should not have returned offline statuses")
+ }
+ }
+ }
+
if err := (<-store.Status().ResetAll()).Err; err != nil {
t.Fatal(err)
}
diff --git a/store/store.go b/store/store.go
index c495ff927..8efec5e54 100644
--- a/store/store.go
+++ b/store/store.go
@@ -266,6 +266,7 @@ type StatusStore interface {
SaveOrUpdate(status *model.Status) StoreChannel
Get(userId string) StoreChannel
GetOnlineAway() StoreChannel
+ GetOnline() StoreChannel
ResetAll() StoreChannel
GetTotalActiveUsersCount() StoreChannel
UpdateLastActivityAt(userId string, lastActivityAt int64) StoreChannel