move forum stuff to separate file
This commit is contained in:
parent
f6bae4189e
commit
5041168f24
|
@ -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");
|
||||
}
|
|
@ -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)),
|
||||
|
|
|
@ -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");
|
||||
}
|
|
@ -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>)
|
||||
|
||||
|
|
Loading…
Reference in New Issue