utp_service/backend/app/schemas/admin.py

59 lines
1.8 KiB
Python

from datetime import datetime
from typing import Optional
from pydantic import BaseModel, ConfigDict
# ── Plugins ────────────────────────────────────────────────────────────────────
class PluginRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
name: str
display_name: str
description: Optional[str]
enabled: bool
registered_at: datetime
compatible_categories: list[str] = []
class PluginUpdate(BaseModel):
enabled: Optional[bool] = None
compatible_categories: Optional[list[str]] = None
# ── Users ──────────────────────────────────────────────────────────────────────
class UserRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
username: str
email: Optional[str]
full_name: Optional[str]
role: str
is_active: bool
created_at: datetime
class UserCreate(BaseModel):
username: str
password: str
email: Optional[str] = None
full_name: Optional[str] = None
role: str = "operator" # "admin" | "operator"
class UserUpdate(BaseModel):
email: Optional[str] = None
full_name: Optional[str] = None
role: Optional[str] = None
is_active: Optional[bool] = None
password: Optional[str] = None # if set, hashes and updates
# ── Google Sheets sync ─────────────────────────────────────────────────────────
class SheetsSyncRequest(BaseModel):
spreadsheet_id: str
sheet_name: Optional[str] = None # defaults to first sheet