from flask import Blueprint, request from db import cursor from user.info import format_user import json search = Blueprint('search', __name__) @search.route('/search', methods=['POST']) def index(): data_string = request.data or "{}" data = json.loads(data_string) query = data.get("query") or "" if not query: return "", 400 if len(query) < 3: return "", 403 # use levenshtein with max distance 3 to search for users #TODO: use mysql and sort by best match results = cursor.execute( "select user_id from users where levenshtein(lower(username), lower(?), 3)", [query] ).fetchmany(20) formatted = {"results": []} # get user_id for each result to prevent repeat user/info requests for user in results: formatted["results"].append(format_user(user[0])) return formatted, 200 dynamic_route = ["/social", search]