from pydantic import BaseModel from datetime import datetime from typing import Optional class UserBase(BaseModel): username: str email: str is_admin: bool = False class UserCreate(UserBase): password: str class User(UserBase): id: int is_active: bool created_at: datetime class Config: from_attributes = True class APIKeyBase(BaseModel): name: str class APIKeyCreate(APIKeyBase): user_id: int class APIKey(APIKeyBase): id: int key: str user_id: int is_active: bool created_at: datetime class Config: from_attributes = True class APIKeyCreated(APIKey): plaintext_key: str class Config: from_attributes = True class QuotaBase(BaseModel): daily_tokens: Optional[int] = None monthly_tokens: Optional[int] = None daily_requests: Optional[int] = None monthly_requests: Optional[int] = None class QuotaCreate(QuotaBase): user_id: int class Quota(QuotaBase): id: int user_id: int reset_at: Optional[datetime] = None class Config: from_attributes = True class UsageStats(BaseModel): tokens_used_today: int = 0 tokens_used_month: int = 0 requests_today: int = 0 requests_month: int = 0 daily_reset_at: Optional[datetime] = None monthly_reset_at: Optional[datetime] = None class Config: from_attributes = True