mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
* Fix #10972. AnalyticsPostCountsByDay is sync now * Revert go.mod and go.sum modifications * Fix identation in querys * Fix unnecessary else
This commit is contained in:
committed by
Jesús Espino
parent
803ce61ef8
commit
b757e7d129
@@ -160,11 +160,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
|
||||
return rows, nil
|
||||
}
|
||||
|
||||
r := <-a.Srv.Store.Post().AnalyticsPostCountsByDay(teamId)
|
||||
if r.Err != nil {
|
||||
return nil, r.Err
|
||||
}
|
||||
return r.Data.(model.AnalyticsRows), nil
|
||||
return a.Srv.Store.Post().AnalyticsPostCountsByDay(teamId)
|
||||
} else if name == "user_counts_with_posts_day" {
|
||||
if skipIntensiveQueries {
|
||||
rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}}
|
||||
|
||||
@@ -1002,59 +1002,56 @@ func (s *SqlPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.A
|
||||
return rows, nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) AnalyticsPostCountsByDay(teamId string) store.StoreChannel {
|
||||
return store.Do(func(result *store.StoreResult) {
|
||||
query :=
|
||||
func (s *SqlPostStore) AnalyticsPostCountsByDay(teamId string) (model.AnalyticsRows, *model.AppError) {
|
||||
query :=
|
||||
`SELECT
|
||||
DATE(FROM_UNIXTIME(Posts.CreateAt / 1000)) AS Name,
|
||||
COUNT(Posts.Id) AS Value
|
||||
FROM Posts`
|
||||
|
||||
if len(teamId) > 0 {
|
||||
query += " INNER JOIN Channels ON Posts.ChannelId = Channels.Id AND Channels.TeamId = :TeamId AND"
|
||||
} else {
|
||||
query += " WHERE"
|
||||
}
|
||||
|
||||
query += ` Posts.CreateAt <= :EndTime
|
||||
AND Posts.CreateAt >= :StartTime
|
||||
GROUP BY DATE(FROM_UNIXTIME(Posts.CreateAt / 1000))
|
||||
ORDER BY Name DESC
|
||||
LIMIT 30`
|
||||
|
||||
if s.DriverName() == model.DATABASE_DRIVER_POSTGRES {
|
||||
query =
|
||||
`SELECT
|
||||
DATE(FROM_UNIXTIME(Posts.CreateAt / 1000)) AS Name,
|
||||
COUNT(Posts.Id) AS Value
|
||||
FROM Posts`
|
||||
TO_CHAR(DATE(TO_TIMESTAMP(Posts.CreateAt / 1000)), 'YYYY-MM-DD') AS Name, Count(Posts.Id) AS Value
|
||||
FROM Posts`
|
||||
|
||||
if len(teamId) > 0 {
|
||||
query += " INNER JOIN Channels ON Posts.ChannelId = Channels.Id AND Channels.TeamId = :TeamId AND"
|
||||
query += " INNER JOIN Channels ON Posts.ChannelId = Channels.Id AND Channels.TeamId = :TeamId AND"
|
||||
} else {
|
||||
query += " WHERE"
|
||||
}
|
||||
|
||||
query += ` Posts.CreateAt <= :EndTime
|
||||
AND Posts.CreateAt >= :StartTime
|
||||
GROUP BY DATE(FROM_UNIXTIME(Posts.CreateAt / 1000))
|
||||
GROUP BY DATE(TO_TIMESTAMP(Posts.CreateAt / 1000))
|
||||
ORDER BY Name DESC
|
||||
LIMIT 30`
|
||||
}
|
||||
|
||||
if s.DriverName() == model.DATABASE_DRIVER_POSTGRES {
|
||||
query =
|
||||
`SELECT
|
||||
TO_CHAR(DATE(TO_TIMESTAMP(Posts.CreateAt / 1000)), 'YYYY-MM-DD') AS Name, Count(Posts.Id) AS Value
|
||||
FROM Posts`
|
||||
end := utils.MillisFromTime(utils.EndOfDay(utils.Yesterday()))
|
||||
start := utils.MillisFromTime(utils.StartOfDay(utils.Yesterday().AddDate(0, 0, -31)))
|
||||
|
||||
if len(teamId) > 0 {
|
||||
query += " INNER JOIN Channels ON Posts.ChannelId = Channels.Id AND Channels.TeamId = :TeamId AND"
|
||||
} else {
|
||||
query += " WHERE"
|
||||
}
|
||||
|
||||
query += ` Posts.CreateAt <= :EndTime
|
||||
AND Posts.CreateAt >= :StartTime
|
||||
GROUP BY DATE(TO_TIMESTAMP(Posts.CreateAt / 1000))
|
||||
ORDER BY Name DESC
|
||||
LIMIT 30`
|
||||
}
|
||||
|
||||
end := utils.MillisFromTime(utils.EndOfDay(utils.Yesterday()))
|
||||
start := utils.MillisFromTime(utils.StartOfDay(utils.Yesterday().AddDate(0, 0, -31)))
|
||||
|
||||
var rows model.AnalyticsRows
|
||||
_, err := s.GetReplica().Select(
|
||||
&rows,
|
||||
query,
|
||||
map[string]interface{}{"TeamId": teamId, "StartTime": start, "EndTime": end})
|
||||
if err != nil {
|
||||
result.Err = model.NewAppError("SqlPostStore.AnalyticsPostCountsByDay", "store.sql_post.analytics_posts_count_by_day.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
} else {
|
||||
result.Data = rows
|
||||
}
|
||||
})
|
||||
var rows model.AnalyticsRows
|
||||
_, err := s.GetReplica().Select(
|
||||
&rows,
|
||||
query,
|
||||
map[string]interface{}{"TeamId": teamId, "StartTime": start, "EndTime": end})
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlPostStore.AnalyticsPostCountsByDay", "store.sql_post.analytics_posts_count_by_day.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
return rows, nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) store.StoreChannel {
|
||||
|
||||
@@ -227,7 +227,7 @@ type PostStore interface {
|
||||
GetEtag(channelId string, allowFromCache bool) string
|
||||
Search(teamId string, userId string, params *model.SearchParams) StoreChannel
|
||||
AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, *model.AppError)
|
||||
AnalyticsPostCountsByDay(teamId string) StoreChannel
|
||||
AnalyticsPostCountsByDay(teamId string) (model.AnalyticsRows, *model.AppError)
|
||||
AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) StoreChannel
|
||||
ClearCaches()
|
||||
InvalidateLastPostTimeCache(channelId string)
|
||||
|
||||
@@ -30,19 +30,28 @@ func (_m *PostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHa
|
||||
}
|
||||
|
||||
// AnalyticsPostCountsByDay provides a mock function with given fields: teamId
|
||||
func (_m *PostStore) AnalyticsPostCountsByDay(teamId string) store.StoreChannel {
|
||||
func (_m *PostStore) AnalyticsPostCountsByDay(teamId string) (model.AnalyticsRows, *model.AppError) {
|
||||
ret := _m.Called(teamId)
|
||||
|
||||
var r0 store.StoreChannel
|
||||
if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok {
|
||||
var r0 model.AnalyticsRows
|
||||
if rf, ok := ret.Get(0).(func(string) model.AnalyticsRows); ok {
|
||||
r0 = rf(teamId)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.StoreChannel)
|
||||
r0 = ret.Get(0).(model.AnalyticsRows)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok {
|
||||
r1 = rf(teamId)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// AnalyticsUserCountsWithPostsByDay provides a mock function with given fields: teamId
|
||||
|
||||
@@ -1288,15 +1288,15 @@ func testPostCountsByDay(t *testing.T, ss store.Store) {
|
||||
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
if r1 := <-ss.Post().AnalyticsPostCountsByDay(t1.Id); r1.Err != nil {
|
||||
t.Fatal(r1.Err)
|
||||
if r1, err := ss.Post().AnalyticsPostCountsByDay(t1.Id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
row1 := r1.Data.(model.AnalyticsRows)[0]
|
||||
row1 := r1[0]
|
||||
if row1.Value != 2 {
|
||||
t.Fatal(row1)
|
||||
}
|
||||
|
||||
row2 := r1.Data.(model.AnalyticsRows)[1]
|
||||
row2 := r1[1]
|
||||
if row2.Value != 2 {
|
||||
t.Fatal("wrong value")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user