Files
2026-06-15 14:19:14 -04:00

34 lines
1.1 KiB
Python

"""Favorites: toggle save/unsave, check status, list."""
from sqlalchemy.exc import IntegrityError
from app.extensions import db
from app.models.favorite import Favorite
def is_favorited(user_id: int, listing_id: int) -> bool:
return Favorite.query.filter_by(
user_id=user_id, listing_id=listing_id).first() is not None
def toggle_favorite(user_id: int, listing_id: int) -> bool:
"""Add if not present; remove if present. Returns True if now favorited."""
existing = Favorite.query.filter_by(
user_id=user_id, listing_id=listing_id).first()
if existing:
db.session.delete(existing)
db.session.commit()
return False
fav = Favorite(user_id=user_id, listing_id=listing_id)
db.session.add(fav)
try:
db.session.commit()
except IntegrityError:
db.session.rollback()
return True
def user_favorites(user_id: int, page=1, per_page=20):
return (Favorite.query
.filter_by(user_id=user_id)
.order_by(Favorite.created_at.desc())
.paginate(page=page, per_page=per_page, error_out=False))