import os from flask import Blueprint, jsonify, request from db import db from helper_functions import get_username_from_token_data, extract_token_data, get_token, get_user_id_from_username, return_401 from models import Keyword keyword_blueprint = Blueprint('keyword', __name__, url_prefix='/api') __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) @keyword_blueprint.route('/keyword', methods=['POST']) def add_keyword(): # get username from jwt token username = get_username_from_token_data(extract_token_data(get_token())) if username is None: # If token not provided or invalid -> return 401 code return return_401() request_data = request.get_json() key = request_data['keyword'] check_keyword = db.session.query(Keyword).filter_by(keyword=key, user_id=get_user_id_from_username(username)).first() if check_keyword is None: # Keyword doesn't exist yet for this user new_keyword = Keyword( user_id=get_user_id_from_username(username), keyword=key ) db.session.add(new_keyword) db.session.commit() return jsonify({"status": 200, "text": "Successfully added keyword", "data": new_keyword.as_dict()}) else: return jsonify({"status": 500, "text": "Keyword already exist for this user"}) @keyword_blueprint.route('/keyword', methods=['DELETE']) def remove_keyword(): # get username from jwt token username = get_username_from_token_data(extract_token_data(get_token())) if username is None: # If token not provided or invalid -> return 401 code return return_401() request_data = request.get_json() key = request_data['keyword'] db.session.query(Keyword).filter_by(keyword=key, user_id=get_user_id_from_username(username)).delete() db.session.commit() return jsonify({"status": 200, "text": "Successfully removed keyword"}) @keyword_blueprint.route('/keywords', methods=['GET']) def get_keywords(): # get username from jwt token username = get_username_from_token_data(extract_token_data(get_token())) if username is None: # If token not provided or invalid -> return 401 code return return_401() return_keywords = [] keywords = db.session.query(Keyword).filter_by(user_id=get_user_id_from_username(username)).all() if keywords is not None: for row in keywords: return_keywords.append(row.as_dict()) return jsonify({"status": 200, "text": "Successfully loaded keywords", "data": return_keywords})