from app.database import SessionLocal
from app.models.user import User
from app.models.stream import Stream
from app.services.chat_json_service import ChatJsonService
from uuid import uuid4
import json

db = SessionLocal()

# Check if user exists
user = db.query(User).first()
if not user:
    print('No users found. Creating test user...')
    user = User(
        username='testuser',
        email='test@example.com',
        hashed_password='hashed_password',
        role='admin'
    )
    db.add(user)
    db.commit()
    db.refresh(user)
    print(f'Created user: {user.id}')

print(f'Using user: {user.id}')

# Load chat.json
with open('/app/chat.json', 'r') as f:
    chat_json_data = json.load(f)

chat_json_service = ChatJsonService(db)
parsed_data = chat_json_service.parse_chat_json(chat_json_data)

print(f'Parsed data: {len(parsed_data.get("comments", []))} comments, {len(parsed_data.get("chapters", []))} chapters')

# Create stream
stream = chat_json_service.create_stream_from_chat_json(
    user_id=user.id,
    hls_path=None,
    parsed_data=parsed_data,
    is_public=True,
    is_twitch_import=False
)

print(f'Created stream: {stream.id}')

# Import chat messages
try:
    chat_json_service.import_chat_messages_from_chat_json(
        stream_id=stream.id,
        comments_data=parsed_data['comments'],
        embedded_data=parsed_data.get('embedded_data', {})
    )
    print('Successfully imported chat messages')
except Exception as e:
    print(f'Error importing chat messages: {e}')

# Check if messages were imported
from app.models.chat_message import ChatMessage
chat_count = db.query(ChatMessage).filter(ChatMessage.stream_id == stream.id).count()
print(f'Chat messages in DB: {chat_count}')

db.close()
