@@ -61,6 +61,8 @@ mod schema;
61
61
62
62
pub use self :: migration_error:: * ;
63
63
64
+ use std:: io:: { stdout, Write } ;
65
+
64
66
use :: expression:: expression_methods:: * ;
65
67
use :: query_dsl:: * ;
66
68
use self :: migration:: * ;
@@ -92,11 +94,11 @@ pub fn run_pending_migrations<Conn>(conn: &Conn) -> Result<(), RunMigrationsErro
92
94
String : FromSql < VarChar , Conn :: Backend > ,
93
95
{
94
96
let migrations_dir = try!( find_migrations_directory ( ) ) ;
95
- run_pending_migrations_in_directory ( conn, & migrations_dir)
97
+ run_pending_migrations_in_directory ( conn, & migrations_dir, & mut stdout ( ) )
96
98
}
97
99
98
100
#[ doc( hidden) ]
99
- pub fn run_pending_migrations_in_directory < Conn > ( conn : & Conn , migrations_dir : & Path )
101
+ pub fn run_pending_migrations_in_directory < Conn > ( conn : & Conn , migrations_dir : & Path , output : & mut Write )
100
102
-> Result < ( ) , RunMigrationsError > where
101
103
Conn : Connection ,
102
104
String : FromSql < VarChar , Conn :: Backend > ,
@@ -107,7 +109,7 @@ pub fn run_pending_migrations_in_directory<Conn>(conn: &Conn, migrations_dir: &P
107
109
let pending_migrations = all_migrations. into_iter ( ) . filter ( |m| {
108
110
!already_run. contains ( m. version ( ) )
109
111
} ) ;
110
- run_migrations ( conn, pending_migrations. collect ( ) )
112
+ run_migrations ( conn, pending_migrations. collect ( ) , output )
111
113
}
112
114
113
115
/// Reverts the last migration that was run. Returns the version that was reverted. Returns an
@@ -121,22 +123,26 @@ pub fn revert_latest_migration<Conn>(conn: &Conn) -> Result<String, RunMigration
121
123
{
122
124
try!( create_schema_migrations_table_if_needed ( conn) ) ;
123
125
let latest_migration_version = try!( latest_run_migration_version ( conn) ) ;
124
- revert_migration_with_version ( conn, & latest_migration_version)
126
+ revert_migration_with_version ( conn, & latest_migration_version, & mut stdout ( ) )
125
127
. map ( |_| latest_migration_version)
126
128
}
127
129
128
130
#[ doc( hidden) ]
129
- pub fn revert_migration_with_version < Conn : Connection > ( conn : & Conn , ver : & str ) -> Result < ( ) , RunMigrationsError > {
131
+ pub fn revert_migration_with_version < Conn : Connection > ( conn : & Conn , ver : & str , output : & mut Write )
132
+ -> Result < ( ) , RunMigrationsError >
133
+ {
130
134
migration_with_version ( ver)
131
135
. map_err ( |e| e. into ( ) )
132
- . and_then ( |m| revert_migration ( conn, m) )
136
+ . and_then ( |m| revert_migration ( conn, m, output ) )
133
137
}
134
138
135
139
#[ doc( hidden) ]
136
- pub fn run_migration_with_version < Conn : Connection > ( conn : & Conn , ver : & str ) -> Result < ( ) , RunMigrationsError > {
140
+ pub fn run_migration_with_version < Conn : Connection > ( conn : & Conn , ver : & str , output : & mut Write )
141
+ -> Result < ( ) , RunMigrationsError >
142
+ {
137
143
migration_with_version ( ver)
138
144
. map_err ( |e| e. into ( ) )
139
- . and_then ( |m| run_migration ( conn, m) )
145
+ . and_then ( |m| run_migration ( conn, m, output ) )
140
146
}
141
147
142
148
fn migration_with_version ( ver : & str ) -> Result < Box < Migration > , MigrationError > {
@@ -196,21 +202,21 @@ fn migrations_in_directory(path: &Path) -> Result<Vec<Box<Migration>>, Migration
196
202
} ) . collect ( )
197
203
}
198
204
199
- fn run_migrations < Conn : Connection > ( conn : & Conn , mut migrations : Vec < Box < Migration > > )
205
+ fn run_migrations < Conn : Connection > ( conn : & Conn , mut migrations : Vec < Box < Migration > > , output : & mut Write )
200
206
-> Result < ( ) , RunMigrationsError >
201
207
{
202
208
migrations. sort_by ( |a, b| a. version ( ) . cmp ( b. version ( ) ) ) ;
203
209
for migration in migrations {
204
- try!( run_migration ( conn, migration) ) ;
210
+ try!( run_migration ( conn, migration, output ) ) ;
205
211
}
206
212
Ok ( ( ) )
207
213
}
208
214
209
- fn run_migration < Conn : Connection > ( conn : & Conn , migration : Box < Migration > )
215
+ fn run_migration < Conn : Connection > ( conn : & Conn , migration : Box < Migration > , output : & mut Write )
210
216
-> Result < ( ) , RunMigrationsError >
211
217
{
212
218
conn. transaction ( || {
213
- println ! ( "Running migration {}" , migration. version( ) ) ;
219
+ try! ( writeln ! ( output , "Running migration {}" , migration. version( ) ) ) ;
214
220
try!( migration. run ( conn) ) ;
215
221
try!( :: insert ( & NewMigration ( migration. version ( ) ) )
216
222
. into ( __diesel_schema_migrations)
@@ -219,11 +225,11 @@ fn run_migration<Conn: Connection>(conn: &Conn, migration: Box<Migration>)
219
225
} ) . map_err ( |e| e. into ( ) )
220
226
}
221
227
222
- fn revert_migration < Conn : Connection > ( conn : & Conn , migration : Box < Migration > )
228
+ fn revert_migration < Conn : Connection > ( conn : & Conn , migration : Box < Migration > , output : & mut Write )
223
229
-> Result < ( ) , RunMigrationsError >
224
230
{
225
231
try!( conn. transaction ( || {
226
- println ! ( "Rolling back migration {}" , migration. version( ) ) ;
232
+ try! ( writeln ! ( output , "Rolling back migration {}" , migration. version( ) ) ) ;
227
233
try!( migration. revert ( conn) ) ;
228
234
let target = __diesel_schema_migrations. filter ( version. eq ( migration. version ( ) ) ) ;
229
235
try!( :: delete ( target) . execute ( conn) ) ;
0 commit comments