from typing import List from sqlalchemy import ForeignKey from sqlalchemy.orm import mapped_column, Mapped, relationship from .base import BaseSiproModel from .associations import marketplace_warehouses, warehouse_company_warehouses, warehouse_suppliers class Company(BaseSiproModel): __tablename__ = 'companies' id: Mapped[int] = mapped_column(primary_key=True) warehouse: Mapped["CompanyWarehouse"] = relationship( back_populates="company" ) is_denco: Mapped[bool] = mapped_column() balance: Mapped[int] = mapped_column() is_deleted: Mapped[bool] = mapped_column() is_archived: Mapped[bool] = mapped_column() class CompanyWarehouse(BaseSiproModel): __tablename__ = 'company_warehouses' id: Mapped[int] = mapped_column(primary_key=True) company_id: Mapped[int] = mapped_column(ForeignKey('companies.id')) company: Mapped["Company"] = relationship(back_populates='warehouse') class Supplier(BaseSiproModel): __tablename__ = 'suppliers' id: Mapped[int] = mapped_column(primary_key=True) is_pseudo: Mapped[bool] = mapped_column() class Warehouse(BaseSiproModel): __tablename__ = 'warehouses' id: Mapped[int] = mapped_column(primary_key=True) suppliers: Mapped[List["Supplier"]] = relationship(secondary=warehouse_suppliers) company_warehouses: Mapped[List["CompanyWarehouse"]] = relationship(secondary=warehouse_company_warehouses) class Marketplace(BaseSiproModel): __tablename__ = 'marketplaces' id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column() auth_data: Mapped[str] = mapped_column() base_marketplace: Mapped[int] = mapped_column() sell_mixes: Mapped[bool] = mapped_column() sell_blocks: Mapped[bool] = mapped_column() sell_warehouse_products: Mapped[bool] = mapped_column() sell_from_price: Mapped[bool] = mapped_column() is_deleted: Mapped[bool] = mapped_column() is_paused: Mapped[bool] = mapped_column() warehouses: Mapped[List["Warehouse"]] = relationship(secondary=marketplace_warehouses) warehouse_id: Mapped[str] = mapped_column() company_id: Mapped[int] = mapped_column(ForeignKey('companies.id')) company: Mapped["Company"] = relationship() campaign_id: Mapped[str] = mapped_column()