Skip to content

Commit 57f1b81

Browse files
committed
Fork and get a direct stream to modify
1 parent d04ec8e commit 57f1b81

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

dump.go

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package mysqldump
33
import (
44
"database/sql"
55
"errors"
6+
"io"
67
"os"
78
"path"
89
"strings"
@@ -67,7 +68,7 @@ UNLOCK TABLES;
6768
-- Dump completed on {{ .CompleteTime }}
6869
`
6970

70-
// Creates a MYSQL Dump based on the options supplied through the dumper.
71+
// Dump creates a MySQL dump based on the options supplied through the dumper.
7172
func (d *Dumper) Dump() (string, error) {
7273
name := time.Now().Format(d.format)
7374
p := path.Join(d.dir, name+".sql")
@@ -86,28 +87,34 @@ func (d *Dumper) Dump() (string, error) {
8687

8788
defer f.Close()
8889

90+
return p, Dump(d.db, f)
91+
}
92+
93+
// Dump Creates a MYSQL dump from the connection to the stream.
94+
func Dump(db *sql.DB, out io.Writer) error {
95+
var err error
8996
data := dump{
9097
DumpVersion: version,
9198
Tables: make([]*table, 0),
9299
}
93100

94101
// Get server version
95-
if data.ServerVersion, err = getServerVersion(d.db); err != nil {
96-
return p, err
102+
if data.ServerVersion, err = getServerVersion(db); err != nil {
103+
return err
97104
}
98105

99106
// Get tables
100-
tables, err := getTables(d.db)
107+
tables, err := getTables(db)
101108
if err != nil {
102-
return p, err
109+
return err
103110
}
104111

105112
// Get sql for each table
106113
for _, name := range tables {
107-
if t, err := createTable(d.db, name); err == nil {
114+
if t, err := createTable(db, name); err == nil {
108115
data.Tables = append(data.Tables, t)
109116
} else {
110-
return p, err
117+
return err
111118
}
112119
}
113120

@@ -117,13 +124,13 @@ func (d *Dumper) Dump() (string, error) {
117124
// Write dump to file
118125
t, err := template.New("mysqldump").Parse(tmpl)
119126
if err != nil {
120-
return p, err
127+
return err
121128
}
122-
if err = t.Execute(f, data); err != nil {
123-
return p, err
129+
if err = t.Execute(out, data); err != nil {
130+
return err
124131
}
125132

126-
return p, nil
133+
return nil
127134
}
128135

129136
func getTables(db *sql.DB) ([]string, error) {
@@ -148,11 +155,11 @@ func getTables(db *sql.DB) ([]string, error) {
148155
}
149156

150157
func getServerVersion(db *sql.DB) (string, error) {
151-
var server_version sql.NullString
152-
if err := db.QueryRow("SELECT version()").Scan(&server_version); err != nil {
158+
var serverVersion sql.NullString
159+
if err := db.QueryRow("SELECT version()").Scan(&serverVersion); err != nil {
153160
return "", err
154161
}
155-
return server_version.String, nil
162+
return serverVersion.String, nil
156163
}
157164

158165
func createTable(db *sql.DB, name string) (*table, error) {

0 commit comments

Comments
 (0)