mirror of
http://88.130.71.182:3000/BlitTech/badoHair_be.git
synced 2026-06-13 08:34:29 +00:00
78 lines
1.5 KiB
Python
78 lines
1.5 KiB
Python
from pydantic import BaseModel, EmailStr, Field
|
|
from uuid import UUID
|
|
from datetime import datetime
|
|
from typing import Any
|
|
|
|
|
|
class DashboardStats(BaseModel):
|
|
revenue_today: float
|
|
revenue_week: float
|
|
revenue_month: float
|
|
orders_pending: int
|
|
bookings_upcoming: int
|
|
low_stock_count: int
|
|
new_customers_month: int
|
|
|
|
|
|
class RevenueStats(BaseModel):
|
|
period: str
|
|
revenue: float
|
|
orders_count: int
|
|
bookings_count: int
|
|
|
|
|
|
class ActivityItem(BaseModel):
|
|
id: UUID
|
|
actor_name: str | None = None
|
|
action: str
|
|
entity_type: str
|
|
entity_id: UUID | None = None
|
|
metadata: dict | None = None
|
|
created_at: datetime
|
|
|
|
|
|
class CustomerOut(BaseModel):
|
|
id: UUID
|
|
email: str
|
|
full_name: str | None = None
|
|
phone: str | None = None
|
|
is_blocked: bool
|
|
orders_count: int = 0
|
|
bookings_count: int = 0
|
|
total_spent: float = 0.0
|
|
created_at: datetime
|
|
|
|
|
|
class UpdateCustomer(BaseModel):
|
|
is_blocked: bool | None = None
|
|
full_name: str | None = Field(None, max_length=100)
|
|
|
|
|
|
class StoreSettingOut(BaseModel):
|
|
key: str
|
|
value: Any
|
|
updated_at: datetime
|
|
|
|
|
|
class StoreSettingUpdate(BaseModel):
|
|
value: Any
|
|
|
|
|
|
class AdminUserCreate(BaseModel):
|
|
email: EmailStr
|
|
password: str = Field(min_length=8)
|
|
full_name: str
|
|
|
|
|
|
class EmailTemplateOut(BaseModel):
|
|
name: str
|
|
subject: str
|
|
body_html: str
|
|
body_text: str | None = None
|
|
|
|
|
|
class EmailTemplateUpdate(BaseModel):
|
|
subject: str
|
|
body_html: str
|
|
body_text: str | None = None
|