from dataclasses import dataclass from enum import Enum 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: CatalogueType | None = None category: Category | None = None children: list[Category] | None = None products: list[Product] | None = None page: int = 0 total: int = 0 parent_id: int | str | None = None has_next: bool = False show_menu: bool = False @dataclass class NewCatalogueElement: msg: Message parent_id: int | str @dataclass class CategoryActionContext(NewCatalogueElement): ... @dataclass class ProductActionContext(NewCatalogueElement): ...