From fcd31fd6a82fb6dbfaf1cd19b16350bb9e2547f1 Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Thu, 19 Aug 2021 22:46:50 +0200 Subject: [PATCH] Setup Rocket entrypoint --- Cargo.lock | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + Rocket.toml | 13 +++++++++++++ src/rbs/main.rs | 39 ++++++++++++++++++++++++++++++++++++--- 4 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 Rocket.toml diff --git a/Cargo.lock b/Cargo.lock index 31b970d..3d92928 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -233,6 +233,21 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "futures" version = "0.3.16" @@ -624,6 +639,33 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" +[[package]] +name = "openssl" +version = "0.10.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9facdb76fec0b73c406f125d44d86fdad818d66fef0531eec9233ca425ff4a" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-sys", +] + +[[package]] +name = "openssl-sys" +version = "0.9.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1996d2d305e561b70d1ee0c53f1542833f4e1ac6ce9a6708b6ff2738ca67dc82" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "parking_lot" version = "0.11.1" @@ -690,6 +732,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkg-config" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" + [[package]] name = "ppv-lite86" version = "0.2.10" @@ -964,6 +1012,7 @@ version = "0.1.0" dependencies = [ "diesel", "diesel_migrations", + "openssl", "rocket", "rocket_sync_db_pools", ] diff --git a/Cargo.toml b/Cargo.toml index b7e4717..6d00ee3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,7 @@ path = "src/rbs/main.rs" rocket = "0.5.0-rc.1" diesel = { version = "1.4.7", features = ["postgres"] } diesel_migrations = "1.4.0" +openssl = "0.10.36" [dependencies.rocket_sync_db_pools] version = "0.1.0-rc.1" diff --git a/Rocket.toml b/Rocket.toml new file mode 100644 index 0000000..081ed68 --- /dev/null +++ b/Rocket.toml @@ -0,0 +1,13 @@ +[debug] +port = 8000 +keep_alive = 5 +read_timeout = 5 +write_timeout = 5 +log_level = "normal" +limits = { forms = 32768 } + +[debug.databases] +postgres_rb = { url = "postgres://rb:rb@localhost:5432/rb" } + +[release.databases] +postgres_rb = { url = "postgres://rb:rb@db:5432/rb" } diff --git a/src/rbs/main.rs b/src/rbs/main.rs index 6e1b97f..9b67662 100644 --- a/src/rbs/main.rs +++ b/src/rbs/main.rs @@ -1,5 +1,38 @@ -use rb::yeet; +// This needs to be explicitely included before diesel is imported to make sure +// compilation succeeds +extern crate openssl; -fn main() { - println!("{}", yeet()); +#[macro_use] +extern crate rocket; + +#[macro_use] +extern crate diesel_migrations; + +use rocket::{fairing::AdHoc, Build, Rocket}; +use rocket_sync_db_pools::{database, diesel}; + +embed_migrations!(); + +#[database("postgres_rb")] +pub struct RbDbConn(diesel::PgConnection); + +async fn run_db_migrations(rocket: Rocket) -> Result, Rocket> { + let conn = RbDbConn::get_one(&rocket) + .await + .expect("database connection"); + conn.run(|c| match embedded_migrations::run(c) { + Ok(()) => Ok(rocket), + Err(_) => Err(rocket), + }) + .await +} + +#[launch] +fn rocket() -> _ { + rocket::build() + .attach(RbDbConn::fairing()) + .attach(AdHoc::try_on_ignite( + "Run database migrations", + run_db_migrations, + )) }