Files
2025-07-28 23:19:59 +05:30

43 lines
1.2 KiB
Python

from datetime import datetime
from typing import List, Optional, Dict
from pydantic import BaseModel
class UserStats(BaseModel):
user_id: str
total_points: int = 0
current_streak: int = 0
longest_streak: int = 0
rank: int = 999
total_courses: int = 0
completed_courses: int = 0
total_quizzes: int = 0
total_coding_challenges: int = 0
created_at: datetime = datetime.now()
updated_at: datetime = datetime.now()
class UserProfile(BaseModel):
user_id: str
name: str
bio: str = ""
profile_pic: str = "/default-avatar.png"
join_date: datetime = datetime.now()
badges: List[str] = []
social_links: Dict[str, str] = {}
class ActivityRecord(BaseModel):
user_id: str
activity_type: str # 'course', 'quiz', 'coding', 'achievement'
title: str
score: Optional[int] = None
points_earned: int = 0
date: datetime = datetime.now()
blockchain_hash: Optional[str] = None
class BlockchainTransaction(BaseModel):
tx_hash: str
amount: float
transaction_type: str # 'reward', 'certificate', 'achievement'
description: str
timestamp: datetime = datetime.now()
confirmed: bool = False