Implements history
This commit is contained in:
parent
94c6cd800f
commit
6c56bb9e2f
34
main.go
34
main.go
@ -35,6 +35,7 @@ var (
|
||||
|
||||
historyList = kingpin.Command("history", "List history")
|
||||
historyListItems = historyList.Arg("items", "Amount of items").Int64()
|
||||
historyListAll = historyList.Flag("all", "Show all items").Bool()
|
||||
)
|
||||
|
||||
func parseLink(db *sql.DB, oldPage, value string, req *http.Request) (htmlPage string, err error) {
|
||||
@ -90,6 +91,8 @@ func parseLinks(db *sql.DB, body []byte, req *http.Request) (htmlPage string, er
|
||||
}
|
||||
|
||||
func cmd_url(db *sql.DB, url string) {
|
||||
storage.AddHistoryURL(db, url)
|
||||
|
||||
client := &http.Client{}
|
||||
|
||||
// TODO Full url encoding
|
||||
@ -142,6 +145,35 @@ func cmd_link(db *sql.DB, linkID int64) {
|
||||
cmd_url(db, url)
|
||||
}
|
||||
|
||||
func cmd_history(db *sql.DB, argAmount, defaultAmount int64, all bool) {
|
||||
history, err := storage.GetHistory(db)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
var amount int64
|
||||
|
||||
if all {
|
||||
amount = int64(len(history))
|
||||
} else if argAmount == 0 {
|
||||
if int64(len(history)) < defaultAmount {
|
||||
amount = int64(len(history))
|
||||
} else {
|
||||
amount = defaultAmount
|
||||
}
|
||||
} else {
|
||||
if amount > int64(len(history)) {
|
||||
amount = int64(len(history))
|
||||
} else {
|
||||
amount = argAmount
|
||||
}
|
||||
}
|
||||
|
||||
for _, h := range history[int64(len(history))-amount:] {
|
||||
fmt.Println(h.ID, h.URL)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
db, err := storage.OpenDB("/tmp/wi.db")
|
||||
if err != nil {
|
||||
@ -155,6 +187,6 @@ func main() {
|
||||
case "link":
|
||||
cmd_link(db, *linkNo)
|
||||
case "history":
|
||||
fmt.Println("not implemented")
|
||||
cmd_history(db, *historyListItems, 20, *historyListAll)
|
||||
}
|
||||
}
|
||||
|
@ -21,6 +21,12 @@ func OpenDB(path string) (db *sql.DB, err error) {
|
||||
|
||||
_, err = db.Exec("CREATE TABLE IF NOT EXISTS `links` " +
|
||||
"( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `url` TEXT );")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = db.Exec("CREATE TABLE IF NOT EXISTS `history` " +
|
||||
"( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `url` TEXT );")
|
||||
|
||||
return
|
||||
}
|
||||
@ -65,3 +71,41 @@ func GetLinkID(db *sql.DB, url string) (linkID int64, err error) {
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func AddHistoryURL(db *sql.DB, url string) (err error) {
|
||||
stmt, err := db.Prepare("INSERT INTO `history` (`url`) VALUES ($1);")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer stmt.Close()
|
||||
|
||||
_, err = stmt.Exec(url)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
type HistoryItem struct {
|
||||
ID int64
|
||||
URL string
|
||||
}
|
||||
|
||||
func GetHistory(db *sql.DB) (history []HistoryItem, err error) {
|
||||
rows, err := db.Query("SELECT `id`, `url` FROM `history`;")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
for rows.Next() {
|
||||
var h HistoryItem
|
||||
|
||||
err = rows.Scan(&h.ID, &h.URL)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
history = append(history, h)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user