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 super::schema::urls::*;
|
||||||
use crate::*;
|
use crate::*;
|
||||||
use chrono::NaiveDateTime;
|
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> {
|
pub fn get_entry(path: &str) -> Result<Urls, Error> {
|
||||||
let connection = &mut establish_connection();
|
let connection = &mut establish_connection();
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use chrono::NaiveDateTime;
|
use chrono::{DateTime, Utc};
|
||||||
use rocket::serde::{Deserialize, Serialize};
|
use rocket::serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub struct UpsertUrlDto<'r> {
|
pub struct UpsertUrlDto<'r> {
|
||||||
pub destination_url: &'r str,
|
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 rocket::{http::Status, response::Redirect};
|
||||||
|
|
||||||
use crate::{
|
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) {
|
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() {
|
if row.is_err() {
|
||||||
return (Status::BadRequest, "Failed to upsert redirect");
|
return (Status::BadRequest, "Failed to upsert redirect");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { mutateUrl, type UrlUpsertDto } from "@/api/url";
|
import { mutateUrl } from "@/api/url";
|
||||||
import { ArrowDown } from "@lucide/svelte";
|
import { ArrowDown } from "@lucide/svelte";
|
||||||
|
|
||||||
const mutation = mutateUrl();
|
const mutation = mutateUrl();
|
||||||
|
|||||||
Reference in New Issue
Block a user