teteffd / apps /api /app /models /__init__.py
Developer
WormGPT - production-grade AI chat platform
276ef31
Raw History Blame Contribute Delete
945 Bytes
"""Common schema fragments."""
from __future__ import annotations
from datetime import datetime
from typing import Annotated, Any, Literal
from pydantic import BaseModel, ConfigDict, EmailStr, Field
PyObjectId = Annotated[str, Field(pattern=r"^[a-f\d]{24}$")]
class APIError(BaseModel):
error: str
detail: str | None = None
code: str | None = None
class Page(BaseModel):
model_config = ConfigDict(extra="ignore")
page: int = 1
size: int = 50
class TimestampMixin(BaseModel):
createdAt: datetime | None = None
updatedAt: datetime | None = None
Role = Literal["user", "moderator", "developer", "admin", "superadmin"]
Status = Literal["pending", "approved", "rejected", "suspended"]
class PublicUser(BaseModel):
id: str
username: str
email: EmailStr
role: Role
status: Status
avatar: str | None = None
createdAt: datetime | None = None
lastLogin: datetime | None = None