From 6a40921ac4dfd1d616d63f95d4eeafe6db7a3284 Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Sun, 29 Nov 2020 18:58:50 +0100 Subject: [PATCH] server: Embed migrations --- musicus_server/Cargo.toml | 1 + musicus_server/src/database/mod.rs | 7 +++++++ musicus_server/src/main.rs | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/musicus_server/Cargo.toml b/musicus_server/Cargo.toml index 31163ec..a3e7312 100644 --- a/musicus_server/Cargo.toml +++ b/musicus_server/Cargo.toml @@ -9,6 +9,7 @@ actix-web-httpauth = "0.5.0" anyhow = "1.0.34" derive_more = "0.99.11" diesel = { version = "1.4.4", features = ["postgres", "r2d2"] } +diesel_migrations = "1.4.0" dotenv = "0.15.0" env_logger = "0.8.1" jsonwebtoken = "7.2.0" diff --git a/musicus_server/src/database/mod.rs b/musicus_server/src/database/mod.rs index da93e46..53b38f3 100644 --- a/musicus_server/src/database/mod.rs +++ b/musicus_server/src/database/mod.rs @@ -22,6 +22,9 @@ pub use works::*; mod schema; +// This makes the SQL migration scripts accessible from the code. +embed_migrations!(); + /// A pool of connections to the database. pub type DbPool = r2d2::Pool>; @@ -35,5 +38,9 @@ pub fn connect() -> Result { let manager = r2d2::ConnectionManager::::new(url); let pool = r2d2::Pool::new(manager)?; + // Run embedded migrations. + let conn = pool.get()?; + embedded_migrations::run(&conn)?; + Ok(pool) } diff --git a/musicus_server/src/main.rs b/musicus_server/src/main.rs index 04039aa..eb0edd8 100644 --- a/musicus_server/src/main.rs +++ b/musicus_server/src/main.rs @@ -2,6 +2,10 @@ #[macro_use] extern crate diesel; +// Required for embed_migrations macro in database/mod.rs +#[macro_use] +extern crate diesel_migrations; + use actix_web::{App, HttpServer}; mod database;