[MM-14720] Add Posts Per Day Analytics and Number Posts Previous Day Functionality (#11402)
* Add ability to get bot counts per day Modify tests using AnalyticsPostCountsByDay to include extra input (botsOnly) Correctly generate the mock file with 'make store-mocks' target. Didn't see these comments earlier * Initial commit for calculating total posts previous day and total posts from bots previous day * - Refactor to use asserts instead of if statements in tests - Capture inputs to AnalyticsPostCountsByDay() function into an options struct - Remove bot creation from diagnostics_test.go. * Remove utils library * create AnalyticsPostCountsOptions struct which is accepted as an input to AnalyticsPostCountsByDay method * Go vet fixes
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
c8fb1b6265
Коммит
95652da0b8
@@ -991,14 +991,19 @@ func (s *SqlPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.A
|
||||
return rows, nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) AnalyticsPostCountsByDay(teamId string) (model.AnalyticsRows, *model.AppError) {
|
||||
func (s *SqlPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (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 {
|
||||
if options.BotsOnly {
|
||||
query += " INNER JOIN Bots ON Posts.UserId = Bots.Userid"
|
||||
}
|
||||
|
||||
if len(options.TeamId) > 0 {
|
||||
query += " INNER JOIN Channels ON Posts.ChannelId = Channels.Id AND Channels.TeamId = :TeamId AND"
|
||||
} else {
|
||||
query += " WHERE"
|
||||
@@ -1016,7 +1021,11 @@ func (s *SqlPostStore) AnalyticsPostCountsByDay(teamId string) (model.AnalyticsR
|
||||
TO_CHAR(DATE(TO_TIMESTAMP(Posts.CreateAt / 1000)), 'YYYY-MM-DD') AS Name, Count(Posts.Id) AS Value
|
||||
FROM Posts`
|
||||
|
||||
if len(teamId) > 0 {
|
||||
if options.BotsOnly {
|
||||
query += " INNER JOIN Bots ON Posts.UserId = Bots.Userid"
|
||||
}
|
||||
|
||||
if len(options.TeamId) > 0 {
|
||||
query += " INNER JOIN Channels ON Posts.ChannelId = Channels.Id AND Channels.TeamId = :TeamId AND"
|
||||
} else {
|
||||
query += " WHERE"
|
||||
@@ -1031,12 +1040,15 @@ func (s *SqlPostStore) AnalyticsPostCountsByDay(teamId string) (model.AnalyticsR
|
||||
|
||||
end := utils.MillisFromTime(utils.EndOfDay(utils.Yesterday()))
|
||||
start := utils.MillisFromTime(utils.StartOfDay(utils.Yesterday().AddDate(0, 0, -31)))
|
||||
if options.YesterdayOnly {
|
||||
start = utils.MillisFromTime(utils.StartOfDay(utils.Yesterday().AddDate(0, 0, -1)))
|
||||
}
|
||||
|
||||
var rows model.AnalyticsRows
|
||||
_, err := s.GetReplica().Select(
|
||||
&rows,
|
||||
query,
|
||||
map[string]interface{}{"TeamId": teamId, "StartTime": start, "EndTime": end})
|
||||
map[string]interface{}{"TeamId": options.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)
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user