backend/items/models.py

71 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from datetime import datetime, timedelta, timezone
from typing import Annotated
from pydantic import BaseModel
from fastapi import Depends
from sqlalchemy.orm import Session
from sqlalchemy import ForeignKey, Column, Integer, String, Float
from sqlalchemy.dialects.postgresql import ARRAY
from ..auth.models import DBUser, Role, Status, UserBase
from ..config import Base, get_session_db
class UserProfileBase(UserBase):
bio : str | None = None
created_date : datetime | None = None
# collection : list[str] | None = None
class UserProfileID(UserProfileBase):
user_id : int | None = None
class UserProfilePublic(UserProfileBase):
pass
class UserProfilePrivate(UserProfilePublic):
collection : list[str] | None = None
role : Role | None = None
status : Status | None = None
follow_user : list[int] | None = None
##### VERİTABANI MODELİ #####
# 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 = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users_table.user_id"), nullable=False)
#collection_id = Column(Integer, ForeignKey("collections_table.collection_id"), nullable=False)
item_created_date = Column(String, default=datetime.now())
item_location = Column(String, default="No location") #daha net tanımlancak
item_type = Column(String, default="No type")
item_content = Column(String, default="No content")
item_score = Column(Float, default=0.0)
def is_user_exsist(username : str, session : Annotated[Session, Depends(get_session_db)]) -> bool | UserProfilePublic:
#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[UserProfilePublic]:
users = session.query(DBUser).all()
return [UserProfilePublic(
username=user.username,
bio=user.bio,
created_date=user.created_date,
items=user.items,
collections=user.collections,
role=user.role,
status=user.status
) for user in users]