diff --git a/app.py b/app.py index d91c857..14522a7 100644 --- a/app.py +++ b/app.py @@ -95,20 +95,28 @@ def websites(): @app.route("/search") def search(): + RESULTS_PER_PAGE = (25, 50, 100, 250, 1000) + q = request.args.get("q") if "q" in request.args else "" sort_order = request.args.get("sort_order") if "sort_order" in request.args else "score" - page = int(request.args.get("p")) if "p" in request.args else 0 + + page = request.args.get("p") if "p" in request.args else "0" + page = int(page) if page.isdigit() else 0 + + per_page = request.args.get("per_page") if "per_page" in request.args else "50" + per_page = int(per_page) if per_page.isdigit() else "50" + per_page = per_page if per_page in RESULTS_PER_PAGE else 50 if q: try: - hits = db.search(q, 100, page, sort_order) + hits = db.search(q, per_page, page, sort_order) except InvalidQueryException as e: flash("Invalid query: " + str(e), "warning") return redirect("/search") else: hits = None - return render_template("search.html", results=hits, q=q, p=page, sort_order=sort_order) + return render_template("search.html", results=hits, q=q, p=page, sort_order=sort_order, per_page=per_page) @app.route("/contribute") diff --git a/database.py b/database.py index 0197016..e1df446 100644 --- a/database.py +++ b/database.py @@ -207,14 +207,13 @@ class Database: return stats - def search(self, q, limit: int = 25, offset: int = 0, sort_order="score"): + def search(self, q, limit: int = 50, offset: int = 0, sort_order="score"): with sqlite3.connect(self.db_path) as conn: cursor = conn.cursor() try: order_by = Database.SORT_ORDERS.get(sort_order, "") - print(order_by) cursor.execute("SELECT size, Website.url, WebsitePath.path, File.name, Website.id FROM File_index " "INNER JOIN File ON File.id = File_index.rowid " "INNER JOIN WebsitePath ON File.path_id = WebsitePath.id " diff --git a/templates/search.html b/templates/search.html index 5f0c0da..550a876 100644 --- a/templates/search.html +++ b/templates/search.html @@ -15,14 +15,25 @@