Files
Sipro-Stocks/database/sipro/models/products.py
2024-06-30 04:53:05 +03:00

61 lines
2.2 KiB
Python

from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from .base import BaseSiproModel
from .general import Marketplace
class Product(BaseSiproModel):
__tablename__ = 'products'
id: Mapped[int] = mapped_column(primary_key=True)
denco_article: Mapped[int] = mapped_column(index=True)
article: Mapped[str] = mapped_column(index=True)
class MarketplaceProduct(BaseSiproModel):
__tablename__ = 'marketplace_products'
id: Mapped[int] = mapped_column(primary_key=True)
marketplace_id: Mapped[int] = mapped_column(ForeignKey('marketplaces.id'))
marketplace: Mapped["Marketplace"] = relationship()
mp_price_bought: Mapped[int] = mapped_column()
price_recommended: Mapped[int] = mapped_column()
is_archived: Mapped[bool] = mapped_column()
product_id: Mapped[int] = mapped_column(ForeignKey("products.id"))
product: Mapped["Product"] = relationship()
class SupplierProduct(BaseSiproModel):
__tablename__ = 'supplier_products'
id: Mapped[int] = mapped_column(primary_key=True)
supplier_stock: Mapped[int] = mapped_column()
supplier_id: Mapped[int] = mapped_column()
product_id: Mapped[int] = mapped_column(ForeignKey("products.id"))
product: Mapped["Product"] = relationship()
in_block: Mapped[int] = mapped_column()
class CompanyWarehouseProduct(BaseSiproModel):
__tablename__ = 'company_warehouse_products'
id: Mapped[int] = mapped_column(primary_key=True)
is_sold: Mapped[bool] = mapped_column()
company_warehouse_id: Mapped[int] = mapped_column()
product_id: Mapped[int] = mapped_column(ForeignKey("products.id"))
product: Mapped["Product"] = relationship()
class ProductRelation(BaseSiproModel):
__tablename__ = "products_relations"
id: Mapped[int] = mapped_column(primary_key=True, comment="ID связи в БД")
master_product_id: Mapped[int] = mapped_column(ForeignKey("products.id"))
master_product: Mapped["Product"] = relationship(foreign_keys=[master_product_id])
slave_product_id: Mapped[int] = mapped_column(ForeignKey("products.id"))
slave_product: Mapped["Product"] = relationship(foreign_keys=[slave_product_id])
relation_type: Mapped[int] = mapped_column(comment="Тип связи (ENUM)")