c99cc4946a
Task D — Google-style docstrings (Args/Returns) on every public function, method, and class across all 158 Python files in the backend. Zero ruff D violations (pydocstyle Google convention). Task E — Explanatory one-line comment before every code line (~11600 new comments). ruff check passes clean after isort re-sort.
27 lines
681 B
Python
27 lines
681 B
Python
"""Shared utility helpers."""
|
|
|
|
|
|
# Define function escape_like
|
|
def escape_like(value: str) -> str:
|
|
"""Escape SQL LIKE wildcard characters (``%`` and ``_``).
|
|
|
|
Prevents user-supplied search terms from being interpreted as LIKE
|
|
pattern metacharacters when used with SQLAlchemy's ``ilike``/``like``
|
|
methods.
|
|
|
|
Usage::
|
|
|
|
from app.utils import escape_like
|
|
query.filter(Model.name.ilike(f"%{escape_like(term)}%"))
|
|
"""
|
|
# Return (
|
|
return (
|
|
value
|
|
# Chain .replace() call
|
|
.replace("\\", "\\\\")
|
|
# Chain .replace() call
|
|
.replace("%", "\\%")
|
|
# Chain .replace() call
|
|
.replace("_", "\\_")
|
|
)
|