mirror of
https://github.com/taigrr/shorturl
synced 2025-01-18 04:03:16 -08:00
39 lines
687 B
Go
39 lines
687 B
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// URL ...
|
|
type URL struct {
|
|
ID string `storm:"id"`
|
|
URL string `storm:"index"`
|
|
Name string `storm:"index"`
|
|
CreatedAt time.Time `storm:"index"`
|
|
UpdatedAt time.Time `storm:"index"`
|
|
}
|
|
|
|
func GenerateID() string {
|
|
for {
|
|
// TODO: Make length (5) configurable
|
|
id := RandomString(5)
|
|
err := db.One("ID", id, nil)
|
|
if err != nil {
|
|
return id
|
|
}
|
|
}
|
|
}
|
|
|
|
func NewURL(target string) (url *URL, err error) {
|
|
url = &URL{ID: GenerateID(), URL: target, CreatedAt: time.Now()}
|
|
err = db.Save(url)
|
|
return
|
|
}
|
|
|
|
// SetName ...
|
|
func (u *URL) SetName(name string) error {
|
|
u.Name = name
|
|
u.UpdatedAt = time.Now()
|
|
return db.Save(&u)
|
|
}
|