""" lib/project.py """

import sys
from os import getenv
from os import sep
from os.path import abspath
from os.path import dirname

from authlib.integrations.flask_client import OAuth
from dotenv import load_dotenv
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

this_dir = abspath(dirname(__file__))  # should be lib directory
base_dir = abspath(f"{this_dir}{sep}..")


class Auth0:
    def __init__(self):
        self.domain = getenv("AUTH0_DOMAIN", "")
        self.client = getenv("AUTH0_CLIENT_ID", "")
        self.secret = getenv("AUTH0_CLIENT_SECRET", "")


class Env:
    """Import environment variables"""

    def __init__(self):
        load_dotenv(f"{base_dir}{sep}.env")

        self.auth0 = Auth0()
        self.flask = getenv("FLASK_ENV", "debug")
        self.prod_url = getenv("PROD_URL", "")
        self.cert = getenv("SSLCertFile", "")
        self.key = getenv("SSLKeyFile", "")
        self.db_uri = getenv("DATABASE_URI")
        self.app_secret = getenv("AppSecret", "dummy")


sys.path.append(base_dir)


# The main components in this application
app = Flask("PIAPP")
env = Env()
db = SQLAlchemy()
oauth = OAuth(app)
