Spaces:
Sleeping
Sleeping
File size: 2,561 Bytes
7183ec8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
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
|