Spaces:
Sleeping
Sleeping
Added count star messages
Browse files- app/auth/auth.py +17 -0
- app/models/user.py +11 -0
- app/routers/chats.py +7 -1
app/auth/auth.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import APIRouter, HTTPException
|
| 2 |
+
from datetime import datetime, timedelta
|
| 3 |
+
from app.config import settings
|
| 4 |
+
import jwt
|
| 5 |
+
|
| 6 |
+
router = APIRouter(prefix="/auth", tags=["Auth"])
|
| 7 |
+
jwt_secret_key = settings.jwt_secret
|
| 8 |
+
|
| 9 |
+
@router.post("/login")
|
| 10 |
+
async def login(email: str, password: str):
|
| 11 |
+
user = await get_user_by_email(email)
|
| 12 |
+
if not user or not user.verify_password(password):
|
| 13 |
+
raise HTTPException(status_code=401, detail="Invalid Credentials")
|
| 14 |
+
|
| 15 |
+
token_expires = datetime.utcnow() + timedelta(hours=1)
|
| 16 |
+
token=jwt.encode({"sub": email, "exp": token_expires}, jwt_secret_key, algorithm="HS256")
|
| 17 |
+
|
app/models/user.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pydantic import BaseModel, EmailStr
|
| 2 |
+
from passlib.contetx import CryptContext
|
| 3 |
+
|
| 4 |
+
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
|
| 5 |
+
|
| 6 |
+
class User(BaseModel):
|
| 7 |
+
email: EmailStr
|
| 8 |
+
hashed_password: str
|
| 9 |
+
|
| 10 |
+
def verify_password(self, password: str) -> bool:
|
| 11 |
+
return pwd_context.verify(password, self.hashed_password)
|
app/routers/chats.py
CHANGED
|
@@ -37,6 +37,8 @@ async def get_chat_stats():
|
|
| 37 |
total_requests = await chat_logs.count_documents({})
|
| 38 |
unique_sessions = await chat_logs.distinct("session_id")
|
| 39 |
total_sessions = len(unique_sessions)
|
|
|
|
|
|
|
| 40 |
pipeline = [
|
| 41 |
{
|
| 42 |
"$group": {
|
|
@@ -51,10 +53,14 @@ async def get_chat_stats():
|
|
| 51 |
else:
|
| 52 |
avg_latency = 0.0
|
| 53 |
|
|
|
|
|
|
|
|
|
|
| 54 |
return {
|
| 55 |
"total_sessions": total_sessions,
|
| 56 |
"total_requests": total_requests,
|
| 57 |
-
"avg_latency": avg_latency
|
|
|
|
| 58 |
}
|
| 59 |
|
| 60 |
#Chat History Toggle Star
|
|
|
|
| 37 |
total_requests = await chat_logs.count_documents({})
|
| 38 |
unique_sessions = await chat_logs.distinct("session_id")
|
| 39 |
total_sessions = len(unique_sessions)
|
| 40 |
+
|
| 41 |
+
|
| 42 |
pipeline = [
|
| 43 |
{
|
| 44 |
"$group": {
|
|
|
|
| 53 |
else:
|
| 54 |
avg_latency = 0.0
|
| 55 |
|
| 56 |
+
|
| 57 |
+
num_starred = await chat_logs.count_documents({"starred": True})
|
| 58 |
+
|
| 59 |
return {
|
| 60 |
"total_sessions": total_sessions,
|
| 61 |
"total_requests": total_requests,
|
| 62 |
+
"avg_latency": avg_latency,
|
| 63 |
+
"num_starred": num_starred
|
| 64 |
}
|
| 65 |
|
| 66 |
#Chat History Toggle Star
|