mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 16:30:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package application
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"mayfly-go/internal/db/domain/repository"
 | 
						|
	"mayfly-go/internal/db/infrastructure/persistence"
 | 
						|
	tagapp "mayfly-go/internal/tag/application"
 | 
						|
	"sync"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	instanceApp  Instance
 | 
						|
	dbApp        Db
 | 
						|
	dbSqlExecApp DbSqlExec
 | 
						|
	dbSqlApp     DbSql
 | 
						|
	dbBackupApp  *DbBackupApp
 | 
						|
	dbRestoreApp *DbRestoreApp
 | 
						|
	dbBinlogApp  *DbBinlogApp
 | 
						|
	dataSyncApp  DataSyncTask
 | 
						|
)
 | 
						|
 | 
						|
//var repositories *repository.Repositories
 | 
						|
//var scheduler *dbScheduler[*entity.DbBackup]
 | 
						|
//var scheduler1 *dbScheduler[*entity.DbRestore]
 | 
						|
 | 
						|
func Init() {
 | 
						|
	sync.OnceFunc(func() {
 | 
						|
		repositories := &repository.Repositories{
 | 
						|
			Instance:       persistence.GetInstanceRepo(),
 | 
						|
			Backup:         persistence.NewDbBackupRepo(),
 | 
						|
			BackupHistory:  persistence.NewDbBackupHistoryRepo(),
 | 
						|
			Restore:        persistence.NewDbRestoreRepo(),
 | 
						|
			RestoreHistory: persistence.NewDbRestoreHistoryRepo(),
 | 
						|
			Binlog:         persistence.NewDbBinlogRepo(),
 | 
						|
			BinlogHistory:  persistence.NewDbBinlogHistoryRepo(),
 | 
						|
		}
 | 
						|
		var err error
 | 
						|
		instanceRepo := persistence.GetInstanceRepo()
 | 
						|
		instanceApp = newInstanceApp(instanceRepo)
 | 
						|
		dbApp = newDbApp(persistence.GetDbRepo(), persistence.GetDbSqlRepo(), instanceApp, tagapp.GetTagTreeApp())
 | 
						|
		dbSqlExecApp = newDbSqlExecApp(persistence.GetDbSqlExecRepo())
 | 
						|
		dbSqlApp = newDbSqlApp(persistence.GetDbSqlRepo())
 | 
						|
		dataSyncApp = newDataSyncApp(persistence.GetDataSyncTaskRepo(), persistence.GetDataSyncLogRepo())
 | 
						|
 | 
						|
		scheduler, err := newDbScheduler(repositories)
 | 
						|
		if err != nil {
 | 
						|
			panic(fmt.Sprintf("初始化 dbScheduler 失败: %v", err))
 | 
						|
		}
 | 
						|
		dbBackupApp, err = newDbBackupApp(repositories, dbApp, scheduler)
 | 
						|
		if err != nil {
 | 
						|
			panic(fmt.Sprintf("初始化 dbBackupApp 失败: %v", err))
 | 
						|
		}
 | 
						|
		dbRestoreApp, err = newDbRestoreApp(repositories, dbApp, scheduler)
 | 
						|
		if err != nil {
 | 
						|
			panic(fmt.Sprintf("初始化 dbRestoreApp 失败: %v", err))
 | 
						|
		}
 | 
						|
		dbBinlogApp, err = newDbBinlogApp(repositories, dbApp)
 | 
						|
		if err != nil {
 | 
						|
			panic(fmt.Sprintf("初始化 dbBinlogApp 失败: %v", err))
 | 
						|
		}
 | 
						|
 | 
						|
		dataSyncApp.InitCronJob()
 | 
						|
	})()
 | 
						|
}
 | 
						|
 | 
						|
func GetInstanceApp() Instance {
 | 
						|
	return instanceApp
 | 
						|
}
 | 
						|
 | 
						|
func GetDbApp() Db {
 | 
						|
	return dbApp
 | 
						|
}
 | 
						|
 | 
						|
func GetDbSqlApp() DbSql {
 | 
						|
	return dbSqlApp
 | 
						|
}
 | 
						|
 | 
						|
func GetDbSqlExecApp() DbSqlExec {
 | 
						|
	return dbSqlExecApp
 | 
						|
}
 | 
						|
 | 
						|
func GetDbBackupApp() *DbBackupApp {
 | 
						|
	return dbBackupApp
 | 
						|
}
 | 
						|
 | 
						|
func GetDbRestoreApp() *DbRestoreApp {
 | 
						|
	return dbRestoreApp
 | 
						|
}
 | 
						|
 | 
						|
func GetDbBinlogApp() *DbBinlogApp {
 | 
						|
	return dbBinlogApp
 | 
						|
}
 | 
						|
 | 
						|
func GetDataSyncTaskApp() DataSyncTask {
 | 
						|
	return dataSyncApp
 | 
						|
}
 |