From ad0e585abed7a189b6117e9187c9afff809d1414 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 8 Apr 2019 15:55:14 +0200 Subject: Move functions to query/modify db to connection object. Makes tha API a bit nicer by asking the database rather than passing the database on to each model. Reserve models for method/functions that work on the model structs themselves. --- src/models/film.rs | 18 +----------------- src/models/room.rs | 18 +----------------- src/models/screening.rs | 36 +----------------------------------- 3 files changed, 3 insertions(+), 69 deletions(-) (limited to 'src/models') diff --git a/src/models/film.rs b/src/models/film.rs index 8207e5d..8f17d42 100644 --- a/src/models/film.rs +++ b/src/models/film.rs @@ -16,11 +16,7 @@ along with this program. If not, see . */ -use crate::{ - db::Connection, - schema::films, -}; -use diesel::prelude::*; +use crate::schema::films; use serde_derive::{Deserialize, Serialize}; #[derive(Deserialize, Identifiable, PartialEq, Serialize, Queryable)] @@ -36,15 +32,3 @@ pub struct NewFilm<'a> { pub title: &'a str, pub url: Option<&'a str>, } - -pub fn get_all(db: &Connection) -> QueryResult> { - use crate::schema::films::dsl::*; - films.load::(&**db) -} - -pub fn by_title(ftitle: &str, db: &Connection) -> QueryResult { - use crate::schema::films::dsl::*; - films - .filter(title.eq(&ftitle)) - .get_result::(&**db) -} diff --git a/src/models/room.rs b/src/models/room.rs index 6360c88..d475901 100644 --- a/src/models/room.rs +++ b/src/models/room.rs @@ -16,11 +16,7 @@ along with this program. If not, see . */ -use crate::{ - db::Connection, - schema::rooms, -}; -use diesel::prelude::*; +use crate::schema::rooms; use serde_derive::{Deserialize, Serialize}; #[derive(Deserialize, Identifiable, PartialEq, Serialize, Queryable)] @@ -28,15 +24,3 @@ pub struct Room { pub id: i32, pub name: String, } - -pub fn get_all(db: &Connection) -> QueryResult> { - use crate::schema::rooms::dsl::*; - rooms.load::(&**db) -} - -pub fn by_name(rname: &str, db: &Connection) -> QueryResult { - use crate::schema::rooms::dsl::*; - rooms - .filter(name.eq(&rname)) - .get_result::(&**db) -} diff --git a/src/models/screening.rs b/src/models/screening.rs index cd08e88..5058d65 100644 --- a/src/models/screening.rs +++ b/src/models/screening.rs @@ -16,12 +16,7 @@ along with this program. If not, see . */ -use crate::{ - db::Connection, - models::{film::Film, room::Room}, - schema::*, -}; -use diesel::prelude::*; +use crate::schema::*; use serde_derive::{Deserialize, Serialize}; joinable!(screenings -> rooms (room_id)); @@ -46,32 +41,3 @@ pub struct NewScreening { pub start_time: chrono::NaiveTime, pub end_time: chrono::NaiveTime, } - -pub fn get_all(db: &Connection) -> QueryResult, Option)>> { - use crate::schema::screenings::dsl::*; - screenings - .left_join(films::table) - .left_join(rooms::table) - .get_results::<(Screening, Option, Option)>(&**db) -} - -pub fn create( - room: &Room, - film: &Film, - date: chrono::NaiveDate, - start_time: chrono::NaiveTime, - end_time: chrono::NaiveTime, - db: &Connection) -> QueryResult -{ - let s = NewScreening { - room_id: room.id, - film_id: film.id, - date: date, - start_time: start_time, - end_time: end_time, - }; - - diesel::insert_into(screenings::table) - .values(&s) - .execute(&**db) -} -- cgit v1.2.3