Running direct diesel sql query

This commit is contained in:
Benjamin Sherriff
2023-07-06 23:17:16 -04:00
parent 4a366d6237
commit 81b5cb4b32
4 changed files with 29 additions and 49 deletions

View File

@@ -1,45 +1,37 @@
use std::env;
// use std::path::Path;
use std::path::Path;
use diesel::RunQueryDsl;
use diesel::r2d2::{Pool, ConnectionManager};
use diesel::pg::PgConnection;
use log::{error, info};
pub mod models;
pub mod schema;
// pub fn run_migrations(pool: &Pool<ConnectionManager<PgConnection>>) {
// let mut connection = pool.get().unwrap();
// let migrations_dir = Path::new("./migrations");
// let migrations = std::fs::read_dir(&migrations_dir).unwrap();
pub fn run_migrations(pool: &Pool<ConnectionManager<PgConnection>>) {
let mut connection = pool.get().unwrap();
let migrations_dir = Path::new("./migrations");
let migrations = std::fs::read_dir(&migrations_dir).unwrap();
// for migration in migrations {
// if migration.as_ref().unwrap().file_type().unwrap().is_dir() {
// let migration_paths = std::fs::read_dir(&migration.unwrap().path()).unwrap();
for migration in migrations {
if migration.as_ref().unwrap().file_type().unwrap().is_dir() {
let migration_paths = std::fs::read_dir(&migration.unwrap().path()).unwrap();
// for migration_path in migration_paths {
// if migration_path.as_ref().unwrap().file_name().eq_ignore_ascii_case("up.sql") {
// let path = &migration_path.unwrap().path();
// let contents = std::fs::read_to_string(path).expect("Unable to read from file");
// connection.build_transaction()
// connection.build_transaction()
// .read_write()
// .run(|conn| {
// // let read_attempt = users.select(name).load::<String>(conn);
// // assert!(read_attempt.is_ok());
// // let write_attempt = diesel::insert_into(users)
// // .values(name.eq("Ruby"))
// // .execute(conn);
// // assert!(write_attempt.is_ok());
// // diesel::migration::CREATE_MIGRATIONS_TABLE
// // Ok(())
// });
// }
// }
// }
// }
// }
for migration_path in migration_paths {
if migration_path.as_ref().unwrap().file_name().eq_ignore_ascii_case("up.sql") {
let path = &migration_path.unwrap().path();
let contents = std::fs::read_to_string(path).expect("Unable to read from file");
if let Err(err) = diesel::sql_query(&contents).execute(&mut connection) {
error!("Could not run migration: {}", err);
} else {
info!("Successfully ran migration: {}", path.display());
}
}
}
}
}
}
pub fn establish_connection() -> Pool<ConnectionManager<PgConnection>> {
let database_user = env::var("POSTGRES_USER").expect("Expected a user in the environment");