diff options
Diffstat (limited to 'backend/src/main.rs')
| -rw-r--r-- | backend/src/main.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/backend/src/main.rs b/backend/src/main.rs new file mode 100644 index 0000000..db47ceb --- /dev/null +++ b/backend/src/main.rs @@ -0,0 +1,41 @@ +use diesel::SqliteConnection; +use diesel_migrations::MigrationHarness; +use diesel_migrations::{embed_migrations, EmbeddedMigrations}; +use rocket::fairing::AdHoc; +use rocket::{launch, routes, Build, Rocket}; + +use crate::databases::UserDataDb; + +pub mod databases; +pub mod models; +pub mod routes; +pub mod schema; + +pub const MIGRATIONS: EmbeddedMigrations = embed_migrations!("migrations"); + +fn run_database_migrations(connection: &mut SqliteConnection) { + connection + .run_pending_migrations(MIGRATIONS) + .expect("Error running database migrations"); +} + +#[launch] +async fn rocket() -> Rocket<Build> { + rocket::build() + .attach(UserDataDb::fairing()) + .attach(AdHoc::on_liftoff("Database Migration", |rocket| { + Box::pin(async move { + let user_data_db = UserDataDb::get_one(rocket).await.expect( + "Failed to get connection to user data database in order to run migrations", + ); + user_data_db.run(run_database_migrations).await; + }) + })) + .mount( + "/", + routes![ + routes::account::get_all_accounts, + routes::account::create_account + ], + ) +} |
