import jwt
from datetime import datetime, timedelta
from flask import current_app
# from application.db import Database
# from application.db.query_executor import QueryResults

# database = Database(commit=False)
# query_executor = QueryResults(database)

def generate_custom_token(user_id, exp_days=1):
    payload = {
        "userid": str(user_id),
        "exp": datetime.utcnow() + timedelta(days=exp_days)
    }
    token = jwt.encode(payload, current_app.config['JWT_SECRET_KEY'], algorithm="HS256")
    return token


def get_user_by_email(email):
    query = {
        'statement': "SELECT * FROM users WHERE email = %s",
        'params': (email,)
    }
    query_results = current_app.extensions['query_results']
    result = query_results.fetch_query_results(**query)
    return result[0] if result else None
