✨ Added stats to homepage
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import os
|
||||
|
||||
from fastapi import APIRouter, Response
|
||||
from fastapi.background import BackgroundTasks
|
||||
from fastapi.responses import JSONResponse, RedirectResponse
|
||||
from fastapi.security import OAuth2PasswordRequestForm
|
||||
from pydantic import BaseModel
|
||||
from classquiz.auth import *
|
||||
from classquiz.config import redis
|
||||
from classquiz.db.models import *
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/quizzes")
|
||||
async def get_quiz_count() -> int:
|
||||
redis_res = await redis.get("global_quiz_count")
|
||||
if redis_res is None:
|
||||
quiz_res = await Quiz.objects.count()
|
||||
await redis.set("global_quiz_count", quiz_res, ex=3600)
|
||||
return quiz_res
|
||||
else:
|
||||
return int(redis_res)
|
||||
|
||||
|
||||
@router.get("/users")
|
||||
async def get_user_count() -> int:
|
||||
redis_res = await redis.get("global_user_count")
|
||||
if redis_res is None:
|
||||
quiz_res = await User.objects.count()
|
||||
await redis.set("global_user_count", quiz_res, ex=3600)
|
||||
return quiz_res
|
||||
else:
|
||||
return int(redis_res)
|
||||
|
||||
|
||||
class CombinedOutput(BaseModel):
|
||||
quiz_count: int
|
||||
user_count: int
|
||||
|
||||
|
||||
@router.get("/combined")
|
||||
async def get_combined_count() -> CombinedOutput:
|
||||
user_count = None
|
||||
quiz_count = None
|
||||
redis_res = await redis.get("global_user_count")
|
||||
if redis_res is None:
|
||||
quiz_res = await User.objects.count()
|
||||
await redis.set("global_user_count", quiz_res, ex=3600)
|
||||
user_count = quiz_res
|
||||
else:
|
||||
user_count = int(redis_res)
|
||||
|
||||
redis_res = await redis.get("global_quiz_count")
|
||||
if redis_res is None:
|
||||
quiz_res = await Quiz.objects.count()
|
||||
await redis.set("global_quiz_count", quiz_res, ex=3600)
|
||||
quiz_count = quiz_res
|
||||
else:
|
||||
quiz_count = int(redis_res)
|
||||
|
||||
return CombinedOutput(quiz_count=quiz_count, user_count=user_count)
|
||||
Reference in New Issue
Block a user