From e4e400c3be9e983ca8c9b0bad73c0d0ab1db80e0 Mon Sep 17 00:00:00 2001 From: fede Date: Wed, 18 Mar 2026 16:24:44 -0300 Subject: [PATCH] feat: reformulado el generador de links para que no sean secuenciales --- front/src/App.svelte | 12 -------- front/src/assets/hooks/getUrl.js | 2 +- front/src/assets/lib/AcortadorForm.svelte | 35 +++++++++++++++-------- repository/CrearUrl.go | 14 ++++++++- 4 files changed, 37 insertions(+), 26 deletions(-) diff --git a/front/src/App.svelte b/front/src/App.svelte index 94cbe5b..1acc522 100644 --- a/front/src/App.svelte +++ b/front/src/App.svelte @@ -1,18 +1,6 @@
diff --git a/front/src/assets/hooks/getUrl.js b/front/src/assets/hooks/getUrl.js index 760a15c..e6c9db1 100644 --- a/front/src/assets/hooks/getUrl.js +++ b/front/src/assets/hooks/getUrl.js @@ -8,6 +8,6 @@ export const url = readable( export const redirect = readable( typeof window !== "undefined" && window.location.hostname === "localhost" - ? "http://localhost:5173/short" + ? "http://localhost:8080/" : "https://fedesrv.ddns.net/s", ); diff --git a/front/src/assets/lib/AcortadorForm.svelte b/front/src/assets/lib/AcortadorForm.svelte index d985e1e..e8b6a15 100644 --- a/front/src/assets/lib/AcortadorForm.svelte +++ b/front/src/assets/lib/AcortadorForm.svelte @@ -13,16 +13,16 @@ onsubmit={async (e) => { e.preventDefault(); // console.log(e.target[0].value); - // console.log(input); + console.log($url); const req = { longUrl: input.value }; try { - const res = await fetch($url + "/url", { + const res = await fetch(`${$url}/url/`, { method: "POST", body: JSON.stringify({ ...req }), }); if (res.ok) { const data = await res.json(); - // console.log(data.shortUrl); + console.log(data.shortUrl); popup = data.shortUrl; } } catch { @@ -36,15 +36,26 @@ {#if popup} {/if} diff --git a/repository/CrearUrl.go b/repository/CrearUrl.go index 3187137..c46a1f6 100644 --- a/repository/CrearUrl.go +++ b/repository/CrearUrl.go @@ -2,6 +2,7 @@ package repository import ( "fmt" + "math/rand/v2" "url-short/models" "gorm.io/gorm" @@ -38,7 +39,18 @@ func CrearUrl(longURL string, db *gorm.DB) (string, error) { // } var url models.Url - result = db.Create(&models.Url{Longurl: longURL}).Scan(&url) + for { + url.Shorturl = rand.Int64() + result = db.Model(&models.Url{}).Where("shorturl = ?", url.Shorturl).Count(&counturl) + if result.Error != nil { + return "", result.Error + } + if counturl == 0 { + break + } + } + + result = db.Create(&models.Url{Longurl: longURL, Shorturl: url.Shorturl}).Scan(&url) shortURL := fmt.Sprintf("%d", url.Shorturl) if result.Error != nil {