from flask import jsonify, url_for, request, abort
from models.Dictionary import Dictionary
from models.Token import Token
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

def Home():
    return 'Hello'

def Listing():
    if request.method == 'GET':
        dictList = Dictionary.query.filter_by(is_deleted=0).all()
        dictJson = Dictionary.serialize_list(dictList)
        # print("pool size = {}".format(db.engine.pool.size()))
        return jsonify(dictJson)

def Search():
    if request.method == 'POST':
        queryData = request.json
        dictJson = {}
        if 'query' in queryData:
            query = queryData['query'].strip()
            query = "%{}%".format(query)
            dictList = Dictionary.query.filter((Dictionary.word.like(query) | Dictionary.meaning.like(query)), Dictionary.is_deleted==0).all()
            dictJson = Dictionary.serialize_list(dictList)
        return jsonify(dictJson)

def AddDict():
    if request.method == 'POST':
        result = {'type':'error', 'message':['Something went wrong']}
        queryData = request.json
        #queryData = request.form
        if 'word' in queryData and 'meaning' in queryData and 'detail' in queryData and 'token' in queryData and 'userId' in queryData:
            word = queryData['word'].strip()
            meaning = queryData['meaning'].strip()
            detail = queryData['detail'].strip()
            token = queryData['token'].strip()
            userId = queryData['userId'].strip()
            checkToken = Token.query.filter(Token.user_id==userId, Token.token==token, Token.is_deleted==0).first()
            if checkToken:
                newDict = Dictionary(word=word, meaning=meaning, detail=detail, is_deleted=0)
                db.session.add(newDict)
                db.session.commit()
                result =  {'type':'success', 'message': ['Word has beed saved']}
            else:
                result = {'type':'error', 'message':['You are not log in']}
        return jsonify(result)