import sys
import os
sys.path.append(os.path.join(os.getcwd(), 'backend'))
from dotenv import load_dotenv
load_dotenv()
from sqlalchemy import create_engine, text
from urllib.parse import quote_plus

try:
    from app.utils.encryption import decrypt_password, is_encrypted
except ImportError:
    def decrypt_password(password, key='babagamma'): 
        return password
    def is_encrypted(password, key='babagamma'): 
        return False

def get_decrypted_env_var(var_name, default=''):
    value = os.getenv(var_name, default)
    if value and is_encrypted(value):
        try:
            return decrypt_password(value, 'babagamma')
        except Exception:
            return value
    return value

DATABASE_URL = f'postgresql://{os.getenv("DATABASE_USER", "postgres")}:{quote_plus(get_decrypted_env_var("DATABASE_PASSWORD"))}@{os.getenv("DATABASE_HOST", "localhost")}:{os.getenv("DATABASE_PORT", "5432")}/{os.getenv("DATABASE_NAME", "bookbeach")}'
engine = create_engine(DATABASE_URL)

with engine.connect() as conn:
    with open('database/scripts/06_add_beach_contact_schedule_fields.sql', 'r') as f:
        migration_sql = f.read()
    
    conn.execute(text(migration_sql))
    conn.commit()
    print('Migration applied successfully!')