32 lines
993 B
Python
32 lines
993 B
Python
from sqlmodel import SQLModel, Field
|
|
from typing import Optional
|
|
from enum import Enum
|
|
import datetime
|
|
|
|
class UserRole(str, Enum):
|
|
admin = "admin"
|
|
user = "user"
|
|
|
|
class User(SQLModel, table=True):
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
username: str = Field(index=True, unique=True)
|
|
password_hash: str
|
|
role: UserRole = Field(default=UserRole.user)
|
|
|
|
class OrderStatus(str, Enum):
|
|
pending = "pending"
|
|
in_progress = "in_progress"
|
|
completed = "completed"
|
|
|
|
class Order(SQLModel, table=True):
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
title: str
|
|
description: Optional[str] = None
|
|
created_at: datetime.datetime = Field(default_factory=datetime.datetime.utcnow)
|
|
status: OrderStatus = Field(default=OrderStatus.pending)
|
|
|
|
class TopProductSummary(SQLModel, table=True):
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
product_name: str = Field(index=True)
|
|
sales_count: int = Field(default=0)
|