Check if pg_dump is available before running database export

This commit is contained in:
Dan Sosedoff 2018-04-25 23:29:18 -05:00
parent 7dce0fb4f4
commit e2be689a05
3 changed files with 17 additions and 1 deletions

View File

@ -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 != "" {

View File

@ -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)

View File

@ -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)