42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from fastapi import HTTPException
|
||
from sqlalchemy import Column, Integer, String, Float, Boolean, ForeignKey
|
||
from sqlalchemy.dialects.postgresql import ARRAY
|
||
from sqlalchemy.orm import Session, relationship, mapped_column, Mapped
|
||
from ..config import Base, get_session_db, user_collection, collection_item
|
||
from typing import TYPE_CHECKING
|
||
|
||
if TYPE_CHECKING:
|
||
from ..auth.models import DBUser
|
||
from ..items.models import Items
|
||
|
||
|
||
|
||
|
||
##### veri tabanı modelleri #####
|
||
class CollectionsDB(Base):
|
||
__tablename__ = "collections_table"
|
||
|
||
collection_id : Mapped[int] = mapped_column(Integer, primary_key=True)
|
||
#user_id : Mapped[int] = mapped_column(Integer, ForeignKey("users_table.user_id"), nullable=False) # user_id ile ilişki
|
||
#item_id : Mapped[list[int]] = mapped_column(Integer, ForeignKey("items_table.item_id"), nullable=False) # item_id ile ilişki
|
||
visibility : Mapped[bool] = mapped_column(Boolean, default=True)
|
||
collection_name : Mapped[str] = mapped_column(String, nullable=False)
|
||
collection_description : Mapped[str] = mapped_column(String, default="No description")
|
||
|
||
# ilişkiler
|
||
users : Mapped['DBUser'] = relationship(
|
||
"DBUser",
|
||
secondary=user_collection,
|
||
back_populates="collections",
|
||
lazy='select'
|
||
) #back_populates karşı tarafın ismi
|
||
|
||
items : Mapped[list['Items']] = relationship(
|
||
"Items",
|
||
secondary=collection_item,
|
||
back_populates="collections" ,
|
||
lazy='select'
|
||
)
|
||
|
||
|
||
#### collection bir item listesi birde kullanıcı listesi tutacak |