from typing import List, Optional from pydantic import BaseModel, Field, ConfigDict from datetime import datetime from bson import ObjectId class Environment(BaseModel): id: Optional[str] = Field(None, alias="_id") character_id: str name: str = Field(..., min_length=1) description: Optional[str] = None asset_ids: List[str] = Field(default_factory=list) created_at: datetime = Field(default_factory=datetime.utcnow) updated_at: datetime = Field(default_factory=datetime.utcnow) model_config = ConfigDict( populate_by_name=True, json_encoders={ObjectId: str}, arbitrary_types_allowed=True )