From c9b2ecbdff1ec15c3ef7be10ece52315968f6027 Mon Sep 17 00:00:00 2001 From: Samir Boulahtit Date: Tue, 24 Feb 2026 22:12:49 +0100 Subject: [PATCH] fix: use SQL func.replace instead of Python str.replace on column MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LoyaltyCard.card_number is a SQLAlchemy column, not a string — cannot call .replace() on it. Use func.replace() for the SQL query. Co-Authored-By: Claude Opus 4.6 --- app/modules/loyalty/services/card_service.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/modules/loyalty/services/card_service.py b/app/modules/loyalty/services/card_service.py index 7aba2f20..67f8288c 100644 --- a/app/modules/loyalty/services/card_service.py +++ b/app/modules/loyalty/services/card_service.py @@ -63,13 +63,15 @@ class CardService: def get_card_by_number(self, db: Session, card_number: str) -> LoyaltyCard | None: """Get a loyalty card by card number.""" - # Normalize card number (remove dashes) + from sqlalchemy import func + + # Normalize card number (remove dashes/spaces) normalized = card_number.replace("-", "").replace(" ", "") return ( db.query(LoyaltyCard) .options(joinedload(LoyaltyCard.program)) .filter( - LoyaltyCard.card_number.replace("-", "") == normalized + func.replace(func.replace(LoyaltyCard.card_number, "-", ""), " ", "") == normalized ) .first() )