import os
from dotenv import load_dotenv

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
load_dotenv(os.path.join(BASE_DIR, '.env'))


def _abs(path_str, default_name):
    if not path_str:
        return os.path.join(BASE_DIR, default_name)
    if os.path.isabs(path_str):
        return path_str
    return os.path.join(BASE_DIR, path_str)


DATABASE_PATH = _abs(os.environ.get('DATABASE_PATH'), 'dev.db')
UPLOAD_DIR = _abs(os.environ.get('UPLOAD_DIR'), 'uploads')

WEBHOOK_EXECUTIONS_URL = os.environ.get('WEBHOOK_EXECUTIONS_URL', '')
WEBHOOK_FLOWS_URL = os.environ.get('WEBHOOK_FLOWS_URL', '')
WEBHOOK_LOG_URL = os.environ.get('WEBHOOK_LOG_URL', '')
WEBHOOK_FLOW_TOGGLE_URL = os.environ.get('WEBHOOK_FLOW_TOGGLE_URL', '')

INTERNAL_TRIGGER_SECRET = os.environ.get('INTERNAL_TRIGGER_SECRET', '')

ENABLE_BACKGROUND_THREAD = os.environ.get('ENABLE_BACKGROUND_THREAD', '0') == '1'
EXECUTIONS_POLL_SECONDS = int(os.environ.get('EXECUTIONS_POLL_SECONDS', '60'))
FLOWS_REFRESH_SECONDS = int(os.environ.get('FLOWS_REFRESH_SECONDS', str(24 * 60 * 60)))

RUN_STATUSES = ['success', 'failed', 'running', 'pending']

RANGE_MINUTES = {
    '15m': 15,
    '30m': 30,
    '1h': 60,
    '24h': 60 * 24,
    '7d': 60 * 24 * 7,
    '30d': 60 * 24 * 30,
}
