26 lines
797 B
Python
26 lines
797 B
Python
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
|