agentic-comic-generator / services /session_id_generator.py
ramsi-k's picture
initial move
bce4c09
"""
Session ID Generator Service
Provides consistent session ID generation across the application.
"""
import re
import uuid
from datetime import datetime
from typing import Optional
class SessionIdGenerator:
"""Generates consistent session IDs across the application"""
@staticmethod
def create_session_id(prefix: Optional[str] = None) -> str:
"""
Create a new session ID.
For production: Uses UUID format
For testing: Uses sequential format with optional prefix
"""
if prefix:
# Use consistent format for test sessions
session_num = uuid.uuid4().int % 1000 # Get last 3 digits
return f"{prefix}_{session_num:03d}"
# Production session ID - UUID based
return str(uuid.uuid4())
@staticmethod
def is_valid_session_id(session_id: str) -> bool:
"""Validate if a session ID follows the expected format"""
# UUID format (production)
uuid_pattern = (
r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
)
# Test format (test_001, etc)
test_pattern = r"^[a-z]+_\d{3}$"
return bool(
re.match(uuid_pattern, session_id, re.I)
or re.match(test_pattern, session_id)
)