aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2019-03-04 17:33:20 +0100
committerHarald Eilertsen <haraldei@anduin.net>2019-03-04 17:33:20 +0100
commitcd6eba8b2b70404e93d9d4b0832faa7c9f00d217 (patch)
tree3ff74c7c8dcfb43ba590b53695209062bc4d62b2
parent14cf4b8fdd69b31c8030b6530bbe07fd1df5b25a (diff)
downloadramaskrik-social-cd6eba8b2b70404e93d9d4b0832faa7c9f00d217.tar.gz
ramaskrik-social-cd6eba8b2b70404e93d9d4b0832faa7c9f00d217.tar.bz2
ramaskrik-social-cd6eba8b2b70404e93d9d4b0832faa7c9f00d217.zip
Refactoring, move db connection and room controller to separate modules.
-rw-r--r--src/controllers.rs19
-rw-r--r--src/controllers/room.rs29
-rw-r--r--src/db.rs26
-rw-r--r--src/lib.rs27
4 files changed, 81 insertions, 20 deletions
diff --git a/src/controllers.rs b/src/controllers.rs
new file mode 100644
index 0000000..d8f9d5d
--- /dev/null
+++ b/src/controllers.rs
@@ -0,0 +1,19 @@
+/*
+ Social program for Ramaskrik.
+ Copyright (C) 2019 Harald Eilertsen <haraldei@anduin.net>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+pub mod room;
diff --git a/src/controllers/room.rs b/src/controllers/room.rs
new file mode 100644
index 0000000..27f6a41
--- /dev/null
+++ b/src/controllers/room.rs
@@ -0,0 +1,29 @@
+/*
+ Social program for Ramaskrik.
+ Copyright (C) 2019 Harald Eilertsen <haraldei@anduin.net>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+use crate::db;
+use rocket::get;
+use rocket_contrib::{
+ json,
+ json::JsonValue,
+};
+
+#[get("/")]
+pub fn get_rooms(_db: db::Connection) -> JsonValue {
+ json!([])
+}
diff --git a/src/db.rs b/src/db.rs
new file mode 100644
index 0000000..f427e14
--- /dev/null
+++ b/src/db.rs
@@ -0,0 +1,26 @@
+/*
+ Social program for Ramaskrik.
+ Copyright (C) 2019 Harald Eilertsen <haraldei@anduin.net>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+use rocket_contrib::{
+ database,
+ databases::diesel,
+};
+
+#[database("main")]
+pub struct Connection(diesel::PgConnection);
+
diff --git a/src/lib.rs b/src/lib.rs
index e6bb0f6..7929ab2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -17,28 +17,15 @@
*/
#![feature(proc_macro_hygiene, decl_macro)]
-use rocket::{
- get,
- routes,
-};
-use rocket_contrib::{
- database,
- databases::diesel,
- json,
- json::JsonValue,
-};
+mod controllers;
+mod db;
+use crate::controllers::room;
+
+use rocket::routes;
use std::collections::HashMap;
use std::error::Error;
use std::result::Result;
-#[database("main")]
-struct DbConn(diesel::PgConnection);
-
-#[get("/")]
-fn get_rooms(_db: DbConn) -> JsonValue {
- json!([])
-}
-
pub fn build_rocket() -> Result<rocket::Rocket, Box<dyn Error>> {
let db_url = dotenv::var("DATABASE_URL")
.map_err(|_| "No database! Set DATABASE_URL env var and try again.")?;
@@ -53,7 +40,7 @@ pub fn build_rocket() -> Result<rocket::Rocket, Box<dyn Error>> {
config.extras.insert("databases".into(), rocket::config::Value::from(databases));
Ok(rocket::custom(config)
- .attach(DbConn::fairing())
+ .attach(db::Connection::fairing())
.mount("/", rocket_contrib::serve::StaticFiles::from("./public"))
- .mount("/rooms", routes![get_rooms]))
+ .mount("/rooms", routes![room::get_rooms]))
}