Merge pull request #358 from sosedoff/check-for-pgdump
Check if pg_dump is available before running database export
This commit is contained in:
commit
b18af0b907
@ -472,6 +472,13 @@ func DataExport(c *gin.Context) {
|
||||
Table: strings.TrimSpace(c.Request.FormValue("table")),
|
||||
}
|
||||
|
||||
// If pg_dump is not available the following code will not show an error in browser.
|
||||
// This is due to the headers being written first.
|
||||
if !dump.CanExport() {
|
||||
c.JSON(400, Error{"pg_dump is not found"})
|
||||
return
|
||||
}
|
||||
|
||||
formattedInfo := info.Format()[0]
|
||||
filename := formattedInfo["current_database"].(string)
|
||||
if dump.Table != "" {
|
||||
|
@ -11,6 +11,11 @@ type Dump struct {
|
||||
Table string
|
||||
}
|
||||
|
||||
func (d *Dump) CanExport() bool {
|
||||
err := exec.Command("pg_dump", "--version").Run()
|
||||
return err == nil
|
||||
}
|
||||
|
||||
func (d *Dump) Export(url string, writer io.Writer) error {
|
||||
errOutput := bytes.NewBuffer(nil)
|
||||
|
||||
|
@ -24,8 +24,12 @@ func test_DumpExport(t *testing.T) {
|
||||
os.Remove(savePath)
|
||||
}()
|
||||
|
||||
// Test full db dump
|
||||
dump := Dump{}
|
||||
|
||||
// Test for pg_dump presence
|
||||
assert.True(t, dump.CanExport())
|
||||
|
||||
// Test full db dump
|
||||
err = dump.Export(url, saveFile)
|
||||
assert.NoError(t, err)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user