mirror of
https://github.com/eliasrenman/url-shortener.git
synced 2026-03-16 20:16:06 +01:00
feat: basic creation and deletion of urls
This commit is contained in:
@@ -3,7 +3,7 @@ use super::schema::urls::dsl::*;
|
||||
use super::schema::urls::*;
|
||||
use crate::*;
|
||||
use chrono::NaiveDateTime;
|
||||
use diesel::{delete, dsl::insert_into, prelude::*, result::Error};
|
||||
use diesel::{associations::HasTable, delete, dsl::insert_into, prelude::*, result::Error, select};
|
||||
|
||||
pub fn get_entry(path: &str) -> Result<Urls, Error> {
|
||||
let connection = &mut establish_connection();
|
||||
@@ -11,7 +11,7 @@ pub fn get_entry(path: &str) -> Result<Urls, Error> {
|
||||
}
|
||||
|
||||
pub fn upsert_entry(
|
||||
username: &str,
|
||||
owned_by_id: &str,
|
||||
path: &str,
|
||||
dest: &str,
|
||||
time_to_live: Option<NaiveDateTime>,
|
||||
@@ -22,19 +22,27 @@ pub fn upsert_entry(
|
||||
url.eq(path),
|
||||
destination_url.eq(dest),
|
||||
ttl.eq(time_to_live),
|
||||
owned_by.eq(username),
|
||||
owned_by.eq(owned_by_id),
|
||||
))
|
||||
.on_conflict(url)
|
||||
.do_update()
|
||||
.set((
|
||||
destination_url.eq(dest),
|
||||
ttl.eq(time_to_live),
|
||||
owned_by.eq(username),
|
||||
owned_by.eq(owned_by_id),
|
||||
))
|
||||
.execute(connection)
|
||||
}
|
||||
|
||||
pub fn delete_entry(id: &str, path: &str) -> Result<usize, Error> {
|
||||
pub fn delete_entry(owned_by_id: &str, path: &str) -> Result<usize, Error> {
|
||||
let connection = &mut establish_connection();
|
||||
delete(urls.filter(url.eq(path)).filter(owned_by.eq(id))).execute(connection)
|
||||
delete(urls.filter(url.eq(path)).filter(owned_by.eq(owned_by_id))).execute(connection)
|
||||
}
|
||||
|
||||
pub fn list(owned_by_id: &str) -> Vec<Urls> {
|
||||
let connection = &mut establish_connection();
|
||||
urls.filter(owned_by.eq(owned_by_id))
|
||||
.select(Urls::as_select())
|
||||
.load(connection)
|
||||
.expect("Error loading urls")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user