"""
Script setup pertama kali di server cPanel.
Jalankan SEKALI setelah upload dan install requirements.

Cara pakai di Terminal cPanel:
    cd ~/bantuan_daerah
    python setup_production.py
"""

import sys, os
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from dotenv import load_dotenv
load_dotenv()

from app import create_app, db
from app.models import User
from sqlalchemy import text, inspect

app = create_app()

with app.app_context():
    print("=" * 50)
    print("  SiBANDA — Setup Production")
    print("=" * 50)

    # 1. Buat semua tabel
    print("\n[1] Membuat tabel database...")
    db.create_all()
    print("    ✓ Semua tabel berhasil dibuat.")

    # 2. Kolom tambahan (dari migrasi)
    print("\n[2] Memeriksa kolom tambahan...")
    inspector = inspect(db.engine)

    # map_data_json di clustering_sessions
    cols_cs = [c['name'] for c in inspector.get_columns('clustering_sessions')]
    if 'map_data_json' not in cols_cs:
        db.session.execute(text(
            "ALTER TABLE clustering_sessions ADD COLUMN map_data_json LONGTEXT NULL"
        ))
        db.session.commit()
        print("    ✓ Kolom map_data_json ditambahkan.")
    else:
        print("    ✓ Kolom map_data_json sudah ada.")

    # 3. User admin default
    print("\n[3] Memeriksa user admin...")
    if not User.query.filter_by(username='admin').first():
        admin = User(
            nama='Administrator',
            username='admin',
            email='admin@sibanda.local',
            role='admin',
            is_active=True
        )
        admin.set_password('admin123')
        db.session.add(admin)
        db.session.commit()
        print("    ✓ User admin dibuat.")
        print("      Username : admin")
        print("      Password : admin123")
        print("      ⚠  Segera ganti password setelah login pertama!")
    else:
        print("    ✓ User admin sudah ada.")

    print("\n" + "=" * 50)
    print("  Setup selesai! Aplikasi siap digunakan.")
    print("=" * 50 + "\n")