diff --git a/jobs/jobs.go b/jobs/jobs.go index 897fe87c25..f1a4979d8c 100644 --- a/jobs/jobs.go +++ b/jobs/jobs.go @@ -155,6 +155,18 @@ func (srv *JobServer) SetJobCanceled(job *model.Job) *model.AppError { return nil } +func (srv *JobServer) SetJobPending(job *model.Job) *model.AppError { + if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusPending); err != nil { + return model.NewAppError("SetJobPending", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) + } + + if srv.metrics != nil { + srv.metrics.DecrementJobActive(job.Type) + } + + return nil +} + func (srv *JobServer) UpdateInProgressJobData(job *model.Job) *model.AppError { job.Status = model.JobStatusInProgress job.LastActivityAt = model.GetMillis() diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go index 7faa237c6c..9b929479fa 100644 --- a/store/sqlstore/channel_store.go +++ b/store/sqlstore/channel_store.go @@ -2712,11 +2712,13 @@ func (s SqlChannelStore) GetForPost(postId string) (*model.Channel, error) { } func (s SqlChannelStore) AnalyticsTypeCount(teamId string, channelType model.ChannelType) (int64, error) { - query := s.getQueryBuilder(). - Select("COUNT(Id) AS Value"). - From("Channels"). - Where(sq.Eq{"Type": channelType}) + Select("COUNT(*) AS Value"). + From("Channels") + + if channelType != "" { + query = query.Where(sq.Eq{"Type": channelType}) + } if teamId != "" { query = query.Where(sq.Eq{"TeamId": teamId}) diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go index 3e7343af75..e74c59ed00 100644 --- a/store/storetest/channel_store.go +++ b/store/storetest/channel_store.go @@ -3979,6 +3979,12 @@ func testChannelStoreGetMoreChannels(t *testing.T, ss store.Store) { require.NoError(t, err) require.EqualValues(t, 2, count) }) + + t.Run("verify analytics for all channels", func(t *testing.T) { + count, err := ss.Channel().AnalyticsTypeCount(teamId, "") + require.NoError(t, err) + require.EqualValues(t, 6, count) + }) } func testChannelStoreGetPrivateChannelsForTeam(t *testing.T, ss store.Store) {