item-create
This commit is contained in:
parent
7c35097c88
commit
039b877241
@ -12,6 +12,11 @@ from sqlalchemy import Integer, DateTime
|
||||
from sqlalchemy.orm import Session, relationship, mapped_column, Mapped
|
||||
from sqlalchemy.dialects.postgresql import ARRAY
|
||||
from email.message import EmailMessage
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ..items.models import Items
|
||||
|
||||
|
||||
import jwt
|
||||
|
||||
@ -69,10 +74,9 @@ class DBUser(Base):
|
||||
created_date : Mapped[datetime] = mapped_column(DateTime, default=datetime.now()) #datetime.datetime -> python, DateTime -> sqlalchemy
|
||||
bio : Mapped[str] = mapped_column(default="No bio")
|
||||
follow_users : Mapped[list[int]] = mapped_column(ARRAY(Integer), default=[]) # takip edilen kullanıcılar
|
||||
|
||||
# -> buralar diğer tablolar ile olan ilişkiler
|
||||
from ..items.models import Items
|
||||
items : Mapped[list['Items']] = relationship("Items", back_populates="user", cascade="all, delete-orphan", lazy='select')
|
||||
items : Mapped[list['Items']] = relationship("Items", back_populates="user", cascade="all, delete-orphan")
|
||||
collections : Mapped[int] = mapped_column(default=0) # hat vermesin diye eklendi collections aktif değil
|
||||
|
||||
|
||||
|
||||
@ -128,7 +132,7 @@ async def get_current_user(
|
||||
|
||||
credentials_exception = HTTPException(
|
||||
status_code=401,
|
||||
detail="Invalid credentials",
|
||||
detail="Invalid credentials currently",
|
||||
headers={"WWW-Authenticate": "Bearer"},
|
||||
)
|
||||
try:
|
||||
|
||||
@ -30,7 +30,7 @@ class Base(DeclarativeBase):
|
||||
|
||||
def init_db():
|
||||
#Base.metadata.drop_all(engine) # Veritabanını her başlangıcta siler burayada dikkat !!!!!!!!
|
||||
Base.metadata.create_all(bind=engine)
|
||||
Base.metadata.create_all(bind=engine) # Veritabanını oluşturur
|
||||
|
||||
# Session dependency (FastAPI için)
|
||||
def get_session_db():
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from typing import Annotated
|
||||
|
||||
from sqlalchemy import DateTime
|
||||
from pydantic import BaseModel
|
||||
from fastapi import Depends
|
||||
@ -9,10 +8,7 @@ from sqlalchemy import ForeignKey, Column, Integer, String, Float
|
||||
from sqlalchemy.dialects.postgresql import ARRAY
|
||||
from ..config import Base, get_session_db
|
||||
from typing import TYPE_CHECKING
|
||||
from ..auth.models import Role, Status, UserBase
|
||||
|
||||
####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
from ..auth.models import DBUser # -> tam burda bir hata var circle import yaparken karışıyor nasıl çözülecek bilmiyorum
|
||||
from ..auth.models import Role, Status, UserBase, DBUser
|
||||
|
||||
|
||||
class UserProfileBase(UserBase):
|
||||
@ -28,10 +24,11 @@ class UserProfilePublic(UserProfileBase):
|
||||
pass
|
||||
|
||||
class UserProfilePrivate(UserProfilePublic):
|
||||
collection : list[str] | None = None
|
||||
#collection : list[str] | None = None
|
||||
role : Role | None = None
|
||||
status : Status | None = None
|
||||
follow_user : list[int] | None = None
|
||||
items : list['Item'] | None = None
|
||||
|
||||
|
||||
|
||||
@ -46,6 +43,15 @@ class BaseItem(BaseModel):
|
||||
class ItemCreate(BaseItem): # item oluşturma için ekstra bir ihtiyaci olmaz
|
||||
pass
|
||||
|
||||
|
||||
class Item(BaseItem):
|
||||
item_id : int | None = None
|
||||
user_id : int | None = None
|
||||
item_score : float | None = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True #sqlalchemy ile pydantic arasında geçiş yapabilmek için kullanılır
|
||||
|
||||
##### 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
|
||||
@ -71,20 +77,20 @@ class Items(Base):
|
||||
|
||||
'''
|
||||
'''
|
||||
def is_user_exsist(username : str, session : Annotated[Session, Depends(get_session_db)]) -> bool | UserProfilePublic:
|
||||
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[UserProfilePublic]:
|
||||
def all_users(session: Annotated[Session, Depends(get_session_db)]) -> list[UserProfilePrivate]:
|
||||
users = session.query(DBUser).all()
|
||||
|
||||
return [UserProfilePublic(
|
||||
return [UserProfilePrivate(
|
||||
username=user.username,
|
||||
bio=user.bio,
|
||||
created_date=user.created_date,
|
||||
items=user.items,
|
||||
items = [Item.model_validate(item) for item in user.items],
|
||||
collections=user.collections,
|
||||
role=user.role,
|
||||
status=user.status
|
||||
@ -102,7 +108,6 @@ def add_Item_user(
|
||||
item_location=item.item_location,
|
||||
item_type=item.item_type,
|
||||
item_content=item.item_content,
|
||||
item_score=item.item_score,
|
||||
item_created_date=item.item_created_date
|
||||
)
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from .models import ItemCreate, UserProfileBase, UserProfileID, UserProfilePrivate, UserProfilePublic, add_Item_user, all_users, is_user_exsist
|
||||
from .models import ItemCreate, UserProfileBase, UserProfileID, UserProfilePrivate, UserProfilePublic, add_Item_user, all_users, is_user_exsist_get
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
from ..config import get_session_db
|
||||
@ -13,7 +13,7 @@ router = APIRouter(
|
||||
)
|
||||
|
||||
@router.get('/all_profiles')
|
||||
async def get_user_profile(session: Annotated[Session, Depends(get_session_db)]) -> list[UserProfilePublic]:
|
||||
async def get_user_profile(session: Annotated[Session, Depends(get_session_db)]) -> list[UserProfilePrivate]:
|
||||
|
||||
return all_users(session=session)
|
||||
|
||||
@ -24,7 +24,7 @@ async def get_user_profile_by_username(
|
||||
session: Annotated[Session, Depends(get_session_db)],
|
||||
) -> UserProfilePublic | dict:
|
||||
|
||||
user : UserProfilePublic = is_user_exsist(username, session)
|
||||
user : UserProfilePublic = is_user_exsist_get(username, session)
|
||||
if user is None:
|
||||
return {"error": "User not found"}
|
||||
|
||||
@ -32,10 +32,11 @@ async def get_user_profile_by_username(
|
||||
|
||||
@router.get('/profile/me')
|
||||
async def get_user_profile_me(
|
||||
current_user: Annotated[UserProfilePrivate, Depends(get_current_active_user)] #dependtek kaynaklı UserPublic doner
|
||||
current_user: Annotated[UserProfilePrivate, Depends(get_current_active_user)],
|
||||
session : Annotated[Session, Depends(get_session_db)], #dependtek kaynaklı UserPublic doner
|
||||
) -> UserProfilePrivate:
|
||||
|
||||
return current_user
|
||||
return is_user_exsist_get(current_user.username, session)
|
||||
|
||||
|
||||
@router.post('/create')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user