diff options
author | ᴜɴᴋɴᴡᴏɴ <u@gogs.io> | 2020-05-04 16:25:57 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-04 16:25:57 +0800 |
commit | 9bb218734c53c98a13264c2f4f479e3633ccfe18 (patch) | |
tree | f32557409337e18d9f7959dcb2089f0bf698513b /internal/cmd | |
parent | 82ffca3fc9988345016c8033f7f65c5b028dfe10 (diff) |
db: use GORM to backup and restore non-legacy tables (#6142)
Diffstat (limited to 'internal/cmd')
-rw-r--r-- | internal/cmd/admin.go | 4 | ||||
-rw-r--r-- | internal/cmd/backup.go | 23 | ||||
-rw-r--r-- | internal/cmd/restore.go | 11 | ||||
-rw-r--r-- | internal/cmd/serv.go | 2 |
4 files changed, 21 insertions, 19 deletions
diff --git a/internal/cmd/admin.go b/internal/cmd/admin.go index 526e4119..5b2dd290 100644 --- a/internal/cmd/admin.go +++ b/internal/cmd/admin.go @@ -147,7 +147,7 @@ func runCreateUser(c *cli.Context) error { } conf.InitLogging(true) - if err = db.SetEngine(); err != nil { + if _, err = db.SetEngine(); err != nil { return errors.Wrap(err, "set engine") } @@ -173,7 +173,7 @@ func adminDashboardOperation(operation func() error, successMessage string) func } conf.InitLogging(true) - if err = db.SetEngine(); err != nil { + if _, err = db.SetEngine(); err != nil { return errors.Wrap(err, "set engine") } diff --git a/internal/cmd/backup.go b/internal/cmd/backup.go index 316f0aec..874b1be0 100644 --- a/internal/cmd/backup.go +++ b/internal/cmd/backup.go @@ -42,8 +42,8 @@ portable among all supported database engines.`, }, } -const _CURRENT_BACKUP_FORMAT_VERSION = 1 -const _ARCHIVE_ROOT_DIR = "gogs-backup" +const currentBackupFormatVersion = 1 +const archiveRootDir = "gogs-backup" func runBackup(c *cli.Context) error { zip.Verbose = c.Bool("verbose") @@ -54,7 +54,8 @@ func runBackup(c *cli.Context) error { } conf.InitLogging(true) - if err = db.SetEngine(); err != nil { + conn, err := db.SetEngine() + if err != nil { return errors.Wrap(err, "set engine") } @@ -71,7 +72,7 @@ func runBackup(c *cli.Context) error { // Metadata metaFile := path.Join(rootDir, "metadata.ini") metadata := ini.Empty() - metadata.Section("").Key("VERSION").SetValue(com.ToStr(_CURRENT_BACKUP_FORMAT_VERSION)) + metadata.Section("").Key("VERSION").SetValue(com.ToStr(currentBackupFormatVersion)) metadata.Section("").Key("DATE_TIME").SetValue(time.Now().String()) metadata.Section("").Key("GOGS_VERSION").SetValue(conf.App.Version) if err = metadata.SaveTo(metaFile); err != nil { @@ -85,22 +86,22 @@ func runBackup(c *cli.Context) error { if err != nil { log.Fatal("Failed to create backup archive '%s': %v", archiveName, err) } - if err = z.AddFile(_ARCHIVE_ROOT_DIR+"/metadata.ini", metaFile); err != nil { + if err = z.AddFile(archiveRootDir+"/metadata.ini", metaFile); err != nil { log.Fatal("Failed to include 'metadata.ini': %v", err) } // Database dbDir := filepath.Join(rootDir, "db") - if err = db.DumpDatabase(dbDir); err != nil { + if err = db.DumpDatabase(conn, dbDir, c.Bool("verbose")); err != nil { log.Fatal("Failed to dump database: %v", err) } - if err = z.AddDir(_ARCHIVE_ROOT_DIR+"/db", dbDir); err != nil { + if err = z.AddDir(archiveRootDir+"/db", dbDir); err != nil { log.Fatal("Failed to include 'db': %v", err) } // Custom files if !c.Bool("database-only") { - if err = z.AddDir(_ARCHIVE_ROOT_DIR+"/custom", conf.CustomDir()); err != nil { + if err = z.AddDir(archiveRootDir+"/custom", conf.CustomDir()); err != nil { log.Fatal("Failed to include 'custom': %v", err) } } @@ -113,7 +114,7 @@ func runBackup(c *cli.Context) error { continue } - if err = z.AddDir(path.Join(_ARCHIVE_ROOT_DIR+"/data", dir), dirPath); err != nil { + if err = z.AddDir(path.Join(archiveRootDir+"/data", dir), dirPath); err != nil { log.Fatal("Failed to include 'data': %v", err) } } @@ -149,7 +150,7 @@ func runBackup(c *cli.Context) error { } log.Info("Repositories dumped to: %s", reposDump) - if err = z.AddFile(_ARCHIVE_ROOT_DIR+"/repositories.zip", reposDump); err != nil { + if err = z.AddFile(archiveRootDir+"/repositories.zip", reposDump); err != nil { log.Fatal("Failed to include %q: %v", reposDump, err) } } @@ -158,7 +159,7 @@ func runBackup(c *cli.Context) error { log.Fatal("Failed to save backup archive '%s': %v", archiveName, err) } - os.RemoveAll(rootDir) + _ = os.RemoveAll(rootDir) log.Info("Backup succeed! Archive is located at: %s", archiveName) log.Stop() return nil diff --git a/internal/cmd/restore.go b/internal/cmd/restore.go index 8d2e4caa..ba72c6da 100644 --- a/internal/cmd/restore.go +++ b/internal/cmd/restore.go @@ -57,7 +57,7 @@ func runRestore(c *cli.Context) error { if err := zip.ExtractTo(c.String("from"), tmpDir); err != nil { log.Fatal("Failed to extract backup archive: %v", err) } - archivePath := path.Join(tmpDir, _ARCHIVE_ROOT_DIR) + archivePath := path.Join(tmpDir, archiveRootDir) defer os.RemoveAll(archivePath) // Check backup version @@ -77,9 +77,9 @@ func runRestore(c *cli.Context) error { if formatVersion == 0 { log.Fatal("Failed to determine the backup format version from metadata '%s': %s", metaFile, "VERSION is not presented") } - if formatVersion != _CURRENT_BACKUP_FORMAT_VERSION { + if formatVersion != currentBackupFormatVersion { log.Fatal("Backup format version found is %d but this binary only supports %d\nThe last known version that is able to import your backup is %s", - formatVersion, _CURRENT_BACKUP_FORMAT_VERSION, lastSupportedVersionOfFormat[formatVersion]) + formatVersion, currentBackupFormatVersion, lastSupportedVersionOfFormat[formatVersion]) } // If config file is not present in backup, user must set this file via flag. @@ -100,13 +100,14 @@ func runRestore(c *cli.Context) error { } conf.InitLogging(true) - if err = db.SetEngine(); err != nil { + conn, err := db.SetEngine() + if err != nil { return errors.Wrap(err, "set engine") } // Database dbDir := path.Join(archivePath, "db") - if err = db.ImportDatabase(dbDir, c.Bool("verbose")); err != nil { + if err = db.ImportDatabase(conn, dbDir, c.Bool("verbose")); err != nil { log.Fatal("Failed to import database: %v", err) } diff --git a/internal/cmd/serv.go b/internal/cmd/serv.go index 40f0852d..4c9bb4ca 100644 --- a/internal/cmd/serv.go +++ b/internal/cmd/serv.go @@ -93,7 +93,7 @@ func setup(c *cli.Context, logPath string, connectDB bool) { _ = os.Chdir(conf.WorkDir()) } - if err := db.SetEngine(); err != nil { + if _, err := db.SetEngine(); err != nil { fail("Internal error", "Failed to set database engine: %v", err) } } |