diff --git a/src/api/main.py b/src/api/main.py index 02a4c0d..baa5438 100644 --- a/src/api/main.py +++ b/src/api/main.py @@ -114,7 +114,7 @@ def list_contacts( f"""SELECT id, account, uid, full_name, given_name, family_name, organization, job_title, birthday, notes, photo_url, emails, phones, addresses, urls, social_profiles, categories, updated_at FROM contacts {where_clause}{search_clause} - ORDER BY full_name + ORDER BY given_name, family_name, full_name LIMIT %s OFFSET %s""", params + [limit, offset], ) @@ -163,7 +163,7 @@ def birthdays_today(current_user: str = Depends(get_current_user)): f"""SELECT id, account, uid, full_name, given_name, family_name, organization, job_title, birthday, notes, photo_url, emails, phones, addresses, urls, social_profiles, categories, updated_at FROM contacts {where_clause} {month_day_clause} - ORDER BY full_name""", + ORDER BY given_name, family_name, full_name""", params + [today.month, today.day], ) rows = cur.fetchall() @@ -266,7 +266,8 @@ def get_group(group_id: int, current_user: str = Depends(get_current_user)): FROM group_members gm JOIN `groups` g ON g.id = gm.group_id LEFT JOIN contacts c ON c.account = g.account AND c.uid = gm.member_uid - WHERE g.id = %s""", + WHERE g.id = %s + ORDER BY c.given_name, c.family_name, c.full_name""", (group_id,), ) members = cur.fetchall() @@ -305,7 +306,8 @@ def get_group_members(group_id: int, current_user: str = Depends(get_current_use FROM group_members gm JOIN `groups` g ON g.id = gm.group_id LEFT JOIN contacts c ON c.account = g.account AND c.uid = gm.member_uid - WHERE gm.group_id = %s""", + WHERE gm.group_id = %s + ORDER BY c.given_name, c.family_name, c.full_name""", (group_id,), ) rows = cur.fetchall() @@ -546,7 +548,7 @@ def web_search( f"""SELECT id, full_name, given_name, middle_name, family_name, prefix, suffix, organization, birthday, account, photo_url FROM contacts {where_clause}{search_clause} - ORDER BY full_name + ORDER BY given_name, family_name, full_name LIMIT 200""", params, ) diff --git a/src/db.py b/src/db.py index 67b8852..1546e6d 100644 --- a/src/db.py +++ b/src/db.py @@ -184,7 +184,7 @@ def search_contacts_without_photo(conn, account: str | None) -> list[dict]: WHERE addr.city IS NOT NULL AND addr.city != '' ) AND family_name != 'X' - ORDER BY full_name""", + ORDER BY given_name, family_name, full_name""", params, ) return cur.fetchall() @@ -206,7 +206,7 @@ def search_contacts_without_city(conn, account: str | None) -> list[dict]: WHERE addr.city IS NOT NULL AND addr.city != '' ) AND family_name != 'X' - ORDER BY full_name""", + ORDER BY given_name, family_name, full_name""", params, ) return cur.fetchall() @@ -225,7 +225,7 @@ def search_contacts_without_social(conn, account: str | None) -> list[dict]: AND (JSON_LENGTH(phones) > 0 OR JSON_LENGTH(emails) > 0) AND (social_profiles IS NULL OR JSON_LENGTH(social_profiles) = 0) AND family_name != 'X' - ORDER BY full_name""", + ORDER BY given_name, family_name, full_name""", params, ) return cur.fetchall() @@ -394,7 +394,7 @@ def get_contacts_by_group_uid(conn, account: str | None, group_uid: str) -> list JOIN group_members gm ON gm.member_uid = c.uid JOIN `groups` g ON g.id = gm.group_id AND g.account = c.account {where_clause} {group_op} g.uid = %s - ORDER BY c.full_name""", + ORDER BY c.given_name, c.family_name, c.full_name""", params + [group_uid], ) return cur.fetchall() diff --git a/src/mailer.py b/src/mailer.py index e4c7752..2c46940 100644 --- a/src/mailer.py +++ b/src/mailer.py @@ -28,7 +28,7 @@ def fetch_birthdays_for_date(conn, target_date: date) -> list[dict]: WHERE birthday IS NOT NULL AND MONTH(birthday) = %s AND DAY(birthday) = %s - ORDER BY full_name""", + ORDER BY given_name, family_name, full_name""", (target_date.month, target_date.day), ) rows = cur.fetchall()