github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/jobs/expirynotify/scheduler.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package expirynotify
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/mattermost/mattermost-server/v5/app"
    10  	"github.com/mattermost/mattermost-server/v5/model"
    11  )
    12  
    13  const (
    14  	SchedFreqMinutes = 10
    15  )
    16  
    17  type Scheduler struct {
    18  	App *app.App
    19  }
    20  
    21  func (m *ExpiryNotifyJobInterfaceImpl) MakeScheduler() model.Scheduler {
    22  	return &Scheduler{m.App}
    23  }
    24  
    25  func (scheduler *Scheduler) Name() string {
    26  	return JobName + "Scheduler"
    27  }
    28  
    29  func (scheduler *Scheduler) JobType() string {
    30  	return model.JOB_TYPE_EXPIRY_NOTIFY
    31  }
    32  
    33  func (scheduler *Scheduler) Enabled(cfg *model.Config) bool {
    34  	// Only enabled when ExtendSessionLengthWithActivity is enabled.
    35  	return *cfg.ServiceSettings.ExtendSessionLengthWithActivity
    36  }
    37  
    38  func (scheduler *Scheduler) NextScheduleTime(cfg *model.Config, now time.Time, pendingJobs bool, lastSuccessfulJob *model.Job) *time.Time {
    39  	nextTime := time.Now().Add(SchedFreqMinutes * time.Minute)
    40  	return &nextTime
    41  }
    42  
    43  func (scheduler *Scheduler) ScheduleJob(cfg *model.Config, pendingJobs bool, lastSuccessfulJob *model.Job) (*model.Job, *model.AppError) {
    44  	data := map[string]string{}
    45  
    46  	if job, err := scheduler.App.Srv().Jobs.CreateJob(model.JOB_TYPE_EXPIRY_NOTIFY, data); err != nil {
    47  		return nil, err
    48  	} else {
    49  		return job, nil
    50  	}
    51  }