import os
from app import create_app, db
from app.models import User

# Pilih config berdasarkan environment
env = os.environ.get('FLASK_ENV', 'development')
if env == 'production':
    from config import ProductionConfig as cfg
else:
    from config import DevelopmentConfig as cfg

app = create_app()
app.config.from_object(cfg)

@app.shell_context_processor
def make_shell_context():
    return {'db': db, 'User': User}

@app.cli.command('init-db')
def init_db():
    """Buat semua tabel dan user admin default."""
    db.create_all()
    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('✓ Database berhasil dibuat.')
        print('✓ User admin: username=admin, password=admin123')
        print('⚠  Segera ganti password setelah login pertama!')
    else:
        print('✓ Tabel diperbarui.')

if __name__ == '__main__':
    debug_mode = os.environ.get('FLASK_ENV', 'development') != 'production'
    app.run(debug=debug_mode, host='0.0.0.0', port=5000)