from flask import Flask, url_for, render_template, jsonify, make_response, abort, redirect, request
from flask_login import LoginManager, login_user, login_required, logout_user, current_user
from flask_restful import Api

from recources import db_session, UserFavoritesResource
from recources.CategoryResource import CategoryListResource, CategoryResource
from recources.DishResource import DishListResource, DishResource, DishUserListResource
from recources.UserFavoritesResource import UsersFavoritesListResource, UserFavoriteResource
from recources.UserResource import UsersListResource, UserResource

app = Flask(__name__)
app.config['SECRET_KEY'] = 'my_project_key'
db_session.global_init('dishWarriors.db')
api = Api(app)
api.prefix = "/api"

api.add_resource(UsersListResource, '/users')
api.add_resource(UserResource, "/user/<int:user_id>")
api.add_resource(CategoryListResource, '/categories')
api.add_resource(CategoryResource, "/category/<int:category_id>")
api.add_resource(DishListResource, '/dishes')
api.add_resource(DishResource, "/dish/<int:dish_id>")
api.add_resource(DishUserListResource, "/user_dish/<int:user_id>")
api.add_resource(UserFavoriteResource, "/favorite/<int:user_id>/<int:dish_id>")
api.add_resource(UsersFavoritesListResource, "/favorites/<int:user_id>")


@app.errorhandler(404)
def not_found(error):
    return make_response(jsonify({'error': 'Not found'})), 404


if __name__ == '__main__':
    app.run(port=8083, host='127.0.0.1')