2023-12-27 22:59:20 +08:00
|
|
|
package persistence
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"mayfly-go/internal/db/domain/entity"
|
|
|
|
|
"mayfly-go/internal/db/domain/repository"
|
|
|
|
|
"mayfly-go/pkg/gormx"
|
|
|
|
|
"slices"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var _ repository.DbRestore = (*dbRestoreRepoImpl)(nil)
|
|
|
|
|
|
|
|
|
|
type dbRestoreRepoImpl struct {
|
2024-01-11 11:35:51 +08:00
|
|
|
dbJobBase[*entity.DbRestore]
|
2023-12-27 22:59:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewDbRestoreRepo() repository.DbRestore {
|
|
|
|
|
return &dbRestoreRepoImpl{}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (d *dbRestoreRepoImpl) GetDbNamesWithoutRestore(instanceId uint64, dbNames []string) ([]string, error) {
|
|
|
|
|
var dbNamesWithRestore []string
|
2024-01-05 08:55:34 +08:00
|
|
|
query := gormx.NewQuery(d.GetModel()).
|
2023-12-27 22:59:20 +08:00
|
|
|
Eq("db_instance_id", instanceId).
|
|
|
|
|
Eq("repeated", true)
|
|
|
|
|
if err := query.GenGdb().Pluck("db_name", &dbNamesWithRestore).Error; err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
result := make([]string, 0, len(dbNames))
|
|
|
|
|
for _, name := range dbNames {
|
|
|
|
|
if !slices.Contains(dbNamesWithRestore, name) {
|
|
|
|
|
result = append(result, name)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result, nil
|
|
|
|
|
}
|