Spaces:
Sleeping
Sleeping
| from typing import List, Optional, Dict, Any | |
| from pydantic import BaseModel, Field # Import Field | |
| from datetime import datetime # Import datetime | |
| # Pydantic models for reading data from the database | |
| class KeyCategoryBase(BaseModel): | |
| name: str | |
| type: str | |
| tags: Optional[List[str]] = None | |
| # metadata: Optional[Dict[str, Any]] = None # Removed from base | |
| class KeyCategory(KeyCategoryBase): | |
| id: int | |
| # Map metadata_ from SQLAlchemy model to metadata in schema | |
| metadata: Optional[Dict[str, Any]] = Field(None, alias="metadata_") | |
| created_at: Optional[datetime] = None # Use datetime type | |
| updated_at: Optional[datetime] = None # Use datetime type | |
| class Config: | |
| orm_mode = True # Enable ORM mode | |
| by_alias = True # Use aliases for serialization | |
| # Configure JSON encoding for datetime objects if needed (orm_mode might handle this) | |
| # json_encoders = { | |
| # datetime: lambda v: v.isoformat() if v else None | |
| # } | |
| class APIKeyBase(BaseModel): | |
| value: str | |
| category_id: int | |
| status: str = "active" | |
| # metadata: Optional[Dict[str, Any]] = None # Removed from base | |
| class APIKey(APIKeyBase): | |
| id: int | |
| usage_count: int | |
| last_used: Optional[datetime] = None # Use datetime type | |
| # Map metadata_ from SQLAlchemy model to metadata in schema | |
| metadata: Optional[Dict[str, Any]] = Field(None, alias="metadata_") | |
| created_at: Optional[datetime] = None # Use datetime type | |
| updated_at: Optional[datetime] = None # Use datetime type | |
| class Config: | |
| orm_mode = True # Enable ORM mode | |
| by_alias = True # Use aliases for serialization | |
| # Configure JSON encoding for datetime objects if needed | |
| # json_encoders = { | |
| # datetime: lambda v: v.isoformat() if v else None | |
| # } | |
| # Pydantic models for creating data (less fields, e.g., no ID, timestamps) | |
| class KeyCategoryCreate(KeyCategoryBase): | |
| metadata: Optional[Dict[str, Any]] = None # Add metadata back to create schema | |
| class APIKeyCreate(APIKeyBase): | |
| metadata: Optional[Dict[str, Any]] = None # Add metadata back to create schema | |
| # Pydantic models for updating data (all fields optional) | |
| class KeyCategoryUpdate(BaseModel): | |
| name: Optional[str] = None | |
| type: Optional[str] = None | |
| tags: Optional[List[str]] = None | |
| metadata: Optional[Dict[str, Any]] = None | |
| class APIKeyUpdate(BaseModel): | |
| value: Optional[str] = None | |
| category_id: Optional[int] = None | |
| status: Optional[str] = None | |
| metadata: Optional[Dict[str, Any]] = None | |