added db models
This commit is contained in:
parent
9f7029484b
commit
1f3ef0d112
5
src/models/__init__.py
Normal file
5
src/models/__init__.py
Normal file
@ -0,0 +1,5 @@
|
||||
from .beer import Beer
|
||||
from .category import Category
|
||||
from .m2m import BeerCategory
|
||||
|
||||
__all__ = ["Beer", "Category", "BeerCategory"]
|
41
src/models/beer.py
Normal file
41
src/models/beer.py
Normal file
@ -0,0 +1,41 @@
|
||||
from typing import TYPE_CHECKING, List
|
||||
|
||||
from sqlalchemy import Float, Integer, String
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from databases.database import Base
|
||||
|
||||
from .m2m import BeerCategory
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .category import Category
|
||||
|
||||
|
||||
class Beer(Base):
|
||||
"""
|
||||
Модель пивасика)))
|
||||
|
||||
## Attrs:
|
||||
-id: int - идентификатор товара
|
||||
- name: str - название товара
|
||||
- brand: str - марка товара
|
||||
- quantity: int -количество
|
||||
- price: float - цена
|
||||
- categories: List[Category] - связь
|
||||
список категорий в которые входит товар
|
||||
"""
|
||||
|
||||
__tablename__ = "user"
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True, index=True)
|
||||
name: Mapped[str] = mapped_column(String, unique=True)
|
||||
brand: Mapped[str]
|
||||
quantity: Mapped[int]
|
||||
price: Mapped[float] = mapped_column(Float)
|
||||
categories: Mapped[List["Category"]] = relationship(
|
||||
"Category",
|
||||
secondary=BeerCategory.__table__,
|
||||
back_populates="beer",
|
||||
)
|
||||
|
||||
def __repr__(self):
|
||||
return f"{self.name}{self.price}"
|
35
src/models/category.py
Normal file
35
src/models/category.py
Normal file
@ -0,0 +1,35 @@
|
||||
from typing import TYPE_CHECKING, List
|
||||
|
||||
from sqlalchemy import Integer, String
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from databases.database import Base
|
||||
|
||||
from .m2m import BeerCategory
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .beer import Beer
|
||||
|
||||
|
||||
class Category(Base):
|
||||
"""
|
||||
Модель категории
|
||||
|
||||
## Attrs:
|
||||
- id: int - идентификатор категории
|
||||
- name: str - название категории
|
||||
- beer: List[Beer] - связь пиво в категории
|
||||
"""
|
||||
|
||||
__tablename__ = "catrgory"
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True, index=True)
|
||||
name: Mapped[str] = mapped_column(String, unique=True)
|
||||
beer: Mapped[List["Beer"]] = relationship(
|
||||
"Beer",
|
||||
secondary=BeerCategory.__table__,
|
||||
back_populates="categories",
|
||||
)
|
||||
|
||||
def __repr__(self):
|
||||
return f"{self.name}"
|
25
src/models/m2m.py
Normal file
25
src/models/m2m.py
Normal file
@ -0,0 +1,25 @@
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from databases.database import Base
|
||||
|
||||
|
||||
class BeerCategory(Base):
|
||||
"""
|
||||
Модель m2m связи пива и категории
|
||||
|
||||
## Attrs:
|
||||
- category_id: int - идентификатор категории
|
||||
- beer_id: int - идентифкатор пива
|
||||
"""
|
||||
|
||||
__tablename__ = "beer_category"
|
||||
|
||||
category_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("city.id", ondelete="CASCADE"),
|
||||
primary_key=True,
|
||||
)
|
||||
beer_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("user.id", ondelete="CASCADE"),
|
||||
primary_key=True,
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user