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 | |