Run migration via try_on_ignite

This commit is contained in:
Sam Samai 2021-08-27 22:31:54 +10:00
parent 41d25225e2
commit f191645467

View File

@ -1,4 +1,4 @@
use rocket::fairing::AdHoc; use rocket::fairing::{self, AdHoc};
use rocket::response::status::Created; use rocket::response::status::Created;
use rocket::serde::json::Json; use rocket::serde::json::Json;
use rocket::{futures, Build, Rocket}; use rocket::{futures, Build, Rocket};
@ -81,56 +81,10 @@ async fn destroy(conn: Connection<Db>) -> Result<()> {
Ok(()) Ok(())
} }
// async fn run_migrations(rocket: Rocket<Build>) -> fairing::Result { async fn run_migrations(rocket: Rocket<Build>) -> fairing::Result {
// use crate::rocket_db_pools::Pool;
// // match Db::fetch(&rocket) {
// // Some(db) => match sqlx::migrate!("db/sqlx/migrations").run(&**db).await {
// // Ok(_) => Ok(rocket),
// // Err(e) => {
// // error!("Failed to initialize SQLx database: {}", e);
// // Err(rocket)
// // }
// // },
// // None => Err(rocket),
// // }
// // let conn = Db::get(&rocket).await.expect("database connection");
// match Db::fetch(&rocket) {
// Some(db) => match setup::create_post_table(db.get().await().expect("database connection")).await {
// Ok(_) => {
// println!("rocket: {:#?}", rocket);
// Ok(rocket)
// }
// Err(e) => {
// error!("Failed to initialize SQLx database: {}", e);
// Err(rocket)
// }
// },
// None => Err(rocket),
// }
// // Ok(rocket)
// }
pub fn stage() -> AdHoc {
AdHoc::on_ignite("SQLx Stage", |rocket| async {
rocket
.attach(Db::init())
.attach(AdHoc::try_on_ignite("Create init post", |rocket| async {
let con = sea_orm::Database::connect("mysql://root:@localhost/rocket_example") let con = sea_orm::Database::connect("mysql://root:@localhost/rocket_example")
.await .await
.unwrap(); .unwrap();
// let res = sqlx::query(
// r#"
// CREATE TABLE posts (
// id INTEGER PRIMARY KEY AUTOINCREMENT,
// title VARCHAR NOT NULL,
// text VARCHAR NOT NULL,
// published BOOLEAN NOT NULL DEFAULT 0
// )"#,
// )
// .execute(&**db)
// .await;
let create_post_table = con let create_post_table = con
.execute(Statement::from_string( .execute(Statement::from_string(
DatabaseBackend::MySql, DatabaseBackend::MySql,
@ -145,67 +99,14 @@ pub fn stage() -> AdHoc {
)) ))
.await; .await;
println!("create_post_table: {:#?}", create_post_table); println!("create_post_table: {:#?}", create_post_table);
let create_post = con
.execute(Statement::from_string(
DatabaseBackend::MySql,
"INSERT INTO posts (title, text) VALUES ('a post', 'content of a post')"
.to_owned(),
))
.await;
println!("create_post: {:#?}", create_post);
// println!("all_posts: {:#?}", all_posts);
// let res2 = sqlx::query(
// r#"
// INSERT INTO posts (title, text) VALUES ('a post', 'content of a post')
// "#,
// )
// .execute(&**db)
// .await;
// println!("res2: {:#?}", res2);
// Db::fetch(&rocket)
// .run(|db| {
// sqlx::query("DELETE FROM table").execute(&pool).await;
// // conn.execute(
// // r#"
// // CREATE TABLE posts (
// // id INTEGER PRIMARY KEY AUTOINCREMENT,
// // title VARCHAR NOT NULL,
// // text VARCHAR NOT NULL,
// // published BOOLEAN NOT NULL DEFAULT 0
// // )"#,
// // params![],
// // )
// })
// .await
// .expect("can init rusqlite DB");
Ok(rocket) Ok(rocket)
}
// match Db::fetch(&rocket) { pub fn stage() -> AdHoc {
// Some(db) => { AdHoc::on_ignite("SQLx Stage", |rocket| async {
// println!("db: {:#?}", db); rocket
// println!("&**db: {:#?}", &**db); .attach(Db::init())
.attach(AdHoc::try_on_ignite("SQLx Migrations", run_migrations))
// Ok(rocket)
// }
// None => Err(rocket),
// }
}))
.mount("/sqlx", routes![create, delete, destroy, list, read,]) .mount("/sqlx", routes![create, delete, destroy, list, read,])
}) })
} }
// pub async fn create_post(db: &DbConn) {
// let post = post::ActiveModel {
// title: Set("Post One".to_owned()),
// text: Set("post content 1".to_owned()),
// ..Default::default()
// }
// .save(db)
// .await
// .expect("could not insert post");
// }