import re _NON_DIGIT_RE = re.compile(r"\D+") _NON_ALNUM_RE = re.compile(r"[^0-9A-Za-z]+") def normalize_phone(value: str | None) -> str | None: if not value: return None normalized = _NON_DIGIT_RE.sub("", str(value)) return normalized or None def normalize_tracking(value: str | None) -> str | None: if not value: return None normalized = _NON_ALNUM_RE.sub("", str(value)).upper() return normalized or None def fts_phrase(value: str) -> str: escaped = str(value).strip().replace('"', '""') return f'"{escaped}"' def can_use_trigram_fts(value: str | None) -> bool: if not value: return False return len(str(value).strip()) >= 3 def prefix_upper_bound(value: str) -> str | None: if not value: return None last = value[-1] if last == "\uffff": return None return value[:-1] + chr(ord(last) + 1)