import os
from pathlib import Path
from dotenv import load_dotenv
load_dotenv('../.env')

class Config(object):
    """Basic App Configuration"""
    APP_HOST = '0.0.0.0'
    DATA = './data/'
    DEBUG = False
    TESTING = False
    SECRET_KEY = os.getenv('SECRET_KEY')
    SERVER_NAME = os.getenv('SERVER_NAME')
    SESSION_COOKIE_SECURE = True

    """Database Driver Configuration"""
    DATABASE_TYPE = os.getenv('DATABASE_TYPE') or 'SQLite'
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    if DATABASE_TYPE.lower() == 'mysql' and os.getenv('MYSQL_DATABASE') and os.getenv('MYSQL_USER') and os.getenv('MYSQL_PASSWORD'):
        DATABASE_HOST = os.getenv('DATABASE_HOST') or 'localhost'
        DATABASE_PORT = int(os.getenv('DATABASE_PORT') or 3306)
        MYSQL_DATABASE = os.getenv('MYSQL_DATABASE')
        MYSQL_USER = os.getenv('MYSQL_USER')
        MYSQL_PASSWORD = os.getenv('MYSQL_PASSWORD')
        SQLALCHEMY_DATABASE_URI = f'mysql+pymysql://{MYSQL_USER}:{MYSQL_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{MYSQL_DATABASE}'
    else: SQLALCHEMY_DATABASE_URI = f'sqlite:///{Path(os.path.abspath(f"{DATA}/database.db"))}'

class Production(Config): pass

class Development(Config):
    APP_HOST = '127.0.0.1'
    DEBUG = True
    SERVER_NAME = '127.0.0.1:5000'
    SESSION_COOKIE_SECURE = False

class Testing(Development):
    TESTING = True
