Files
mayfly-go/server/internal/db/application/application.go

97 lines
2.4 KiB
Go
Raw Normal View History

2022-09-09 18:26:08 +08:00
package application
import (
2023-12-27 22:59:20 +08:00
"fmt"
"mayfly-go/internal/db/domain/repository"
"mayfly-go/internal/db/infrastructure/persistence"
tagapp "mayfly-go/internal/tag/application"
2023-12-27 22:59:20 +08:00
"sync"
)
2022-09-09 18:26:08 +08:00
var (
instanceApp Instance
dbApp Db
dbSqlExecApp DbSqlExec
dbSqlApp DbSql
dbBackupApp *DbBackupApp
dbRestoreApp *DbRestoreApp
dbBinlogApp *DbBinlogApp
dataSyncApp DataSyncTask
2022-09-09 18:26:08 +08:00
)
//var repositories *repository.Repositories
//var scheduler *dbScheduler[*entity.DbBackup]
//var scheduler1 *dbScheduler[*entity.DbRestore]
2023-12-27 22:59:20 +08:00
func Init() {
sync.OnceFunc(func() {
repositories := &repository.Repositories{
2023-12-27 22:59:20 +08:00
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())
2023-12-27 22:59:20 +08:00
scheduler, err := newDbScheduler(repositories)
if err != nil {
panic(fmt.Sprintf("初始化 dbScheduler 失败: %v", err))
}
dbBackupApp, err = newDbBackupApp(repositories, dbApp, scheduler)
2023-12-27 22:59:20 +08:00
if err != nil {
panic(fmt.Sprintf("初始化 dbBackupApp 失败: %v", err))
}
dbRestoreApp, err = newDbRestoreApp(repositories, dbApp, scheduler)
2023-12-27 22:59:20 +08:00
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()
2023-12-27 22:59:20 +08:00
})()
}
2023-08-27 11:07:29 +08:00
func GetInstanceApp() Instance {
return instanceApp
}
2022-09-09 18:26:08 +08:00
func GetDbApp() Db {
return dbApp
}
func GetDbSqlApp() DbSql {
return dbSqlApp
}
2022-09-09 18:26:08 +08:00
func GetDbSqlExecApp() DbSqlExec {
return dbSqlExecApp
}
2023-12-27 22:59:20 +08:00
func GetDbBackupApp() *DbBackupApp {
return dbBackupApp
}
func GetDbRestoreApp() *DbRestoreApp {
return dbRestoreApp
}
func GetDbBinlogApp() *DbBinlogApp {
return dbBinlogApp
}
func GetDataSyncTaskApp() DataSyncTask {
return dataSyncApp
}