# ========================================================================
# User Login API Endpoint
#

from fastapi import APIRouter
from api.core.EasyMessage import API_BaseRequest
from api.core.EasyMessage import API_BaseResponse
from api.core.EasySQL import EasySQL
from api.core.EasyCrypt import generate_password_hash
from api.core.EasyCrypt import check_password_hash
from api.core.EasyCrypt import generate_session_token

from datetime import datetime, timedelta

print("LOGOUT API ENDPOINT")

router = APIRouter()
sql_connection = EasySQL()

class API_Request(API_BaseRequest):
    pass

class API_Response(API_BaseResponse):
    pass


@router.post("/users/logout")
def get_user(request: API_Request):

    api_response = API_Response()

    session_hash = request.session_hash

    sql_connection.db_init()
    sql_connection.db_connect()
    results = sql_connection.select('sessions', [], {'session_id' : session_hash})

    if(len(results) == 0):
        api_response.status_code = 403
        api_response.success = False
        api_response.reason = "User Not Found"
        return api_response

    if(len(results) > 1):
        api_response.status_code = 500
        api_response.success = False
        api_response.reason = "Multi-Entry Failure"
        return api_response

    sql_result = sql_connection.delete('sessions', {'session_id' : session_hash})

    if(sql_result == False):
        api_response.status_code = 500
        api_response.success = False
        api_response.reason = "Server Failure"
        return api_response

    api_response.status_code = 200
    api_response.success = True
    api_response.reason = "Success"

    return api_response
