from __future__ import annotations from ..models import Expense def suggest_category_id(user_id: int, vendor: str = '', title: str = '') -> int | None: vendor = (vendor or '').strip().lower() title = (title or '').strip().lower() if not vendor and not title: return None recent = ( Expense.query.filter_by(user_id=user_id, is_deleted=False) .filter(Expense.category_id.isnot(None)) .order_by(Expense.id.desc()) .limit(100) .all() ) for expense in recent: ev = (expense.vendor or '').strip().lower() et = (expense.title or '').strip().lower() if vendor and ev == vendor: return expense.category_id if title and et == title: return expense.category_id return None