41 lines
845 B
Python
41 lines
845 B
Python
from dataclasses import dataclass
|
|
from enum import Enum
|
|
from typing import Optional, Union
|
|
|
|
from aiogram.types import Message
|
|
|
|
from db.models import Category
|
|
from db.models.products import Product
|
|
|
|
|
|
class CatalogueType(Enum):
|
|
CATEGORIES = "categories"
|
|
PRODUCTS = "products"
|
|
EMPTY = "empty"
|
|
|
|
|
|
@dataclass
|
|
class CatalogueView:
|
|
view_type: Optional[CatalogueType] = None
|
|
category: Optional[Category] = None
|
|
children: Optional[list[Category]] = None
|
|
products: Optional[list[Product]] = None
|
|
page: int = 0
|
|
parent_id: Union[int, str, None] = None
|
|
has_next: bool = False
|
|
show_menu: bool = False
|
|
|
|
|
|
@dataclass
|
|
class NewCatalogueElement:
|
|
msg: Message
|
|
parent_id: Union[int, str]
|
|
|
|
|
|
@dataclass
|
|
class NewCategoryContext(NewCatalogueElement): ...
|
|
|
|
|
|
@dataclass
|
|
class NewProductContext(NewCatalogueElement): ...
|