generated _collections class
This commit is contained in:
parent
842c127817
commit
938f950646
6 changed files with 132 additions and 13 deletions
|
|
@ -1,11 +1,69 @@
|
|||
from datetime import datetime, timedelta, timezone
|
||||
from ..auth.models import UserBase
|
||||
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 UserProfile(UserBase):
|
||||
class UserProfileBase(UserBase):
|
||||
bio : str | None = None
|
||||
created_date : datetime | None = None
|
||||
collections : list[str] | None = None
|
||||
items :list[str] | 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]
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
from .models import UserProfile
|
||||
from .models import UserProfileBase, UserProfileID, UserProfilePrivate, UserProfilePublic, all_users, is_user_exsist
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
from ..config import get_session_db
|
||||
from typing import Annotated
|
||||
from ..auth.models import get_current_active_user
|
||||
|
||||
|
|
@ -10,9 +12,37 @@ router = APIRouter(
|
|||
dependencies=[],
|
||||
)
|
||||
|
||||
@router.get('/profile', response_model=UserProfile)
|
||||
async def get_user_profile(
|
||||
current_user: Annotated[UserProfile, Depends(get_current_active_user)]
|
||||
) -> UserProfile:
|
||||
@router.get('/all_profiles')
|
||||
async def get_user_profile(session: Annotated[Session, Depends(get_session_db)]) -> list[UserProfilePublic]:
|
||||
|
||||
return current_user
|
||||
return all_users(session=session)
|
||||
|
||||
|
||||
@router.get('/profile/{username}')
|
||||
async def get_user_profile_by_username(
|
||||
username: str,
|
||||
session: Annotated[Session, Depends(get_session_db)],
|
||||
) -> UserProfilePublic | dict:
|
||||
|
||||
user : UserProfilePublic = is_user_exsist(username, session)
|
||||
if user is None:
|
||||
return {"error": "User not found"}
|
||||
|
||||
return user
|
||||
|
||||
@router.get('/profile/me')
|
||||
async def get_user_profile_me(
|
||||
current_user: Annotated[UserProfilePrivate, Depends(get_current_active_user)] #dependtek kaynaklı UserPublic doner
|
||||
) -> UserProfilePrivate:
|
||||
|
||||
return current_user
|
||||
|
||||
|
||||
@router.post('/create')
|
||||
async def create_user_profile(
|
||||
user : Annotated[UserProfileID, Depends(get_current_active_user)],
|
||||
session: Annotated[Session, Depends(get_session_db)],
|
||||
) -> UserProfileBase:
|
||||
|
||||
return user
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue