fix restore
This commit is contained in:
parent
22edc16336
commit
9434bc7a22
|
@ -67,7 +67,7 @@ func runRestore(ctx *cli.Context) error {
|
||||||
srcPath := os.Args[2]
|
srcPath := os.Args[2]
|
||||||
|
|
||||||
zip.Verbose = ctx.Bool("verbose")
|
zip.Verbose = ctx.Bool("verbose")
|
||||||
log.Printf("Extracting %s to tmp work dir", srcPath)
|
log.Printf("Extracting %s to %s", srcPath, tmpWorkDir)
|
||||||
err = zip.ExtractTo(srcPath, tmpWorkDir)
|
err = zip.ExtractTo(srcPath, tmpWorkDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to extract %s to tmp work directory: %v", srcPath, err)
|
log.Fatalf("Failed to extract %s to tmp work directory: %v", srcPath, err)
|
||||||
|
@ -101,7 +101,12 @@ func runRestore(ctx *cli.Context) error {
|
||||||
log.Fatalf("Failed to SetEngine: %v", err)
|
log.Fatalf("Failed to SetEngine: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Restoring repo dir %s ...", setting.RepoRootPath)
|
err = models.SyncDBStructs()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to SyncDBStructs: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("Restoring repo dir to %s ...", setting.RepoRootPath)
|
||||||
repoPath := filepath.Join(tmpWorkDir, "repositories")
|
repoPath := filepath.Join(tmpWorkDir, "repositories")
|
||||||
err = os.RemoveAll(setting.RepoRootPath)
|
err = os.RemoveAll(setting.RepoRootPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -113,7 +118,7 @@ func runRestore(ctx *cli.Context) error {
|
||||||
log.Fatalf("Failed to move %s to %s: %v", repoPath, setting.RepoRootPath, err)
|
log.Fatalf("Failed to move %s to %s: %v", repoPath, setting.RepoRootPath, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Restoring custom dir %s ...", setting.CustomPath)
|
log.Printf("Restoring custom dir to %s ...", setting.CustomPath)
|
||||||
customPath := filepath.Join(tmpWorkDir, "custom")
|
customPath := filepath.Join(tmpWorkDir, "custom")
|
||||||
err = os.RemoveAll(setting.CustomPath)
|
err = os.RemoveAll(setting.CustomPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -125,7 +130,7 @@ func runRestore(ctx *cli.Context) error {
|
||||||
log.Fatalf("Failed to move %s to %s: %v", customPath, setting.CustomPath, err)
|
log.Fatalf("Failed to move %s to %s: %v", customPath, setting.CustomPath, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Restoring data dir %s ...", setting.AppDataPath)
|
log.Printf("Restoring data dir to %s ...", setting.AppDataPath)
|
||||||
dataPath := filepath.Join(tmpWorkDir, "data")
|
dataPath := filepath.Join(tmpWorkDir, "data")
|
||||||
err = os.RemoveAll(setting.AppDataPath)
|
err = os.RemoveAll(setting.AppDataPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -137,8 +142,8 @@ func runRestore(ctx *cli.Context) error {
|
||||||
log.Fatalf("Failed to move %s to %s: %v", dataPath, setting.AppDataPath, err)
|
log.Fatalf("Failed to move %s to %s: %v", dataPath, setting.AppDataPath, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Restoring database from ...")
|
|
||||||
dbPath := filepath.Join(tmpWorkDir, "database")
|
dbPath := filepath.Join(tmpWorkDir, "database")
|
||||||
|
log.Printf("Restoring database from %s ...", dbPath)
|
||||||
err = models.RestoreDatabaseFixtures(dbPath)
|
err = models.RestoreDatabaseFixtures(dbPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to restore database dir %s: %v", dbPath, err)
|
log.Fatalf("Failed to restore database dir %s: %v", dbPath, err)
|
||||||
|
|
|
@ -298,6 +298,15 @@ func NewEngine(migrateFunc func(*xorm.Engine) error) (err error) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SyncDBStructs will sync database structs
|
||||||
|
func SyncDBStructs() error {
|
||||||
|
if err := x.StoreEngine("InnoDB").Sync2(tables...); err != nil {
|
||||||
|
return fmt.Errorf("sync database struct error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Statistic contains the database statistics
|
// Statistic contains the database statistics
|
||||||
type Statistic struct {
|
type Statistic struct {
|
||||||
Counter struct {
|
Counter struct {
|
||||||
|
@ -421,7 +430,7 @@ func restoreTableFixtures(bean interface{}, dirPath string) error {
|
||||||
|
|
||||||
const bufferSize = 100
|
const bufferSize = 100
|
||||||
var records = make([]map[string]interface{}, 0, bufferSize*10)
|
var records = make([]map[string]interface{}, 0, bufferSize*10)
|
||||||
err = yaml.Unmarshal(data, records)
|
err = yaml.Unmarshal(data, &records)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -439,7 +448,12 @@ func restoreTableFixtures(bean interface{}, dirPath string) error {
|
||||||
qm := strings.Repeat("?,", len(columns))
|
qm := strings.Repeat("?,", len(columns))
|
||||||
qm = "(" + qm[:len(qm)-1] + ")"
|
qm = "(" + qm[:len(qm)-1] + ")"
|
||||||
|
|
||||||
var sql = "INSERT INTO " + table.Name + "(" + strings.Join(columns, ",") + ") VALUES "
|
_, err = x.Exec("DELETE FROM `" + table.Name + "`")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var sql = "INSERT INTO `" + table.Name + "` (`" + strings.Join(columns, "`,`") + "`) VALUES "
|
||||||
var args = make([]interface{}, 0, bufferSize)
|
var args = make([]interface{}, 0, bufferSize)
|
||||||
var insertSQLs = make([]string, 0, bufferSize)
|
var insertSQLs = make([]string, 0, bufferSize)
|
||||||
for i, vals := range records {
|
for i, vals := range records {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user