feat: basic creation and deletion of urls

This commit is contained in:
Elias Renman
2025-03-24 10:16:37 +01:00
parent e789cf5a2c
commit 1f65d20d75
27 changed files with 446 additions and 26 deletions

View File

@@ -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")
}