mirror of
https://github.com/eliasrenman/url-shortener.git
synced 2026-03-16 20:16:06 +01:00
feat: fixed ttl
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::{associations::HasTable, delete, dsl::insert_into, prelude::*, result::Error, select};
|
||||
use diesel::{delete, dsl::insert_into, prelude::*, result::Error};
|
||||
|
||||
pub fn get_entry(path: &str) -> Result<Urls, Error> {
|
||||
let connection = &mut establish_connection();
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use chrono::NaiveDateTime;
|
||||
use chrono::{DateTime, Utc};
|
||||
use rocket::serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct UpsertUrlDto<'r> {
|
||||
pub destination_url: &'r str,
|
||||
pub ttl: Option<NaiveDateTime>,
|
||||
pub ttl: Option<DateTime<Utc>>,
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
use chrono::{DateTime, Utc};
|
||||
use rocket::{http::Status, response::Redirect};
|
||||
|
||||
use crate::{
|
||||
@@ -11,7 +12,8 @@ pub fn handle_redirect(url: &str) -> Result<Redirect, (Status, &'static str)> {
|
||||
}
|
||||
|
||||
pub fn handle_upsert(owned_by: &str, url: &str, dto: UpsertUrlDto<'_>) -> (Status, &'static str) {
|
||||
let row = upsert_entry(owned_by, url, dto.destination_url, dto.ttl);
|
||||
let naive_local_datetime = dto.ttl.map(|dt| dt.naive_utc());
|
||||
let row = upsert_entry(owned_by, url, dto.destination_url, naive_local_datetime);
|
||||
if row.is_err() {
|
||||
return (Status::BadRequest, "Failed to upsert redirect");
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { mutateUrl, type UrlUpsertDto } from "@/api/url";
|
||||
import { mutateUrl } from "@/api/url";
|
||||
import { ArrowDown } from "@lucide/svelte";
|
||||
|
||||
const mutation = mutateUrl();
|
||||
|
||||
Reference in New Issue
Block a user