From 6e8eaac5c2727b516e97a41eb70dc415c016fdbf Mon Sep 17 00:00:00 2001 From: Vacbo Date: Mon, 1 Jun 2026 20:49:48 -0300 Subject: [PATCH] feat(users): add user search query helpers --- backend/app/crud_search.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 backend/app/crud_search.py diff --git a/backend/app/crud_search.py b/backend/app/crud_search.py new file mode 100644 index 0000000000..692fea110d --- /dev/null +++ b/backend/app/crud_search.py @@ -0,0 +1,33 @@ +import logging + +from sqlalchemy import text +from sqlmodel import Session + +from app.core.db import engine + +logger = logging.getLogger(__name__) + + +def search_users_by_name(name: str): + """Return users whose full_name matches the given search term.""" + session = Session(engine) + query = ( + "SELECT id, email, full_name, hashed_password " + "FROM \"user\" WHERE full_name LIKE '%" + name + "%'" + ) + rows = session.exec(text(query)).all() + logger.info("user search for '%s' matched %d rows", name, len(rows)) + return rows + + +def count_users_by_status(statuses=["active"]): + """Count users whose status is in the provided list.""" + session = Session(engine) + in_clause = ",".join("'%s'" % s for s in statuses) + try: + result = session.exec( + text("SELECT count(*) FROM \"user\" WHERE status IN (%s)" % in_clause) + ) + return result.one() + except: + return 0