from . import execute_to_dicts from . import AuthenticatedResource from flask import request from tracker import db from sqlalchemy import text from tracker import search class Search(AuthenticatedResource): def get(self): query = request.args.get("q") if not query or len(query) < 3: return [] return { "artistResults": _artist_search(query), "searchResults": [] + search.query(query, doc_type='sc_track', size=5) + search.query(query, doc_type='spy_track', size=5) + search.query(query, doc_type='yt_video', size=5) } def _artist_search(query): return [ r[0] for r in db.Session.execute( """ select matches from search_table where term like :query limit 50 """, params=dict(query=query.lower() + "%"), ).fetchall() ]