new database system

This commit is contained in:
bdrtr 2025-05-14 16:31:46 +03:00 committed by Bedir Tuğra Karaabalı
parent de5d4292ed
commit e065cf9d22
8 changed files with 92 additions and 124 deletions

View file

@ -4,11 +4,12 @@ from sqlalchemy import DateTime
from pydantic import BaseModel
from fastapi import Depends
from sqlalchemy.orm import Session, relationship, mapped_column, Mapped
from sqlalchemy import ForeignKey, Column, Integer, String, Float
from sqlalchemy import String, Float, Integer, ForeignKey
from sqlalchemy.dialects.postgresql import ARRAY
from ..config import Base, get_session_db
from ..config import Base, get_session_db, collection_item
from typing import TYPE_CHECKING
from ..auth.models import Role, Status, UserBase, DBUser
from ..auth.models import Role, Status, UserBase
from ..collectionObj.models import CollectionsDB
class UserProfileBase(UserBase):
@ -56,61 +57,23 @@ class Item(BaseItem):
# Tüm modeller AUTH'da veri tabanına işlendi yukardaki
#modeller veri tabanında mevcuttur. Değiştirmek için AUTH'daki
# DBUser modelini değiştirip tekrar veri tabanına işleyebilirsin
'''
'''
class Items(Base):
__tablename__ = "items_table"
item_id : Mapped[int] = mapped_column(primary_key=True, index=True, autoincrement=True)
user_id : Mapped[int] = mapped_column(ForeignKey('users_table.user_id'), nullable=False, index=True)
#collection_id : Mapped[list[int]] = mapped_column(Integer, ForeignKey("collections_table.collection_id"), nullable=True) # collection_id ile ilişki
item_created_date : Mapped[datetime] = mapped_column(DateTime, default=datetime.now())
item_location = Column(String, default="No location")
item_type = Column(String, default="No type")
item_content = Column(String, default="No content")
item_score = Column(Float, default=0.0)
item_location: Mapped[str] = mapped_column(String, default="No location")
item_type: Mapped[str] = mapped_column(String, default="No type")
item_content: Mapped[str] = mapped_column(String, default="No content")
item_score: Mapped[float] = mapped_column(Float, default=0.0)
# ilişkiler
user : Mapped['DBUser'] = relationship("DBUser", back_populates="items", lazy='select')
#collection = relationship("Collections", back_populates="items")
'''
'''
def is_user_exsist_get(username : str, session : Annotated[Session, Depends(get_session_db)]) -> bool | UserProfilePrivate:
#DBUser veritabanındaki nesnedir her niteliğe sahiptir
user = session.query(DBUser).filter(DBUser.username == username).first()
return user
def all_users(session: Annotated[Session, Depends(get_session_db)]) -> list[UserProfilePrivate]:
users = session.query(DBUser).all()
return [UserProfilePrivate(
username=user.username,
bio=user.bio,
created_date=user.created_date,
items = [Item.model_validate(item) for item in user.items],
collections=user.collections,
role=user.role,
status=user.status
) for user in users]
def add_Item_user(
user: Annotated[UserProfileID, Depends(get_session_db)],
session: Annotated[Session, Depends(get_session_db)],
item: ItemCreate) -> bool:
# DBUser veritabanındaki nesnedir her niteliğe sahiptir
item = Items(
user_id=user.user_id,
item_location=item.item_location,
item_type=item.item_type,
item_content=item.item_content,
item_created_date=item.item_created_date
)
session.add(item)
session.commit()
return True
# ilişkiler
collections : Mapped['CollectionsDB']= relationship(
"CollectionsDB",
secondary=collection_item,
back_populates="items",
lazy='select'
) #back_populates karşı tarafın ismi