@@ -13,7 +13,7 @@ import (
13
13
"github.com/lib/pq"
14
14
)
15
15
16
- var _ driver. Driver = ( * Driver )( nil )
16
+ var fileTemplate = [] byte ( `` ) // TODO
17
17
18
18
// Driver is the postgres driver for journey.
19
19
type Driver struct {
@@ -23,21 +23,19 @@ type Driver struct {
23
23
const tableName = "public.schema_migrations"
24
24
const txDisabledOption = "disable_ddl_transaction"
25
25
26
- // make sure our driver still implements the driver.Driver interface
27
- var _ driver.Driver = (* Driver )(nil )
28
-
29
- // Initialize opens and verifies the database handle.
30
- func (driver * Driver ) Initialize (url string ) error {
26
+ // Open opens and verifies the database handle.
27
+ func Open (url string ) (driver.Driver , error ) {
28
+ driver := & Driver {}
31
29
db , err := sql .Open ("postgres" , url )
32
30
if err != nil {
33
- return err
31
+ return nil , err
34
32
}
35
33
if err := db .Ping (); err != nil {
36
- return err
34
+ return nil , err
37
35
}
38
36
driver .db = db
39
37
40
- return driver .ensureVersionTableExists ()
38
+ return driver , driver .ensureVersionTableExists ()
41
39
}
42
40
43
41
// SetDB replaces the current database handle.
@@ -77,46 +75,31 @@ func (driver *Driver) ensureVersionTableExists() error {
77
75
return err
78
76
}
79
77
80
- // FilenameExtension returns "sql".
81
- func (driver * Driver ) FilenameExtension () string {
82
- return "sql"
83
- }
84
-
85
78
// Migrate performs the migration of any one file.
86
- func (driver * Driver ) Migrate (f file.File , pipe chan interface {}) {
87
- defer close (pipe )
88
- var err error
89
- pipe <- f
90
-
91
- tx , err := driver .db .Begin ()
79
+ func (driver * Driver ) Migrate (f file.File ) (err error ) {
80
+ var tx * sql.Tx
81
+ tx , err = driver .db .Begin ()
92
82
if err != nil {
93
- pipe <- err
94
- return
83
+ return err
95
84
}
96
85
defer func () {
97
86
if err != nil {
98
- if err := tx .Rollback (); err != nil {
99
- pipe <- err
100
- }
87
+ tx .Rollback ()
101
88
}
102
-
103
89
}()
104
90
105
91
if f .Direction == direction .Up {
106
92
if _ , err = tx .Exec ("INSERT INTO " + tableName + " (version) VALUES ($1)" , f .Version ); err != nil {
107
- pipe <- err
108
- return
93
+ return err
109
94
}
110
95
} else if f .Direction == direction .Down {
111
96
if _ , err = tx .Exec ("DELETE FROM " + tableName + " WHERE version=$1" , f .Version ); err != nil {
112
- pipe <- err
113
- return
97
+ return err
114
98
}
115
99
}
116
100
117
101
if err = f .ReadContent (); err != nil {
118
- pipe <- err
119
- return
102
+ return err
120
103
}
121
104
122
105
if txDisabled (fileOptions (f .Content )) {
@@ -131,17 +114,12 @@ func (driver *Driver) Migrate(f file.File, pipe chan interface{}) {
131
114
if err == nil && offset >= 0 {
132
115
lineNo , columnNo := file .LineColumnFromOffset (f .Content , offset - 1 )
133
116
errorPart := file .LinesBeforeAndAfter (f .Content , lineNo , 5 , 5 , true )
134
- pipe <- fmt .Errorf ("%s %v: %s in line %v, column %v:\n \n %s" , pqErr .Severity , pqErr .Code , pqErr .Message , lineNo , columnNo , string (errorPart ))
135
- } else {
136
- pipe <- fmt .Errorf ("%s %v: %s" , pqErr .Severity , pqErr .Code , pqErr .Message )
117
+ return fmt .Errorf ("%s %v: %s in line %v, column %v:\n \n %s" , pqErr .Severity , pqErr .Code , pqErr .Message , lineNo , columnNo , string (errorPart ))
137
118
}
138
- return
119
+ return fmt . Errorf ( "%s %v: %s" , pqErr . Severity , pqErr . Code , pqErr . Message )
139
120
}
140
121
141
- if err := tx .Commit (); err != nil {
142
- pipe <- err
143
- return
144
- }
122
+ return tx .Commit ()
145
123
}
146
124
147
125
// Version returns the current migration version.
@@ -209,7 +187,6 @@ func init() {
209
187
// According to the PostgreSQL documentation (section 32.1.1.2), postgres
210
188
// library supports two URI schemes: postgresql:// and postgres://
211
189
// https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
212
- drv := Driver {}
213
- driver .RegisterDriver ("postgres" , & drv )
214
- driver .RegisterDriver ("postgresql" , & drv )
190
+ driver .Register ("postgres" , "sql" , fileTemplate , Open )
191
+ driver .Register ("postgresql" , "sql" , fileTemplate , Open )
215
192
}
0 commit comments