Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, EmailStr | |
| from typing import Optional, List | |
| from datetime import datetime | |
| from uuid import UUID | |
| from decimal import Decimal | |
| # Auth Schemas | |
| class Token(BaseModel): | |
| access_token: str | |
| token_type: str | |
| class TokenData(BaseModel): | |
| user_id: Optional[UUID] = None | |
| # User Schemas | |
| class UserBase(BaseModel): | |
| username: str | |
| email: EmailStr | |
| name: Optional[str] = None | |
| class UserCreate(UserBase): | |
| password: str | |
| class UserLogin(BaseModel): | |
| email: EmailStr | |
| password: str | |
| class UserUpdate(BaseModel): | |
| name: Optional[str] = None | |
| avatar_url: Optional[str] = None | |
| timezone: Optional[str] = None | |
| currency: Optional[str] = None | |
| class User(UserBase): | |
| id: UUID | |
| balance: Decimal | |
| role: str | |
| status: str | |
| created_at: datetime | |
| class Config: | |
| from_attributes = True | |
| # Category Schemas | |
| class CategoryBase(BaseModel): | |
| name: str | |
| slug: str | |
| description: Optional[str] = None | |
| icon: Optional[str] = None | |
| sort_order: int = 0 | |
| is_active: bool = True | |
| class Category(CategoryBase): | |
| id: int | |
| class Config: | |
| from_attributes = True | |
| # Service Schemas | |
| class ServiceBase(BaseModel): | |
| category_id: int | |
| name: str | |
| description: Optional[str] = None | |
| price_per_1000: Decimal | |
| min_quantity: int | |
| max_quantity: int | |
| average_time: Optional[str] = None | |
| status: str = "active" | |
| class Service(ServiceBase): | |
| id: int | |
| class Config: | |
| from_attributes = True | |
| # Order Schemas | |
| class OrderBase(BaseModel): | |
| service_id: int | |
| link: str | |
| quantity: int | |
| class OrderCreate(OrderBase): | |
| pass | |
| class Order(OrderBase): | |
| id: int | |
| user_id: UUID | |
| charge: Decimal | |
| status: str | |
| start_count: int | |
| remains: int | |
| created_at: datetime | |
| updated_at: datetime | |
| class Config: | |
| from_attributes = True | |
| # Transaction Schemas | |
| class TransactionBase(BaseModel): | |
| amount: Decimal | |
| type: str | |
| payment_method: str | |
| note: Optional[str] = None | |
| class TransactionCreate(TransactionBase): | |
| pass | |
| class Transaction(TransactionBase): | |
| id: UUID | |
| user_id: UUID | |
| status: str | |
| balance_before: Optional[Decimal] = None | |
| balance_after: Optional[Decimal] = None | |
| created_at: datetime | |
| class Config: | |
| from_attributes = True | |
| # Ticket Schemas | |
| class TicketBase(BaseModel): | |
| subject: str | |
| priority: str = "Normal" | |
| order_id: Optional[int] = None | |
| class TicketCreate(TicketBase): | |
| message: str | |
| class Ticket(TicketBase): | |
| id: int | |
| user_id: UUID | |
| status: str | |
| created_at: datetime | |
| updated_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class TicketMessageBase(BaseModel): | |
| message: str | |
| class TicketMessageCreate(TicketMessageBase): | |
| pass | |
| class TicketMessage(TicketMessageBase): | |
| id: int | |
| ticket_id: int | |
| user_id: UUID | |
| is_admin: bool | |
| created_at: datetime | |
| class Config: | |
| from_attributes = True | |