Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 02c5fc2

Browse files
committed
streamline driver code
1 parent e857fcc commit 02c5fc2

File tree

2 files changed

+12
-41
lines changed

2 files changed

+12
-41
lines changed

driver/driver.go

Lines changed: 11 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
package driver
33

44
import (
5-
"errors"
65
"fmt"
76
neturl "net/url" // alias to allow `url string` func signature in New
87

@@ -14,6 +13,14 @@ import (
1413
"github.com/mattes/migrate/file"
1514
)
1615

16+
var driverMap = map[string]Driver{
17+
"postgres": &postgres.Driver{},
18+
"mysql": &mysql.Driver{},
19+
"bash": &bash.Driver{},
20+
"cassandra": &cassandra.Driver{},
21+
"sqlite3": &sqlite3.Driver{},
22+
}
23+
1724
// Driver is the interface type that needs to implemented by all drivers.
1825
type Driver interface {
1926

@@ -47,48 +54,14 @@ func New(url string) (Driver, error) {
4754
return nil, err
4855
}
4956

50-
switch u.Scheme {
51-
case "postgres":
52-
d := &postgres.Driver{}
53-
verifyFilenameExtension("postgres", d)
54-
if err := d.Initialize(url); err != nil {
55-
return nil, err
56-
}
57-
return d, nil
58-
59-
case "mysql":
60-
d := &mysql.Driver{}
61-
verifyFilenameExtension("mysql", d)
62-
if err := d.Initialize(url); err != nil {
63-
return nil, err
64-
}
65-
return d, nil
66-
67-
case "bash":
68-
d := &bash.Driver{}
69-
verifyFilenameExtension("bash", d)
70-
if err := d.Initialize(url); err != nil {
71-
return nil, err
72-
}
73-
return d, nil
74-
75-
case "cassandra":
76-
d := &cassandra.Driver{}
77-
verifyFilenameExtension("cassanda", d)
78-
if err := d.Initialize(url); err != nil {
79-
return nil, err
80-
}
81-
return d, nil
82-
case "sqlite3":
83-
d := &sqlite3.Driver{}
84-
verifyFilenameExtension("sqlite3", d)
57+
if d, found := driverMap[u.Scheme]; found {
58+
verifyFilenameExtension(u.Scheme, d)
8559
if err := d.Initialize(url); err != nil {
8660
return nil, err
8761
}
8862
return d, nil
89-
default:
90-
return nil, errors.New(fmt.Sprintf("Driver '%s' not found.", u.Scheme))
9163
}
64+
return nil, fmt.Errorf("Driver '%s' not found.", u.Scheme)
9265
}
9366

9467
// verifyFilenameExtension panics if the drivers filename extension

driver/driver_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package driver
22

3-
import (
4-
"testing"
5-
)
3+
import "testing"
64

75
func TestNew(t *testing.T) {
86
if _, err := New("unknown://url"); err == nil {

0 commit comments

Comments
 (0)