aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gn_auth/auth/authorisation/users/models.py25
1 files changed, 16 insertions, 9 deletions
diff --git a/gn_auth/auth/authorisation/users/models.py b/gn_auth/auth/authorisation/users/models.py
index cc9a4f9..58ebd7a 100644
--- a/gn_auth/auth/authorisation/users/models.py
+++ b/gn_auth/auth/authorisation/users/models.py
@@ -40,25 +40,32 @@ def __process_age_clause__(age_desc: str) -> tuple[str, int]:
raise Exception("Invalid age descriptor.")
-def __list_user_clauses_and_params__(**kwargs) -> tuple[list[str], dict[str, Union[int, str]]]:
+def __list_user_clauses_and_params__(**kwargs) -> tuple[str, dict[str, Union[int, str]]]:
"""Process the WHERE clauses, and params for the 'LIST USERS' query."""
- clauses = []
+ clauses = ""
params = {}
- if bool(kwargs.get("email", "").strip()):
- clauses = clauses + ["email LIKE :email"]
+ if bool(kwargs.get("email", "").strip()) and bool(kwargs.get("name", "").strip()):
+ clauses = "(email LIKE :email OR name LIKE :name)"
+ params = {
+ "email": f'%{kwargs["email"].strip()}%',
+ "name": f'%{kwargs["name"].strip()}%'
+ }
+ elif bool(kwargs.get("email", "").strip()):
+ clauses = "email LIKE :email"
params["email"] = f'%{kwargs["email"].strip()}%'
-
- if bool(kwargs.get("name", "").strip()):
+ elif bool(kwargs.get("name", "").strip()):
clauses = clauses + ["name LIKE :name"]
params["name"] = f'%{kwargs["name"].strip()}%'
+ else:
+ clauses = ""
if bool(kwargs.get("verified", "").strip()):
- clauses = clauses + ["verified=:verified"]
+ clauses = clauses + " AND verified=:verified"
params["verified"] = 1 if kwargs["verified"].strip() == "yes" else 0
if bool(kwargs.get("age", "").strip()):
_clause, _param = __process_age_clause__(kwargs["age"].strip())
- clauses = clauses + [_clause]
+ clauses = clauses + f" AND {_clause}"
params["created"] = _param
return clauses, params
@@ -73,7 +80,7 @@ def list_users(conn: db.DbConnection, **kwargs) -> tuple[User, ...]:
_query = "SELECT * FROM users"
_clauses, _params = __list_user_clauses_and_params__(**kwargs)
if len(_clauses) > 0:
- _query = _query + " WHERE " + " AND ".join(_clauses)
+ _query = _query + " WHERE " + _clauses
with db.cursor(conn) as cursor:
cursor.execute(_query, _params)