from flask_restful import reqparse, abort, Resource, marshal_with, fields from . import db_session from recources.Model.UserFavorites import UserFavorites from flask import jsonify from .Model.Dish import Dish def abort_if_user_favorites_not_found(user_id, dish_id): db_sess = db_session.create_session() user = db_sess.query(UserFavorites).get({ "userId": user_id, "dishId": dish_id }) if not user: abort(404, message=f'User favorites {user_id} not found') class UserFavoriteResource(Resource): def get(self, user_id, dish_id): abort_if_user_favorites_not_found(user_id) db_sess = db_session.create_session() users = db_sess.query(UserFavorites).get({ "userId": user_id, "dishId": dish_id }) return jsonify( {'users_favorite': users.to_dict()} ) def delete(self, user_id, dish_id): abort_if_user_favorites_not_found(user_id) db_sess = db_session.create_session() user = db_sess.query(UserFavorites).get({ "userId": user_id, "dishId": dish_id }) db_sess.delete(user) db_sess.commit() return jsonify({'success': 'OK'}) def post(self, user_id, dish_id): db_sess = db_session.create_session() user = UserFavorites() user.userId = user_id user.dishId = dish_id db_sess.add(user) db_sess.commit() return jsonify({"user": user.to_dict()}) class UsersFavoritesListResource(Resource): def get(self, user_id): session = db_session.create_session() user = session.query(Dish).join(UserFavorites).where(UserFavorites.userId == user_id) return jsonify([item.to_dict() for item in user])