#!/usr/bin/env python3
"""
Скрипт для инициализации баланса пользователей
"""

import sys
import os
sys.path.append('/app')

from sqlalchemy.orm import Session
from app.db.session import SessionLocal
from app.db.models import Tenant, UserBalance
from decimal import Decimal

def init_user_balances():
    """Создает записи баланса для всех существующих пользователей"""
    db = SessionLocal()
    try:
        # Получаем всех пользователей (tenant'ов)
        tenants = db.query(Tenant).all()
        
        for tenant in tenants:
            # Проверяем, есть ли уже баланс у пользователя
            existing_balance = db.query(UserBalance).filter(
                UserBalance.tenant_id == tenant.id
            ).first()
            
            if not existing_balance:
                # Создаем начальный баланс
                initial_balance = UserBalance(
                    tenant_id=tenant.id,
                    balance=Decimal("1000.00"),  # Начальный баланс 1000 рублей
                    total_deposited=Decimal("1000.00"),
                    total_spent=Decimal("0.00")
                )
                db.add(initial_balance)
                print(f"Создан баланс для пользователя {tenant.name} (ID: {tenant.id})")
            else:
                print(f"Баланс для пользователя {tenant.name} уже существует")
        
        db.commit()
        print(f"Инициализация балансов завершена. Обработано пользователей: {len(tenants)}")
        
    except Exception as e:
        db.rollback()
        print(f"Ошибка при инициализации балансов: {e}")
        raise
    finally:
        db.close()

if __name__ == "__main__":
    init_user_balances()
