from pydantic import BaseModel from datetime import datetime from typing import Optional class APIKeyCreate(BaseModel): name: str expires_at: Optional[datetime] = None daily_tokens: Optional[int] = None monthly_tokens: Optional[int] = None daily_requests: Optional[int] = None monthly_requests: Optional[int] = None class APIKey(BaseModel): id: int name: str key: str key_prefix: Optional[str] = None is_active: bool created_at: datetime expires_at: Optional[datetime] = None daily_tokens: Optional[int] = None monthly_tokens: Optional[int] = None daily_requests: Optional[int] = None monthly_requests: Optional[int] = None class Config: from_attributes = True class APIKeyCreated(APIKey): plaintext_key: Optional[str] = None class Config: from_attributes = True class QuotaUpdate(BaseModel): daily_tokens: Optional[int] = None monthly_tokens: Optional[int] = None daily_requests: Optional[int] = None monthly_requests: Optional[int] = None class Settings(BaseModel): ollama_url: str default_model: str 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 class APIKeyWithUsage(APIKey): tokens_used_today: int = 0 tokens_used_month: int = 0 requests_today: int = 0 requests_month: int = 0 class Config: from_attributes = True