Skip to content
This repository was archived by the owner on Sep 8, 2019. It is now read-only.

Commit ac15d90

Browse files
Run migrations when the server starts
1 parent 899bad8 commit ac15d90

File tree

4 files changed

+78
-4
lines changed

4 files changed

+78
-4
lines changed

backend/Cargo.lock

Lines changed: 63 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ edition = "2018"
77
[dependencies]
88
rouille = "3.0.0"
99
diesel = { version = "1.3.3", features = ["mysql"] }
10+
diesel_migrations = "1.4.0"
1011
dotenv = "0.13.0"
1112
serde = { version = "1.0", features = ["derive"]}
1213
serde_json = "1.0"

backend/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#[macro_use]
22
extern crate diesel;
33

4+
#[macro_use]
5+
extern crate diesel_migrations;
6+
47

58
pub mod errors;
69
pub mod users;

backend/src/main.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#[macro_use]
2+
extern crate diesel_migrations;
3+
14
use std::env;
25
use std::sync::Mutex;
36
use std::thread;
@@ -6,7 +9,6 @@ use std::time;
69
use log::debug;
710
use log::error;
811
use log::info;
9-
use log::trace;
1012
use log::warn;
1113

1214
use diesel::prelude::*;
@@ -20,6 +22,8 @@ use web_dev::errors::WebdevErrorKind;
2022
use web_dev::users::models::UserRequest;
2123
use web_dev::users::requests::handle_user;
2224

25+
embed_migrations!();
26+
2327
fn main() {
2428
dotenv().ok();
2529

@@ -30,7 +34,7 @@ fn main() {
3034

3135
let database_url = match env::var("DATABASE_URL") {
3236
Ok(url) => url,
33-
Err(e) => {
37+
Err(_e) => {
3438
error!("Could not read DATABASE_URL environment variable");
3539
return;
3640
}
@@ -42,15 +46,18 @@ fn main() {
4246
match MysqlConnection::establish(&database_url) {
4347
Ok(c) => break c,
4448
Err(e) => {
45-
error!("Could not connect to database: {}", e);
46-
error!("Retrying in a second");
49+
warn!("Could not connect to database: {}", e);
50+
info!("Retrying in a second");
4751
thread::sleep(time::Duration::from_secs(1));
4852
}
4953
}
5054
};
5155

5256
debug!("Connected to database");
5357

58+
info!("Running migrations");
59+
embedded_migrations::run(&connection);
60+
5461
let connection_mutex = Mutex::new(connection);
5562

5663
info!("Starting server on 0.0.0.0:8000");

0 commit comments

Comments
 (0)