Spaces:
Sleeping
Sleeping
| import os | |
| from datetime import datetime | |
| from motor.motor_asyncio import AsyncIOMotorClient | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| MONGODB_URI = os.getenv("MONGODB_URI") | |
| # Connect to MongoDB | |
| client = AsyncIOMotorClient(MONGODB_URI) | |
| db = client.get_database() # This will use 'users' from the URI | |
| users_collection = db.users | |
| generations_collection = db.generations | |
| async def log_generation(username: str, gen_type: str, duration: float = 0.0): | |
| """Logs a successful audio generation to MongoDB.""" | |
| try: | |
| await generations_collection.insert_one({ | |
| "username": username, | |
| "type": gen_type, | |
| "duration": duration, | |
| "timestamp": datetime.utcnow() | |
| }) | |
| except Exception as e: | |
| print(f"Failed to log generation: {e}") | |
| async def get_dashboard_stats(username: str): | |
| """Fetches real stats for the dashboard.""" | |
| try: | |
| total_gens = await generations_collection.count_documents({"username": username}) | |
| # Mock calculation for compute saved: 2 minutes per generation | |
| compute_saved_minutes = total_gens * 2 | |
| hours = compute_saved_minutes // 60 | |
| mins = compute_saved_minutes % 60 | |
| compute_str = f"{hours}h {mins}m" if hours > 0 else f"{mins}m" | |
| return { | |
| "total_generations": total_gens, | |
| "compute_saved": compute_str | |
| } | |
| except Exception as e: | |
| print(f"Failed to fetch stats: {e}") | |
| return {"total_generations": 0, "compute_saved": "0m"} | |
| # For backward compatibility during migration | |
| users_db = {} | |