UPDATE: Tidied up search bar and made changes to the specific search routes
This commit is contained in:
@@ -55,34 +55,52 @@ def search_results():
|
|||||||
|
|
||||||
return jsonify({"categories": categories, "users": users, "streams": streams})
|
return jsonify({"categories": categories, "users": users, "streams": streams})
|
||||||
|
|
||||||
@search_bp.route("/search/categories/<string:query>", methods=["GET", "POST"])
|
@search_bp.route("/search/categories", methods=["GET", "POST"])
|
||||||
def search_categories(query: str):
|
def search_categories():
|
||||||
|
"""
|
||||||
|
Display all the results for categories from the specified user query
|
||||||
|
"""
|
||||||
|
# Receive the query data from the user
|
||||||
|
data = request.get_json()
|
||||||
|
query = sanitize(data["query"])
|
||||||
|
|
||||||
# Create the connection to the database
|
# Create the connection to the database
|
||||||
db = Database()
|
db = Database()
|
||||||
db.create_connection()
|
db.create_connection()
|
||||||
|
|
||||||
|
# Fetch the ranked data and send to JSON to be displayed
|
||||||
categories = db.fetchall("""
|
categories = db.fetchall("""
|
||||||
SELECT bm25(category_fts), rank, f.category_id, f.category_name
|
SELECT bm25(category_fts) AS score, c.category_id, c.category_name
|
||||||
FROM categories AS c
|
FROM categories AS c
|
||||||
INNER JOIN category_fts AS f ON c.category_id = f.category_id
|
INNER JOIN category_fts AS f ON c.category_id = f.category_id
|
||||||
WHERE category_fts MATCH ?;
|
WHERE f.category_name LIKE '%' || ? || '%'
|
||||||
|
ORDER BY score ASC;
|
||||||
""", (query,))
|
""", (query,))
|
||||||
|
|
||||||
db.close_connection()
|
db.close_connection()
|
||||||
|
|
||||||
return jsonify({"categories": categories})
|
return jsonify({"categories": categories})
|
||||||
|
|
||||||
@search_bp.route("/search/users/<string:query>", methods=["GET", "POST"])
|
@search_bp.route("/search/users", methods=["GET", "POST"])
|
||||||
def search_users(query: str):
|
def search_users():
|
||||||
|
"""
|
||||||
|
Display all the results for users from the specified user query
|
||||||
|
"""
|
||||||
|
# Receive the query data from the user
|
||||||
|
data = request.get_json()
|
||||||
|
query = sanitize(data["query"])
|
||||||
|
|
||||||
# Create the connection to the database
|
# Create the connection to the database
|
||||||
db = Database()
|
db = Database()
|
||||||
db.create_connection()
|
db.create_connection()
|
||||||
|
|
||||||
|
# Fetch the ranked data and send to JSON to be displayed
|
||||||
users = db.fetchall("""
|
users = db.fetchall("""
|
||||||
SELECT bm25(user_fts), rank, f.user_id, f.username, f.is_live
|
SELECT bm25(user_fts) AS score, u.user_id, u.username, u.is_live
|
||||||
FROM users u
|
FROM users AS u
|
||||||
INNER JOIN user_fts f ON u.user_id = f.user_id
|
INNER JOIN user_fts AS f ON u.user_id = f.user_id
|
||||||
WHERE user_fts MATCH ?;
|
WHERE f.username LIKE '%' || ? || '%'
|
||||||
|
ORDER BY score ASC;
|
||||||
""", (query,))
|
""", (query,))
|
||||||
|
|
||||||
db.close_connection()
|
db.close_connection()
|
||||||
@@ -90,17 +108,26 @@ def search_users(query: str):
|
|||||||
return jsonify({"users": users})
|
return jsonify({"users": users})
|
||||||
|
|
||||||
|
|
||||||
@search_bp.route("/search/streams/<string:query>", methods=["GET", "POST"])
|
@search_bp.route("/search/streams", methods=["GET", "POST"])
|
||||||
def search_streams(query: str):
|
def search_streams():
|
||||||
|
"""
|
||||||
|
Display all the results for streams from the specified user query
|
||||||
|
"""
|
||||||
|
# Receive the query data from the user
|
||||||
|
data = request.get_json()
|
||||||
|
query = sanitize(data["query"])
|
||||||
|
|
||||||
# Create the connection to the database
|
# Create the connection to the database
|
||||||
db = Database()
|
db = Database()
|
||||||
db.create_connection()
|
db.create_connection()
|
||||||
|
|
||||||
|
# Fetch the ranked data and send to JSON to be displayed
|
||||||
streams = db.fetchall("""
|
streams = db.fetchall("""
|
||||||
SELECT bm25(stream_fts), rank, f.user_id, f.title, f.num_viewers, f.category_id
|
SELECT bm25(stream_fts) AS score, s.user_id, s.title, s.num_viewers, s.category_id
|
||||||
FROM streams s
|
FROM streams AS s
|
||||||
INNER JOIN stream_fts f ON s.user_id = f.user_id
|
INNER JOIN stream_fts AS f ON s.user_id = f.user_id
|
||||||
WHERE stream_fts MATCH ?;
|
WHERE f.title LIKE '%' || ? || '%'
|
||||||
|
ORDER BY score ASC;
|
||||||
""", (query,))
|
""", (query,))
|
||||||
|
|
||||||
db.close_connection()
|
db.close_connection()
|
||||||
|
|||||||
Reference in New Issue
Block a user