move forum stuff to separate file

This commit is contained in:
Vivian Lim 2018-10-21 00:30:47 -07:00
parent f6bae4189e
commit 5041168f24
4 changed files with 31 additions and 29 deletions

26
src/forum.rs Normal file
View File

@ -0,0 +1,26 @@
use diesel;
use diesel::prelude::*;
use Session;
#[derive(Debug, Queryable)]
pub struct Forum {
pub id: i32,
pub name: String,
pub description: String,
pub minimum_permission_level: i32
}
pub fn get_forums(session: &Session) -> QueryResult<Vec<Forum>> {
use schema::forums::dsl::*;
return forums.select((id, name, description, minimum_permission_level)).load(session.db());
}
pub fn add_forum(session: &Session, forum_name: &String, forum_description: &String) {
use schema::forums::dsl::*;
diesel::insert_into(forums)
.values((
name.eq(forum_name),
description.eq(forum_description),
minimum_permission_level.eq(0)
)).execute(session.db()).expect("whoops inserting into forums failed");
}

View File

@ -21,6 +21,7 @@ mod models;
mod render_ructe;
mod schema;
mod session;
mod forum;
use diesel::insert_into;
use diesel::prelude::*;
@ -75,7 +76,7 @@ fn main() {
/// Render a forum list.
fn forum_list(session: Session) -> Result<impl Reply, Rejection> {
use session::get_forums;
use forum::get_forums;
match get_forums(&session){
Ok(forums) => Response::builder().html(|o| templates::forum_list(o, &session, &forums, None, None)),
Err(err) => Err(reject::server_error().with(err))
@ -84,8 +85,8 @@ fn forum_list(session: Session) -> Result<impl Reply, Rejection> {
/// seed forum list
fn add_forum(session: Session, forum_name: String) -> Result<impl Reply, Rejection> {
use session::add_forum;
use session::get_forums;
use forum::add_forum;
use forum::get_forums;
add_forum(&session, &forum_name, &forum_name);
match get_forums(&session){
Ok(forums) => Response::builder().html(|o| templates::forum_list(o, &session, &forums, None, None)),

View File

@ -149,29 +149,4 @@ pub fn create_session_filter(db_url: &str) -> BoxedFilter<(Session,)> {
fn pg_pool(database_url: &str) -> SqlitePool {
let manager = ConnectionManager::<SqliteConnection>::new(database_url);
Pool::new(manager).expect("Sqlite connection pool could not be created")
}
/* begin forum stuff. todo: refactor into a separate file */
#[derive(Debug, Queryable)]
pub struct Forum {
pub id: i32,
pub name: String,
pub description: String,
pub minimum_permission_level: i32
}
pub fn get_forums(session: &Session) -> QueryResult<Vec<Forum>> {
use schema::forums::dsl::*;
return forums.select((id, name, description, minimum_permission_level)).load(&session.db);
}
pub fn add_forum(session: &Session, forum_name: &String, forum_description: &String) {
use schema::forums::dsl::*;
diesel::insert_into(forums)
.values((
name.eq(forum_name),
description.eq(forum_description),
minimum_permission_level.eq(0)
)).execute(&session.db).expect("whoops inserting into forums failed");
}

View File

@ -1,6 +1,6 @@
@use templates::page_base;
@use Session;
@use session::Forum;
@use forum::Forum;
@(session: &Session, forums: &Vec<Forum>, _next: Option<String>, _message: Option<&str>)