From 6e24bcfdab2e86272d05556e38fedbd43cf17ce1 Mon Sep 17 00:00:00 2001 From: Eragon Date: Tue, 3 Oct 2023 09:23:13 +0200 Subject: [PATCH] search: Use match-case instead of if-else --- app/routes/search.py | 90 ++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/app/routes/search.py b/app/routes/search.py index aeba99e..7d889d0 100644 --- a/app/routes/search.py +++ b/app/routes/search.py @@ -26,13 +26,11 @@ def paginate(data, page, per_page): def websearch_to_tsquery_multilang(search): - return func.websearch_to_tsquery('french', search).op( - '||')(func.websearch_to_tsquery('english', search)) + return func.websearch_to_tsquery('french', search).op('||')(func.websearch_to_tsquery('english', search)) def to_tsvector_multilang(text): - return func.to_tsvector('french', text).op( - '||')(func.to_tsvector('english', text)) + return func.to_tsvector('french', text).op('||')(func.to_tsvector('english', text)) @app.route('/rechercher/') @@ -42,6 +40,7 @@ def search(page=1): results = list() if form.validate(): tsquery = websearch_to_tsquery_multilang(form.q.data) + # Topics are sorted first in results topic_query = db.session.query(Topic).where( to_tsvector_multilang(Topic.title).bool_op('@@')(tsquery) @@ -63,6 +62,7 @@ def search(page=1): Comment.id, Post.id ) + if (form.date.data): topic_query = topic_query.where( Topic.date_created.cast(Date) == form.date.data @@ -73,46 +73,48 @@ def search(page=1): comment_query = comment_query.where( Comment.date_created.cast(Date) == form.date.data ) - if (form.sortBy.data == "Date croissante"): - topic_query = topic_query.order_by( - Topic.date_created.asc() - ) - program_query = program_query.order_by( - Program.date_created.asc() - ) - comment_query = comment_query.order_by( - Post.date_created.asc() - ) - elif (form.sortBy.data == "Date décroissante"): - topic_query = topic_query.order_by( - Topic.date_created.desc() - ) - program_query = program_query.order_by( - Program.date_created.desc() - ) - comment_query = comment_query.order_by( - Post.date_created.desc() - ) - elif (form.sortBy.data == "Alphabétique croissant"): - topic_query = topic_query.order_by( - Topic.title.asc() - ) - program_query = program_query.order_by( - Program.name.asc() - ) - comment_query = comment_query.order_by( - Comment.text.asc() - ) - elif (form.sortBy.data == "Alphabétique décroissant"): - topic_query = topic_query.order_by( - Topic.title.desc() - ) - program_query = program_query.order_by( - Program.name.desc() - ) - comment_query = comment_query.order_by( - Comment.text.desc() - ) + + match form.sortBy.data: + case "Date croissante": + topic_query = topic_query.order_by( + Topic.date_created.asc() + ) + program_query = program_query.order_by( + Program.date_created.asc() + ) + comment_query = comment_query.order_by( + Post.date_created.asc() + ) + case "Date décroissante": + topic_query = topic_query.order_by( + Topic.date_created.desc() + ) + program_query = program_query.order_by( + Program.date_created.desc() + ) + comment_query = comment_query.order_by( + Post.date_created.desc() + ) + case "Alphabétique croissant": + topic_query = topic_query.order_by( + Topic.title.asc() + ) + program_query = program_query.order_by( + Program.name.asc() + ) + comment_query = comment_query.order_by( + Comment.text.asc() + ) + case "Alphabétique décroissant": + topic_query = topic_query.order_by( + Topic.title.desc() + ) + program_query = program_query.order_by( + Program.name.desc() + ) + comment_query = comment_query.order_by( + Comment.text.desc() + ) results = list(topic_query) + list(program_query) + list(comment_query)