pastes: add a route to update pastes

Signed-off-by: ATechnoHazard <amolele@gmail.com>
This commit is contained in:
sphericalkat committed 2020-09-26 19:17:48 +05:30
1 parent e001d87f3e
commit b661b7ea8d
4 files changed
+72 -8

No files matched your search

+7
View File
@@ -9,10 +9,17 @@ use super::entity::Paste;
pub fn create_paste(paste: &Paste, conn: &PgConnection) -> Result<usize> {
let rows = diesel::insert_into(pastes::table)
.values(paste)
.on_conflict_do_nothing()
.execute(conn)?;
Ok(rows)
}
pub fn update_paste(paste: &Paste, conn: &PgConnection) -> Result<Paste> {
use crate::schema::pastes::dsl::*;
let updated_user = diesel::update(pastes.filter(id.eq(paste.id.as_ref().unwrap()))).set(paste).get_result(conn)?;
Ok(updated_user)
}
pub fn fetch_paste(id: String, conn: &PgConnection) -> Result<Paste> {
let paste = pastes::table.find(id).get_result::<Paste>(conn)?;
Ok(paste)
+6
View File
@@ -14,3 +14,9 @@ pub fn create_paste(paste: &mut Paste, conn: &PgConnection) -> Result<usize> {
pub fn fetch_paste(id: String, conn: &PgConnection) -> Result<Paste> {
postgres::fetch_paste(id, conn)
}
pub fn update_paste(paste: &mut Paste, conn: &PgConnection) -> Result<Paste> {
let re = RegexBuilder::new("^(https?://)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(:\\d+)?(/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(#[-a-z\\d_]*)?$").case_insensitive(true).build().unwrap();
paste.is_url = Some(re.is_match(&*paste.content.clone()));
postgres::update_paste(paste, conn)
}