basalam/Metabase-Search

View on GitHub
database.py

Summary

Maintainability
A
45 mins
Test Coverage
from brotli import decompress
from config import config


def add_filter(old_filter: str, filter_to_add: str, operator: str = "AND"):
    if old_filter.startswith("WHERE"):
        return f"{old_filter} {operator} {filter_to_add}"
    else:
        return f"WHERE {filter_to_add}"


def generate_query(
    q: str | None, limit: int, offset: int, archived: str, user_id: int, conditions: str
) -> str:
    search_term: str = ""
    if q is None:
        search_term = "'%'"
    else:
        search_term = "'%" + q + "%'"
    return (
        decompress(config.db.search_query)
        .decode("utf-8")
        .replace("SEARCH_TERM", search_term)
        .replace("QUERY_LIMIT", str(limit))
        .replace("QUERY_OFFSET", str(offset))
        .replace("SEARCH_ARCHIVED", archived)
        .replace("USER_ID", str(user_id))
        .replace("CONDITIONS", conditions)
    )