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")),
|
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]
|
formattedInfo := info.Format()[0]
|
||||||
filename := formattedInfo["current_database"].(string)
|
filename := formattedInfo["current_database"].(string)
|
||||||
if dump.Table != "" {
|
if dump.Table != "" {
|
||||||
|
@ -11,6 +11,11 @@ type Dump struct {
|
|||||||
Table string
|
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 {
|
func (d *Dump) Export(url string, writer io.Writer) error {
|
||||||
errOutput := bytes.NewBuffer(nil)
|
errOutput := bytes.NewBuffer(nil)
|
||||||
|
|
||||||
|
@ -24,8 +24,12 @@ func test_DumpExport(t *testing.T) {
|
|||||||
os.Remove(savePath)
|
os.Remove(savePath)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// Test full db dump
|
|
||||||
dump := Dump{}
|
dump := Dump{}
|
||||||
|
|
||||||
|
// Test for pg_dump presence
|
||||||
|
assert.True(t, dump.CanExport())
|
||||||
|
|
||||||
|
// Test full db dump
|
||||||
err = dump.Export(url, saveFile)
|
err = dump.Export(url, saveFile)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user