diff --git a/.gitignore b/.gitignore index f3fb968..c782be2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ front/node_modules shorturls.db +front/dist +url-short diff --git a/front/index.html b/front/index.html index a00d206..e324006 100644 --- a/front/index.html +++ b/front/index.html @@ -10,7 +10,7 @@ href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&display=swap" rel="stylesheet" /> - front + Acortador de Urls
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..2c4f5e1 100644 --- a/front/src/assets/lib/AcortadorForm.svelte +++ b/front/src/assets/lib/AcortadorForm.svelte @@ -13,10 +13,10 @@ 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 }), }); @@ -30,21 +30,33 @@ } }} > + {#if popup} {/if} @@ -82,4 +94,8 @@ .popup-dialog button:hover { background-color: #0056b3; } + button, + input { + padding: 0.25rem; + } diff --git a/repository/CrearUrl.go b/repository/CrearUrl.go index 3187137..910b76c 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 = int64(rand.Uint64()) + 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 {