mvp
This commit is contained in:
29
links/url.go
29
links/url.go
@@ -2,6 +2,7 @@ package links
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
@@ -21,16 +22,16 @@ type URL struct {
|
||||
CreatedAt time.Time
|
||||
}
|
||||
|
||||
func (u *URL) StoreURL(ctx context.Context, db *pgxpool.Pool) error {
|
||||
func (u *URL) Store(ctx context.Context, db *pgxpool.Pool) error {
|
||||
stmt := psql.Insert("urls").
|
||||
Columns("id", "url", "nurl", "short", "created_at").
|
||||
Values(u.ID, u.URL, u.NURL, u.Short, u.Short, u.CreatedAt)
|
||||
Values(u.ID, u.URL, u.NURL, u.Short, u.CreatedAt)
|
||||
query, args, err := stmt.ToSql()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err := db.Exec(ctx, query, args...)
|
||||
_, err = db.Exec(ctx, query, args...)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -56,7 +57,7 @@ func NormalizeString(s string) (string, error) {
|
||||
}
|
||||
|
||||
func New(u *url.URL) *URL {
|
||||
link := URL{
|
||||
link := &URL{
|
||||
ID: uuid.NewString(),
|
||||
URL: u.String(),
|
||||
NURL: Normalize(u).String(),
|
||||
@@ -93,9 +94,9 @@ func Lookup(ctx context.Context, db *pgxpool.Pool, s string) (string, error) {
|
||||
row := db.QueryRow(ctx, query, args...)
|
||||
|
||||
var short string
|
||||
err := row.Scan(&short)
|
||||
err = row.Scan(&short)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return "", err
|
||||
}
|
||||
|
||||
return short, nil
|
||||
@@ -125,5 +126,21 @@ func StoreURL(ctx context.Context, db *pgxpool.Pool, s string) (string, error) {
|
||||
}
|
||||
|
||||
func RetrieveURL(ctx context.Context, db *pgxpool.Pool, short string) (string, error) {
|
||||
log.Printf("look up url for short code %s", short)
|
||||
stmt := psql.Select("url").From("urls").
|
||||
Where(squirrel.Eq{"short": short})
|
||||
query, args, err := stmt.ToSql()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
row := db.QueryRow(ctx, query, args...)
|
||||
var url string
|
||||
|
||||
err = row.Scan(&url)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return url, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user