Skip to content

Commit

Permalink
allow multiple staements in sql files and mods, closes #21
Browse files Browse the repository at this point in the history
  • Loading branch information
jxs committed Dec 18, 2019
1 parent 695977c commit 57bab05
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 15 deletions.
4 changes: 2 additions & 2 deletions refinery/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ for more examples refer to the [`examples`](https://github.com/rust-db/refinery/
pub use refinery_macros::{embed_migrations, include_migration_mods};
#[doc(hidden)]
pub use refinery_migrations::Error;
pub use refinery_migrations::{Config, ConfigDbType, Migration, Runner};
pub use refinery_migrations::{Migration, Runner};

#[cfg(any(feature = "mysql", feature = "postgres", feature = "rusqlite"))]
pub use refinery_migrations::Migrate;
pub use refinery_migrations::{Config, ConfigDbType, Migrate};

#[cfg(any(feature = "tokio-postgres"))]
pub use refinery_migrations::AsyncMigrate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,10 @@ pub fn migration() -> String {
t.add_column("name", types::varchar(255));
});

m.create_table("motos", |t| {
t.add_column("id", types::integer());
t.add_column("name", types::varchar(255));
});

m.make::<Sql>()
}
}
4 changes: 4 additions & 0 deletions refinery/tests/sql_migrations/V2__add_cars_table.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@ CREATE TABLE cars (
id int,
name varchar(255)
);
CREATE TABLE motos (
id int,
name varchar(255)
);
13 changes: 5 additions & 8 deletions refinery_migrations/src/drivers/mysql.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::{AppliedMigration, Query, Transaction};
use chrono::{DateTime, Local};
use mysql::{
error::Error as MError, params::Params, Conn, IsolationLevel, PooledConn,
error::Error as MError, Conn, IsolationLevel, PooledConn,
Transaction as MTransaction,
};

Expand Down Expand Up @@ -36,7 +36,8 @@ impl Transaction for Conn {
self.start_transaction(true, Some(IsolationLevel::RepeatableRead), None)?;
let mut count = 0;
for query in queries.iter() {
count += transaction.first_exec(query, Params::Empty)?.unwrap_or(0);
transaction.query(query)?;
count += 1;
}
transaction.commit()?;
Ok(count as usize)
Expand All @@ -52,12 +53,8 @@ impl Transaction for PooledConn {
let mut count = 0;

for query in queries.iter() {
let result = transaction.first_exec(query, Params::Empty);
if result.is_err() {
transaction.rollback()?;
return result.map(|_| 0);
}
count += result?.unwrap_or(0);
transaction.query(query)?;
count += 1;
}
transaction.commit()?;
Ok(count as usize)
Expand Down
3 changes: 2 additions & 1 deletion refinery_migrations/src/drivers/postgres.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ impl Transaction for PgConnection {
let transaction = PgConnection::transaction(&self)?;
let mut count = 0;
for query in queries.iter() {
count += PgTransaction::execute(&transaction, query, &[])?;
PgTransaction::batch_execute(&transaction, query)?;
count += 1;
}
transaction.commit()?;
Ok(count as usize)
Expand Down
3 changes: 2 additions & 1 deletion refinery_migrations/src/drivers/tokio_postgres.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ impl AsyncTransaction for Client {
let transaction = self.transaction().await?;
let mut count = 0;
for query in queries.into_iter() {
count += transaction.execute(*query, &[]).await?;
transaction.batch_execute(*query).await?;
count += 1;
}
transaction.commit().await?;
Ok(count as usize)
Expand Down
4 changes: 2 additions & 2 deletions refinery_migrations/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#[cfg(any(feature = "mysql", feature = "postgres", feature = "rusqlite"))]
mod config;
mod drivers;
mod error;
Expand All @@ -10,7 +11,6 @@ use std::collections::hash_map::DefaultHasher;
use std::fmt;
use std::hash::{Hash, Hasher};

pub use config::{Config, ConfigDbType, Main};
pub use error::{Error, WrapMigrationError};
#[cfg(feature = "async")]
pub use traits::r#async::{AsyncMigrate, AsyncQuery, AsyncTransaction};
Expand All @@ -20,7 +20,7 @@ use utils::RE;
pub use utils::{file_match_re, find_migrations_filenames, MigrationType};

#[cfg(any(feature = "mysql", feature = "postgres", feature = "rusqlite"))]
pub use config::migrate_from_config;
pub use config::{migrate_from_config, Config, ConfigDbType, Main};

/// An enum set that represents the prefix for the Migration, at the moment only Versioned is supported
#[derive(Clone, Debug)]
Expand Down

0 comments on commit 57bab05

Please sign in to comment.