github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/plugin/scheduler/scheduler.go (about)

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