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

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package import_delete
     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  	jobName        = "ImportDelete"
    15  	schedFrequency = 24 * time.Hour
    16  )
    17  
    18  type Scheduler struct {
    19  	app *app.App
    20  }
    21  
    22  func (i *ImportDeleteInterfaceImpl) MakeScheduler() model.Scheduler {
    23  	return &Scheduler{i.app}
    24  }
    25  
    26  func (scheduler *Scheduler) Name() string {
    27  	return jobName + "Scheduler"
    28  }
    29  
    30  func (scheduler *Scheduler) JobType() string {
    31  	return model.JOB_TYPE_IMPORT_DELETE
    32  }
    33  
    34  func (scheduler *Scheduler) Enabled(cfg *model.Config) bool {
    35  	return *cfg.ImportSettings.Directory != "" && *cfg.ImportSettings.RetentionDays > 0
    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(schedFrequency)
    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  	job, err := scheduler.app.Srv().Jobs.CreateJob(model.JOB_TYPE_IMPORT_DELETE, data)
    47  	if err != nil {
    48  		return nil, err
    49  	}
    50  	return job, nil
    51  }