diff --git a/commands/commands.go b/commands/commands.go index f06e841..80750ba 100644 --- a/commands/commands.go +++ b/commands/commands.go @@ -126,8 +126,17 @@ func Get(db *sql.DB, url string) { fmt.Println(text) } -func Link(db *sql.DB, linkID int64) { - url, err := storage.GetLink(db, linkID) +func Link(db *sql.DB, linkID int64, fromHistory bool) { + + var url string + var err error + + if fromHistory { + url, err = storage.GetHistoryUrl(db, linkID) + } else { + url, err = storage.GetLink(db, linkID) + } + if err != nil { panic(err) } diff --git a/main.go b/main.go index c842d5a..c463fec 100644 --- a/main.go +++ b/main.go @@ -19,8 +19,9 @@ var ( get = kingpin.Command("get", "Get url") getUrl = get.Arg("url", "Url").Required().String() - link = kingpin.Command("link", "Get link") - linkNo = link.Arg("no", "Number").Required().Int64() + link = kingpin.Command("link", "Get link") + linkNo = link.Arg("no", "Number").Required().Int64() + linkFromHistory = link.Flag("history", "Item from history").Bool() historyList = kingpin.Command("history", "List history") historyListItems = historyList.Arg("items", "Amount of items").Int64() @@ -38,7 +39,7 @@ func main() { case "get": commands.Get(db, *getUrl) case "link": - commands.Link(db, *linkNo) + commands.Link(db, *linkNo, *linkFromHistory) case "history": commands.History(db, *historyListItems, 20, *historyListAll) } diff --git a/storage/storage.go b/storage/storage.go index 8b03599..2d7d5e8 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -109,3 +109,15 @@ func GetHistory(db *sql.DB) (history []HistoryItem, err error) { return } + +func GetHistoryUrl(db *sql.DB, historyID int64) (url string, err error) { + stmt, err := db.Prepare("SELECT `url` FROM `history` WHERE id=$1;") + if err != nil { + return + } + defer stmt.Close() + + err = stmt.QueryRow(historyID).Scan(&url) + + return +}