49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package repository
|
|
|
|
import (
|
|
"fmt"
|
|
"url-short/models"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func CrearUrl(longURL string, db *gorm.DB) (string, error) {
|
|
// checkeamos por longurl repetida
|
|
counturl := int64(0)
|
|
result := db.Model(&models.Url{}).Where("longurl = ?", longURL).Count(&counturl)
|
|
if result.Error != nil {
|
|
return "", result.Error
|
|
}
|
|
if counturl != 0 {
|
|
// println(1)
|
|
var short models.Url
|
|
result = db.Model(&short).Where("longurl = ?", longURL).Select("shorturl").First(&short)
|
|
if result.Error != nil {
|
|
return "", result.Error
|
|
}
|
|
return fmt.Sprintf("%d", short.Shorturl), nil
|
|
}
|
|
|
|
// shortURL := base64.StdEncoding.EncodeToString([]byte(longURL))[:10]
|
|
// sha := sha3.New224()
|
|
// sha.Write([]byte(longURL))
|
|
// shortURL := fmt.Sprintf("%x", sha.Sum(nil))[:10]
|
|
|
|
// result = db.Model(&models.Url{}).Where("shorturl = ?", shortURL).Count(&counturl)
|
|
// if result.Error != nil {
|
|
// return "", result.Error
|
|
// }
|
|
// if counturl != 0 {
|
|
// return shortURL, nil
|
|
// }
|
|
|
|
var url models.Url
|
|
result = db.Create(&models.Url{Longurl: longURL}).Scan(&url)
|
|
shortURL := fmt.Sprintf("%d", url.Shorturl)
|
|
|
|
if result.Error != nil {
|
|
return "", result.Error
|
|
}
|
|
return shortURL, nil
|
|
}
|