From d6bea61fa917d257219a43386c88a4f04cf82408 Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Fri, 6 Apr 2018 19:22:55 -0400 Subject: database alteration in-flight --- src/db/mod.rs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'src/db/mod.rs') diff --git a/src/db/mod.rs b/src/db/mod.rs index 258d5a5..0862883 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -1,4 +1,5 @@ use std::env; +use std::convert::AsRef; use diesel::prelude::*; use diesel::r2d2::{ConnectionManager, ManageConnection}; @@ -19,8 +20,10 @@ pub fn connection() -> Result { CONN_MGR.connect().map_err(Error::from) } -pub fn find_text(conn: &PgConnection, search: String) -> Result { +pub fn find_meme>(conn: &PgConnection, search: T) -> Result { use diesel::dsl::sql; + + let search = search.as_ref(); let format_search = format!("%{}%", search); memes::table @@ -30,9 +33,23 @@ pub fn find_text(conn: &PgConnection, search: String) -> Result { .map_err(Error::from) } -pub fn find_audio(conn: &PgConnection, search: String) -> Result { +pub fn find_text>(conn: &PgConnection, search: T) -> Result { + use diesel::dsl::sql; + + let search = search.as_ref(); let format_search = format!("%{}%", search); + memes::table + .filter((memes::title.ilike(&format_search).or(sql(&format!("content ILIKE %{}%", search)))) + .and(memes::content.is_not_null())) + .limit(1) + .first::(conn) + .map_err(Error::from) +} + +pub fn find_audio>(conn: &PgConnection, search: T) -> Result { + let format_search = format!("%{}%", search.as_ref()); + memes::table .filter(memes::title.ilike(format_search).and(memes::audio_id.is_not_null())) .limit(1) @@ -40,8 +57,8 @@ pub fn find_audio(conn: &PgConnection, search: String) -> Result { .map_err(Error::from) } -pub fn find_image(conn: &PgConnection, search: String) -> Result { - let format_search = format!("%{}%", search); +pub fn find_image>(conn: &PgConnection, search: T) -> Result { + let format_search = format!("%{}%", search.as_ref()); memes::table .filter(memes::title.ilike(format_search).and(memes::image_id.is_not_null())) -- cgit v1.3.1