from pydantic import BaseModel from typing import Optional from datetime import datetime from enum import Enum class TopupStatus(str, Enum): pending = "pending" confirmed = "confirmed" rejected = "rejected" # Für Ausgaben und Admin-Create weiterhin kompatibel: class TopupBase(BaseModel): user_id: Optional[int] = None # <- optional gemacht amount_cents: int paypal_email: Optional[str] = None note: Optional[str] = None class TopupCreate(TopupBase): # user_id kann für Admin-Aufrufe gesetzt werden, für User-Create weggelassen pass class TopupStatusUpdate(BaseModel): status: TopupStatus class TopupOut(TopupBase): id: int status: TopupStatus created_at: datetime confirmed_at: Optional[datetime] = None class Config: from_attributes = True # pydantic v2 (ersetzt orm_mode)