From 4c4705af43c5e82a135b59e1251055f26ee77e3f Mon Sep 17 00:00:00 2001 From: cblgh Date: Fri, 12 Mar 2021 18:00:24 +0100 Subject: [PATCH] improve results from /random --- cli.go | 7 +++++++ database/database.go | 21 +++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/cli.go b/cli.go index ce718cc..00287a7 100644 --- a/cli.go +++ b/cli.go @@ -90,6 +90,13 @@ func main() { util.DatabaseDoesNotExist(config.Data.Database) } interactiveMode(config.Data.Database) + case "random": + exists := util.CheckFileExists(config.Data.Database) + if !exists { + util.DatabaseDoesNotExist(config.Data.Database) + } + db := database.InitDB(config.Data.Database) + fmt.Println(database.GetRandomPage(db)) case "host": exists := util.CheckFileExists(config.Data.Database) if !exists { diff --git a/database/database.go b/database/database.go index a76c50b..dd525dc 100644 --- a/database/database.go +++ b/database/database.go @@ -110,11 +110,28 @@ func GetWordCount(db *sql.DB) int { return countQuery(db, "inv_index") } -func GetRandomPage(db *sql.DB) string { - rows, err := db.Query("SELECT url FROM pages ORDER BY RANDOM() LIMIT 1;") +func GetRandomDomain(db *sql.DB) string { + rows, err := db.Query("SELECT domain FROM domains ORDER BY RANDOM() LIMIT 1;") util.Check(err) defer rows.Close() + var domain string + for rows.Next() { + err = rows.Scan(&domain) + util.Check(err) + } + return domain +} + +func GetRandomPage(db *sql.DB) string { + domain := GetRandomDomain(db) + stmt, err := db.Prepare("SELECT url FROM pages WHERE domain = ? ORDER BY RANDOM() LIMIT 1;") + defer stmt.Close() + util.Check(err) + + rows, err := stmt.Query(domain) + defer rows.Close() + var link string for rows.Next() { err = rows.Scan(&link)