summaryrefslogtreecommitdiffstats
path: root/store
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2018-08-23 11:48:57 +0100
committerGitHub <noreply@github.com>2018-08-23 11:48:57 +0100
commit8bbee74ed811e7aa8167ad7cea6d05042a90f446 (patch)
tree44fda1e000262a78b92a1fa57c1655eced59c2a1 /store
parentdc4d009c78fdbeaf58d61a92eba58cac86ed6ffa (diff)
downloadchat-8bbee74ed811e7aa8167ad7cea6d05042a90f446.tar.gz
chat-8bbee74ed811e7aa8167ad7cea6d05042a90f446.tar.bz2
chat-8bbee74ed811e7aa8167ad7cea6d05042a90f446.zip
MM-11348: Add telemetry for advanced permissions. (#9249)
Diffstat (limited to 'store')
-rw-r--r--store/sqlstore/team_store.go11
-rw-r--r--store/store.go1
-rw-r--r--store/storetest/mocks/TeamStore.go16
-rw-r--r--store/storetest/team_store.go62
4 files changed, 90 insertions, 0 deletions
diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go
index 4277a0ba2..d9e33df76 100644
--- a/store/sqlstore/team_store.go
+++ b/store/sqlstore/team_store.go
@@ -913,3 +913,14 @@ func (s SqlTeamStore) ClearAllCustomRoleAssignments() store.StoreChannel {
}
})
}
+
+func (s SqlTeamStore) AnalyticsGetTeamCountForScheme(schemeId string) store.StoreChannel {
+ return store.Do(func(result *store.StoreResult) {
+ count, err := s.GetReplica().SelectInt("SELECT count(*) FROM Teams WHERE SchemeId = :SchemeId AND DeleteAt = 0", map[string]interface{}{"SchemeId": schemeId})
+ if err != nil {
+ result.Err = model.NewAppError("SqlTeamStore.AnalyticsGetTeamCountForScheme", "store.sql_team.analytics_get_team_count_for_scheme.app_error", nil, "schemeId="+schemeId+" "+err.Error(), http.StatusInternalServerError)
+ return
+ }
+ result.Data = count
+ })
+}
diff --git a/store/store.go b/store/store.go
index 89adce188..34ba08091 100644
--- a/store/store.go
+++ b/store/store.go
@@ -110,6 +110,7 @@ type TeamStore interface {
MigrateTeamMembers(fromTeamId string, fromUserId string) StoreChannel
ResetAllTeamSchemes() StoreChannel
ClearAllCustomRoleAssignments() StoreChannel
+ AnalyticsGetTeamCountForScheme(schemeId string) StoreChannel
}
type ChannelStore interface {
diff --git a/store/storetest/mocks/TeamStore.go b/store/storetest/mocks/TeamStore.go
index db5cb658f..8e27e3c05 100644
--- a/store/storetest/mocks/TeamStore.go
+++ b/store/storetest/mocks/TeamStore.go
@@ -13,6 +13,22 @@ type TeamStore struct {
mock.Mock
}
+// AnalyticsGetTeamCountForScheme provides a mock function with given fields: schemeId
+func (_m *TeamStore) AnalyticsGetTeamCountForScheme(schemeId string) store.StoreChannel {
+ ret := _m.Called(schemeId)
+
+ var r0 store.StoreChannel
+ if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok {
+ r0 = rf(schemeId)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(store.StoreChannel)
+ }
+ }
+
+ return r0
+}
+
// AnalyticsTeamCount provides a mock function with given fields:
func (_m *TeamStore) AnalyticsTeamCount() store.StoreChannel {
ret := _m.Called()
diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go
index 2840f2965..ede1a91d3 100644
--- a/store/storetest/team_store.go
+++ b/store/storetest/team_store.go
@@ -44,6 +44,7 @@ func TestTeamStore(t *testing.T, ss store.Store) {
t.Run("MigrateTeamMembers", func(t *testing.T) { testTeamStoreMigrateTeamMembers(t, ss) })
t.Run("ResetAllTeamSchemes", func(t *testing.T) { testResetAllTeamSchemes(t, ss) })
t.Run("ClearAllCustomRoleAssignments", func(t *testing.T) { testTeamStoreClearAllCustomRoleAssignments(t, ss) })
+ t.Run("AnalyticsGetTeamCountForScheme", func(t *testing.T) { testTeamStoreAnalyticsGetTeamCountForScheme(t, ss) })
}
func testTeamStoreSave(t *testing.T, ss store.Store) {
@@ -1265,3 +1266,64 @@ func testTeamStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) {
require.Nil(t, r4.Err)
assert.Equal(t, "", r4.Data.(*model.TeamMember).Roles)
}
+
+func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) {
+ s1 := &model.Scheme{
+ DisplayName: model.NewId(),
+ Name: model.NewId(),
+ Description: model.NewId(),
+ Scope: model.SCHEME_SCOPE_TEAM,
+ }
+ s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme)
+
+ count1 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64)
+ assert.Equal(t, int64(0), count1)
+
+ t1 := &model.Team{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Email: MakeEmail(),
+ Type: model.TEAM_OPEN,
+ SchemeId: &s1.Id,
+ }
+ t1 = (<-ss.Team().Save(t1)).Data.(*model.Team)
+
+ count2 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64)
+ assert.Equal(t, int64(1), count2)
+
+ t2 := &model.Team{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Email: MakeEmail(),
+ Type: model.TEAM_OPEN,
+ SchemeId: &s1.Id,
+ }
+ t2 = (<-ss.Team().Save(t2)).Data.(*model.Team)
+
+ count3 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64)
+ assert.Equal(t, int64(2), count3)
+
+ t3 := &model.Team{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Email: MakeEmail(),
+ Type: model.TEAM_OPEN,
+ }
+ t3 = (<-ss.Team().Save(t3)).Data.(*model.Team)
+
+ count4 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64)
+ assert.Equal(t, int64(2), count4)
+
+ t4 := &model.Team{
+ Name: model.NewId(),
+ DisplayName: model.NewId(),
+ Email: MakeEmail(),
+ Type: model.TEAM_OPEN,
+ SchemeId: &s1.Id,
+ DeleteAt: model.GetMillis(),
+ }
+ t4 = (<-ss.Team().Save(t4)).Data.(*model.Team)
+
+ count5 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64)
+ assert.Equal(t, int64(2), count5)
+}