aboutsummaryrefslogtreecommitdiff
path: root/internal/cmd
diff options
context:
space:
mode:
authorᴜɴᴋɴᴡᴏɴ <u@gogs.io>2020-05-04 16:25:57 +0800
committerGitHub <noreply@github.com>2020-05-04 16:25:57 +0800
commit9bb218734c53c98a13264c2f4f479e3633ccfe18 (patch)
treef32557409337e18d9f7959dcb2089f0bf698513b /internal/cmd
parent82ffca3fc9988345016c8033f7f65c5b028dfe10 (diff)
db: use GORM to backup and restore non-legacy tables (#6142)
Diffstat (limited to 'internal/cmd')
-rw-r--r--internal/cmd/admin.go4
-rw-r--r--internal/cmd/backup.go23
-rw-r--r--internal/cmd/restore.go11
-rw-r--r--internal/cmd/serv.go2
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)
}
}