feat: conditional delete

This commit is contained in:
Elias Renman
2025-03-20 10:48:28 +01:00
parent bb276a7350
commit e789cf5a2c
3 changed files with 8 additions and 8 deletions

View File

@@ -34,7 +34,7 @@ pub fn upsert_entry(
.execute(connection)
}
pub fn delete_entry(path: &str) -> Result<usize, Error> {
pub fn delete_entry(id: &str, path: &str) -> Result<usize, Error> {
let connection = &mut establish_connection();
delete(urls.filter(url.eq(path))).execute(connection)
delete(urls.filter(url.eq(path)).filter(owned_by.eq(id))).execute(connection)
}

View File

@@ -10,16 +10,16 @@ pub fn handle_redirect(url: &str) -> Result<Redirect, (Status, &'static str)> {
Ok(Redirect::to(row.destination_url))
}
pub fn handle_upsert(username: &str, dto: UpsertUrlDto<'_>) -> (Status, &'static str) {
let row = upsert_entry(username, dto.url, dto.destination_url, dto.ttl);
pub fn handle_upsert(id: &str, dto: UpsertUrlDto<'_>) -> (Status, &'static str) {
let row = upsert_entry(id, dto.url, dto.destination_url, dto.ttl);
if row.is_err() {
return (Status::BadRequest, "Failed to upsert redirect");
}
(Status::Ok, "Successfully upserted redirect")
}
pub fn handle_delete(url: &str) -> (Status, &'static str) {
let row = delete_entry(url);
pub fn handle_delete(id: &str, url: &str) -> (Status, &'static str) {
let row = delete_entry(id, url);
if row.is_err() {
return (Status::BadRequest, "Failed to delete redirect");
}

View File

@@ -72,6 +72,6 @@ fn upsert(user: User, upsert: Json<dto::UpsertUrlDto<'_>>) -> (Status, &'static
}
#[delete("/<url>")]
fn delete(url: &str) -> (Status, &'static str) {
handle_delete(url)
fn delete(user: User, url: &str) -> (Status, &'static str) {
handle_delete(&user.id.as_str(), url)
}