changes
This commit is contained in:
@@ -4,7 +4,15 @@ from sqlalchemy import or_, and_, func, asc, desc
|
||||
from app.models.rolodex import Rolodex
|
||||
|
||||
|
||||
def apply_customer_filters(base_query, search: Optional[str], group: Optional[str], state: Optional[str], groups: Optional[List[str]], states: Optional[List[str]]):
|
||||
def apply_customer_filters(
|
||||
base_query,
|
||||
search: Optional[str],
|
||||
group: Optional[str],
|
||||
state: Optional[str],
|
||||
groups: Optional[List[str]],
|
||||
states: Optional[List[str]],
|
||||
name_prefix: Optional[str] = None,
|
||||
):
|
||||
"""Apply shared search and group/state filters to the provided base_query.
|
||||
|
||||
This helper is used by both list and export endpoints to keep logic in sync.
|
||||
@@ -53,6 +61,16 @@ def apply_customer_filters(base_query, search: Optional[str], group: Optional[st
|
||||
if effective_states:
|
||||
base_query = base_query.filter(Rolodex.abrev.in_(effective_states))
|
||||
|
||||
# Optional: prefix filter on name (matches first OR last starting with the prefix, case-insensitive)
|
||||
p = (name_prefix or "").strip().lower()
|
||||
if p:
|
||||
base_query = base_query.filter(
|
||||
or_(
|
||||
func.lower(Rolodex.last).like(f"{p}%"),
|
||||
func.lower(Rolodex.first).like(f"{p}%"),
|
||||
)
|
||||
)
|
||||
|
||||
return base_query
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user