diff --git a/Database.cpp b/Database.cpp index 63f6e03..97dc189 100644 --- a/Database.cpp +++ b/Database.cpp @@ -58,12 +58,14 @@ VisitorStats Database::visitorStats(const std::string &url) { std::list Database::mostViewedUrls(int n) { std::list ret; sqlite3_stmt *statement = nullptr; - const char *query = "SELECT url, SUM(page_view_count) AS total_page_views " - "FROM visit_analysis " - "GROUP BY url " - "ORDER BY total_page_views DESC " - "LIMIT ?;"; - + const char *query = R"( + SELECT url, SUM(page_view_count) AS total_page_views + FROM visit_analysis + GROUP BY url + ORDER BY total_page_views DESC + LIMIT ?; + )"; + if (sqlite3_prepare_v2(m_sqlite, query, -1, &statement, nullptr) == SQLITE_OK) { sqlite3_bind_int(statement, 1, n); @@ -80,10 +82,13 @@ std::list Database::mostViewedUrls(int n) { std::list Database::latestViewedUrls(int n) { std::list ret; sqlite3_stmt *statement = nullptr; - const char *query = "SELECT url, last_view_time " - "FROM visit_analysis " - "ORDER BY last_view_time DESC " - "LIMIT ?;"; + const char *query = R"( + SELECT url, MAX(last_view_time) AS latest_view_time + FROM visit_analysis + GROUP BY url + ORDER BY latest_view_time DESC + LIMIT ?; + )"; if (sqlite3_prepare_v2(m_sqlite, query, -1, &statement, nullptr) == SQLITE_OK) { sqlite3_bind_int(statement, 1, n);