61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
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])
|
|
|