def update_book():
    decoded_token = au.validate_jwt_token(request.cookies.get('token'))
    if decoded_token['role'] == 'admin':
        data = request.json['form_input']

        book_id = data['book_id']
        title = data['title']
        author = data['author']
        isbn = data['isbn']
        pub_year = data['publication_year']
        description = data['description']

        query = "UPDATE books SET books_title=%s, books_author_id=%s, books_isbn=%s, books_pub_year=%s, books_description=%s WHERE books_id=%s;"
        values = (title, author, isbn, pub_year, description, book_id)

        conn = DatabaseConnection()
        conn.db_connect()
        result = conn.db_write(query = query, vals = values)

        if result['response'] == 200:
            query = "SELECT * FROM books b LEFT JOIN authors a ON b.books_author_id = a.authors_id WHERE b.books_id = %s"
            values = (book_id,)
            book = conn.db_read(query=query, vals=values, format_type="book")
            conn.db_close()

            return make_response({"books": book}, 200)
        else:
            conn.db_close()

            return Response(status=result['response'])
    else:
        return Response(status=401)
def create_book_record():
    decoded_token = au.validate_jwt_token(request.cookies.get('token'))
    print(request.json)
    if decoded_token['role'] == 'admin':
        data = request.json['form_input']

        title = data['title']
        author = data['author']
        isbn = data['isbn']
        pub_year = data['publication_year']
        date = datetime.datetime.now()

        query = "INSERT INTO books(books_title, books_author_id, books_isbn, books_pub_year, books_date_added) VALUES (%s, %s, %s, %s, %s);"
        values = (title, author, isbn, pub_year, date)

        conn = DatabaseConnection()
        conn.db_connect()
        result = conn.db_write(query = query, vals = values)

        if result['response'] == 200:
            query = "SELECT * FROM books b LEFT JOIN authors a ON b.books_author_id = a.authors_id WHERE b.books_title = %s AND b.books_author_id = %s AND b.books_date_added = %s"
            values = (title, author, date)
            book = conn.db_read(query=query, vals=values, format_type="book")
            conn.db_close()

            return make_response({"books": book}, 200)
        else:
            conn.db_close()

            return Response(status=result['response'])
    else:
        return Response(status=401)
def validate_user_role():
    if 'token' in request.cookies:
        token = request.cookies.get('token')
        decoded = au.validate_jwt_token(token)

        return jsonify({
            "user": {
                "id": decoded['id'],
                "email": decoded['email'],
                "user_role": decoded['role']
            }
        })
    else:
        return jsonify({"user": {"id": 0, "email": '', "user_role": 'guest'}})
def delete_author():
    decoded_token = au.validate_jwt_token(request.cookies.get('token'))
    if decoded_token['role'] == 'admin':

        query = "DELETE FROM authors WHERE authors_id=%s"
        values = (request.json["author_id"], )

        conn = DatabaseConnection()
        conn.db_connect()
        resp = conn.db_write(query=query, vals=values)
        conn.db_close()

        return resp
    else:
        return Response(status=401)
def delete_book(id):
    decoded_token = au.validate_jwt_token(request.cookies.get('token'))
    if decoded_token['role'] == 'admin':
        
        query = "DELETE FROM books WHERE books_id=%s"
        values = (id,)

        conn = DatabaseConnection()
        conn.db_connect()
        result = conn.db_write(query = query, vals = values)
        conn.db_close()

        return Response(status=result['response'])
    else:
        return Response(status=401)
def create_author():
    decoded_token = au.validate_jwt_token(request.cookies.get('token'))

    if decoded_token['role'] == 'admin':
        last_name = request.json['last_name']
        first_name = request.json['first_name']

        query = "INSERT INTO authors(authors_last_name, authors_first_name) VALUES(%s, %s);"
        values = (last_name, first_name)

        conn = DatabaseConnection()
        conn.db_connect()
        resp = conn.db_write(query=query, vals=values)
        conn.db_close()

        return jsonify({"authors": resp})
    else:
        return Response(status=401)
def update_author():
    decoded_token = au.validate_jwt_token(request.json["jwt_token"])

    if decoded_token['role'] == 'admin':
        data = request.json['form_input']

        author_id = data['author_id']
        last_name = data['last_name']
        first_name = data['first_name']

        query = "UPDATE authors SET authors_last_name=%s, authors_first_name=%s WHERE authors_id=%s;"
        values = (last_name, first_name, author_id)

        conn = DatabaseConnection()
        conn.db_connect()
        resp = conn.db_write(query=query, vals=values)
        conn.db_close()

        return resp
    else:
        return Response(status=401)