37 lines
909 B
Python
37 lines
909 B
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, field_validator
|
|
|
|
from skyvern.forge.sdk.utils.sanitization import sanitize_postgres_text
|
|
|
|
|
|
class TOTPCodeBase(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
totp_identifier: str | None = None
|
|
task_id: str | None = None
|
|
workflow_id: str | None = None
|
|
source: str | None = None
|
|
content: str | None = None
|
|
|
|
expired_at: datetime | None = None
|
|
|
|
|
|
class TOTPCodeCreate(TOTPCodeBase):
|
|
totp_identifier: str
|
|
content: str
|
|
|
|
@field_validator("content")
|
|
@classmethod
|
|
def sanitize_content(cls, value: str) -> str:
|
|
"""Remove NUL (0x00) bytes from content to avoid PostgreSQL DataError."""
|
|
return sanitize_postgres_text(value)
|
|
|
|
|
|
class TOTPCode(TOTPCodeCreate):
|
|
totp_code_id: str
|
|
code: str
|
|
organization_id: str
|
|
created_at: datetime
|
|
modified_at: datetime
|