summaryrefslogtreecommitdiffstats
path: root/store
diff options
context:
space:
mode:
Diffstat (limited to 'store')
-rw-r--r--store/sqlstore/channel_store.go8
-rw-r--r--store/sqlstore/team_store.go11
-rw-r--r--store/sqlstore/upgrade.go10
-rw-r--r--store/store.go2
-rw-r--r--store/storetest/compliance_store.go19
-rw-r--r--store/storetest/mocks/ChannelStore.go16
-rw-r--r--store/storetest/mocks/TeamStore.go16
-rw-r--r--store/storetest/status_store.go5
-rw-r--r--store/storetest/system_store.go13
-rw-r--r--store/storetest/team_store.go109
-rw-r--r--store/storetest/user_store.go4
11 files changed, 149 insertions, 64 deletions
diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go
index e158ba5ea..97f60dda0 100644
--- a/store/sqlstore/channel_store.go
+++ b/store/sqlstore/channel_store.go
@@ -1921,3 +1921,11 @@ func (s SqlChannelStore) ClearAllCustomRoleAssignments() store.StoreChannel {
}
})
}
+
+func (s SqlChannelStore) ResetLastPostAt() store.StoreChannel {
+ return store.Do(func(result *store.StoreResult) {
+ if _, err := s.GetMaster().Exec("UPDATE Channels SET LastPostAt = (SELECT UpdateAt FROM Posts WHERE ChannelId = Channels.Id ORDER BY UpdateAt DESC LIMIT 1);"); err != nil {
+ result.Err = model.NewAppError("SqlChannelStore.ResetLastPostAt", "store.sql_channel.reset_last_post_at.app_error", nil, err.Error(), http.StatusInternalServerError)
+ }
+ })
+}
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/sqlstore/upgrade.go b/store/sqlstore/upgrade.go
index cc4e5a0cc..ab3bd202b 100644
--- a/store/sqlstore/upgrade.go
+++ b/store/sqlstore/upgrade.go
@@ -15,6 +15,7 @@ import (
)
const (
+ VERSION_5_3_0 = "5.3.0"
VERSION_5_2_0 = "5.2.0"
VERSION_5_1_0 = "5.1.0"
VERSION_5_0_0 = "5.0.0"
@@ -82,6 +83,7 @@ func UpgradeDatabase(sqlStore SqlStore) {
UpgradeDatabaseToVersion50(sqlStore)
UpgradeDatabaseToVersion51(sqlStore)
UpgradeDatabaseToVersion52(sqlStore)
+ UpgradeDatabaseToVersion53(sqlStore)
// If the SchemaVersion is empty this this is the first time it has ran
// so lets set it to the current version.
@@ -480,3 +482,11 @@ func UpgradeDatabaseToVersion52(sqlStore SqlStore) {
saveSchemaVersion(sqlStore, VERSION_5_2_0)
}
}
+
+func UpgradeDatabaseToVersion53(sqlStore SqlStore) {
+ // TODO: Uncomment following condition when version 5.3.0 is released
+ // if shouldPerformUpgrade(sqlStore, VERSION_5_2_0, VERSION_5_3_0) {
+
+ // saveSchemaVersion(sqlStore, VERSION_5_3_0)
+ // }
+}
diff --git a/store/store.go b/store/store.go
index 89adce188..0c89a0a91 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 {
@@ -171,6 +172,7 @@ type ChannelStore interface {
MigrateChannelMembers(fromChannelId string, fromUserId string) StoreChannel
ResetAllChannelSchemes() StoreChannel
ClearAllCustomRoleAssignments() StoreChannel
+ ResetLastPostAt() StoreChannel
}
type ChannelMemberHistoryStore interface {
diff --git a/store/storetest/compliance_store.go b/store/storetest/compliance_store.go
index a772f6e44..f7f095a00 100644
--- a/store/storetest/compliance_store.go
+++ b/store/storetest/compliance_store.go
@@ -10,6 +10,7 @@ import (
"github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/store"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func TestComplianceStore(t *testing.T, ss store.Store) {
@@ -35,9 +36,8 @@ func testComplianceStore(t *testing.T, ss store.Store) {
result := <-c
compliances := result.Data.(model.Compliances)
- if compliances[0].Status != model.COMPLIANCE_STATUS_RUNNING && compliance2.Id != compliances[0].Id {
- t.Fatal()
- }
+ require.Equal(t, model.COMPLIANCE_STATUS_RUNNING, compliances[0].Status)
+ require.Equal(t, compliance2.Id, compliances[0].Id)
compliance2.Status = model.COMPLIANCE_STATUS_FAILED
store.Must(ss.Compliance().Update(compliance2))
@@ -46,17 +46,14 @@ func testComplianceStore(t *testing.T, ss store.Store) {
result = <-c
compliances = result.Data.(model.Compliances)
- if compliances[0].Status != model.COMPLIANCE_STATUS_FAILED && compliance2.Id != compliances[0].Id {
- t.Fatal()
- }
+ require.Equal(t, model.COMPLIANCE_STATUS_FAILED, compliances[0].Status)
+ require.Equal(t, compliance2.Id, compliances[0].Id)
c = ss.Compliance().GetAll(0, 1)
result = <-c
compliances = result.Data.(model.Compliances)
- if len(compliances) != 1 {
- t.Fatal("should only have returned 1")
- }
+ require.Len(t, compliances, 1)
c = ss.Compliance().GetAll(1, 1)
result = <-c
@@ -67,9 +64,7 @@ func testComplianceStore(t *testing.T, ss store.Store) {
}
rc2 := (<-ss.Compliance().Get(compliance2.Id)).Data.(*model.Compliance)
- if rc2.Status != compliance2.Status {
- t.Fatal()
- }
+ require.Equal(t, compliance2.Status, rc2.Status)
}
func testComplianceExport(t *testing.T, ss store.Store) {
diff --git a/store/storetest/mocks/ChannelStore.go b/store/storetest/mocks/ChannelStore.go
index 8adc98e10..747a844ec 100644
--- a/store/storetest/mocks/ChannelStore.go
+++ b/store/storetest/mocks/ChannelStore.go
@@ -711,6 +711,22 @@ func (_m *ChannelStore) ResetAllChannelSchemes() store.StoreChannel {
return r0
}
+// ResetLastPostAt provides a mock function with given fields:
+func (_m *ChannelStore) ResetLastPostAt() store.StoreChannel {
+ ret := _m.Called()
+
+ var r0 store.StoreChannel
+ if rf, ok := ret.Get(0).(func() store.StoreChannel); ok {
+ r0 = rf()
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(store.StoreChannel)
+ }
+ }
+
+ return r0
+}
+
// Restore provides a mock function with given fields: channelId, time
func (_m *ChannelStore) Restore(channelId string, time int64) store.StoreChannel {
ret := _m.Called(channelId, time)
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/status_store.go b/store/storetest/status_store.go
index b26be4c19..5231bc29a 100644
--- a/store/storetest/status_store.go
+++ b/store/storetest/status_store.go
@@ -8,6 +8,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
"github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/store"
@@ -103,9 +104,7 @@ func testActiveUserCount(t *testing.T, ss store.Store) {
t.Fatal(result.Err)
} else {
count := result.Data.(int64)
- if count <= 0 {
- t.Fatal()
- }
+ require.True(t, count > 0, "expected count > 0, got %d", count)
}
}
diff --git a/store/storetest/system_store.go b/store/storetest/system_store.go
index a06b72a83..6dc1efe41 100644
--- a/store/storetest/system_store.go
+++ b/store/storetest/system_store.go
@@ -7,6 +7,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
"github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/store"
@@ -25,9 +26,7 @@ func testSystemStore(t *testing.T, ss store.Store) {
result := <-ss.System().Get()
systems := result.Data.(model.StringMap)
- if systems[system.Name] != system.Value {
- t.Fatal()
- }
+ require.Equal(t, system.Value, systems[system.Name])
system.Value = "value2"
store.Must(ss.System().Update(system))
@@ -35,15 +34,11 @@ func testSystemStore(t *testing.T, ss store.Store) {
result2 := <-ss.System().Get()
systems2 := result2.Data.(model.StringMap)
- if systems2[system.Name] != system.Value {
- t.Fatal()
- }
+ require.Equal(t, system.Value, systems2[system.Name])
result3 := <-ss.System().GetByName(system.Name)
rsystem := result3.Data.(*model.System)
- if rsystem.Value != system.Value {
- t.Fatal()
- }
+ require.Equal(t, system.Value, rsystem.Value)
}
func testSystemStoreSaveOrUpdate(t *testing.T, ss store.Store) {
diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go
index 40d69a2f2..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) {
@@ -590,10 +591,7 @@ func testTeamMembers(t *testing.T, ss store.Store) {
t.Fatal(r1.Err)
} else {
ms := r1.Data.([]*model.TeamMember)
-
- if len(ms) != 2 {
- t.Fatal()
- }
+ require.Len(t, ms, 2)
}
if r1 := <-ss.Team().GetMembers(teamId2, 0, 100); r1.Err != nil {
@@ -601,14 +599,8 @@ func testTeamMembers(t *testing.T, ss store.Store) {
} else {
ms := r1.Data.([]*model.TeamMember)
- if len(ms) != 1 {
- t.Fatal()
- }
-
- if ms[0].UserId != m3.UserId {
- t.Fatal()
-
- }
+ require.Len(t, ms, 1)
+ require.Equal(t, m3.UserId, ms[0].UserId)
}
if r1 := <-ss.Team().GetTeamsForUser(m1.UserId); r1.Err != nil {
@@ -616,14 +608,8 @@ func testTeamMembers(t *testing.T, ss store.Store) {
} else {
ms := r1.Data.([]*model.TeamMember)
- if len(ms) != 1 {
- t.Fatal()
- }
-
- if ms[0].TeamId != m1.TeamId {
- t.Fatal()
-
- }
+ require.Len(t, ms, 1)
+ require.Equal(t, m1.TeamId, ms[0].TeamId)
}
if r1 := <-ss.Team().RemoveMember(teamId1, m1.UserId); r1.Err != nil {
@@ -635,14 +621,8 @@ func testTeamMembers(t *testing.T, ss store.Store) {
} else {
ms := r1.Data.([]*model.TeamMember)
- if len(ms) != 1 {
- t.Fatal()
- }
-
- if ms[0].UserId != m2.UserId {
- t.Fatal()
-
- }
+ require.Len(t, ms, 1)
+ require.Equal(t, m2.UserId, ms[0].UserId)
}
store.Must(ss.Team().SaveMember(m1, -1))
@@ -656,9 +636,7 @@ func testTeamMembers(t *testing.T, ss store.Store) {
} else {
ms := r1.Data.([]*model.TeamMember)
- if len(ms) != 0 {
- t.Fatal()
- }
+ require.Len(t, ms, 0)
}
uid := model.NewId()
@@ -672,9 +650,7 @@ func testTeamMembers(t *testing.T, ss store.Store) {
} else {
ms := r1.Data.([]*model.TeamMember)
- if len(ms) != 2 {
- t.Fatal()
- }
+ require.Len(t, ms, 2)
}
if r1 := <-ss.Team().RemoveAllMembersByUser(uid); r1.Err != nil {
@@ -686,9 +662,7 @@ func testTeamMembers(t *testing.T, ss store.Store) {
} else {
ms := r1.Data.([]*model.TeamMember)
- if len(ms) != 0 {
- t.Fatal()
- }
+ require.Len(t, ms, 0)
}
}
@@ -1292,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)
+}
diff --git a/store/storetest/user_store.go b/store/storetest/user_store.go
index 10fb6a4d9..d1a373f9b 100644
--- a/store/storetest/user_store.go
+++ b/store/storetest/user_store.go
@@ -246,9 +246,7 @@ func testUserCount(t *testing.T, ss store.Store) {
t.Fatal(result.Err)
} else {
count := result.Data.(int64)
- if count <= 0 {
- t.Fatal()
- }
+ require.False(t, count <= 0, "expected count > 0, got %d", count)
}
}