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

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package jobs
     5  
     6  import (
     7  	"github.com/mattermost/mattermost-server/v5/einterfaces"
     8  	ejobs "github.com/mattermost/mattermost-server/v5/einterfaces/jobs"
     9  	tjobs "github.com/mattermost/mattermost-server/v5/jobs/interfaces"
    10  	"github.com/mattermost/mattermost-server/v5/model"
    11  	"github.com/mattermost/mattermost-server/v5/services/configservice"
    12  	"github.com/mattermost/mattermost-server/v5/store"
    13  )
    14  
    15  type JobServer struct {
    16  	ConfigService configservice.ConfigService
    17  	Store         store.Store
    18  	metrics       einterfaces.MetricsInterface
    19  	Workers       *Workers
    20  	Schedulers    *Schedulers
    21  
    22  	DataRetentionJob        ejobs.DataRetentionJobInterface
    23  	MessageExportJob        ejobs.MessageExportJobInterface
    24  	ElasticsearchAggregator ejobs.ElasticsearchAggregatorInterface
    25  	ElasticsearchIndexer    tjobs.IndexerJobInterface
    26  	LdapSync                ejobs.LdapSyncInterface
    27  	Migrations              tjobs.MigrationsJobInterface
    28  	Plugins                 tjobs.PluginsJobInterface
    29  	BleveIndexer            tjobs.IndexerJobInterface
    30  	ExpiryNotify            tjobs.ExpiryNotifyJobInterface
    31  	ProductNotices          tjobs.ProductNoticesJobInterface
    32  	ActiveUsers             tjobs.ActiveUsersJobInterface
    33  	ImportProcess           tjobs.ImportProcessInterface
    34  	ImportDelete            tjobs.ImportDeleteInterface
    35  	ExportProcess           tjobs.ExportProcessInterface
    36  	ExportDelete            tjobs.ExportDeleteInterface
    37  	Cloud                   ejobs.CloudJobInterface
    38  }
    39  
    40  func NewJobServer(configService configservice.ConfigService, store store.Store, metrics einterfaces.MetricsInterface) *JobServer {
    41  	return &JobServer{
    42  		ConfigService: configService,
    43  		Store:         store,
    44  		metrics:       metrics,
    45  	}
    46  }
    47  
    48  func (srv *JobServer) Config() *model.Config {
    49  	return srv.ConfigService.Config()
    50  }
    51  
    52  func (srv *JobServer) StartWorkers() {
    53  	srv.Workers = srv.Workers.Start()
    54  }
    55  
    56  func (srv *JobServer) StartSchedulers() {
    57  	srv.Schedulers = srv.Schedulers.Start()
    58  }
    59  
    60  func (srv *JobServer) StopWorkers() {
    61  	if srv.Workers != nil {
    62  		srv.Workers.Stop()
    63  	}
    64  }
    65  
    66  func (srv *JobServer) StopSchedulers() {
    67  	if srv.Schedulers != nil {
    68  		srv.Schedulers.Stop()
    69  	}
    70  }