친구 작업중
This commit is contained in:
parent
a240562564
commit
86845c81c5
@ -10,6 +10,8 @@ engine = create_engine(settings.database_url, echo=True, future=True)
|
||||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||
Base = declarative_base()
|
||||
|
||||
import app.models # ✅ 그대로 유지
|
||||
|
||||
@event.listens_for(Engine, "handle_error")
|
||||
def receive_handle_error(exception_context):
|
||||
print("🔥 SQLAlchemy DB 에러 감지!")
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#pp/main.py
|
||||
from app.models import User, Character, HomeworkType, Friend, FriendRequest # 👈 명시적 import!
|
||||
from fastapi import FastAPI, Request, Depends
|
||||
from fastapi.openapi.docs import get_swagger_ui_html
|
||||
from fastapi.openapi.utils import get_openapi
|
||||
@ -6,7 +7,6 @@ from app.core.deps import get_current_user
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.security import OAuth2PasswordBearer
|
||||
import traceback
|
||||
from app.models import user, friend, character, homework
|
||||
|
||||
from app.api import user, auth, character, homework, character_homework, dashboard, friend
|
||||
|
||||
|
||||
5
app/models/__init__.py
Normal file
5
app/models/__init__.py
Normal file
@ -0,0 +1,5 @@
|
||||
# app/models/__init__.py
|
||||
from app.models.user import User
|
||||
from app.models.character import Character
|
||||
from app.models.homework import HomeworkType
|
||||
from app.models.friend import Friend, FriendRequest
|
||||
@ -3,7 +3,6 @@ from sqlalchemy.orm import relationship
|
||||
from datetime import datetime
|
||||
from app.core.database import Base
|
||||
import enum
|
||||
from app.models.user import User
|
||||
|
||||
class FriendRequestStatus(enum.Enum):
|
||||
pending = "pending"
|
||||
@ -11,20 +10,19 @@ class FriendRequestStatus(enum.Enum):
|
||||
rejected = "rejected"
|
||||
cancelled = "cancelled"
|
||||
|
||||
|
||||
class FriendRequest(Base):
|
||||
__tablename__ = "friend_requests"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
from_user_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False)
|
||||
to_user_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False)
|
||||
from_user_id = Column(Integer, ForeignKey("users.id"))
|
||||
to_user_id = Column(Integer, ForeignKey("users.id"))
|
||||
status = Column(Enum(FriendRequestStatus), default=FriendRequestStatus.pending, nullable=False)
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.utcnow)
|
||||
|
||||
from_user = relationship(User, foreign_keys=[from_user_id])
|
||||
to_user = relationship(User, foreign_keys=[to_user_id])
|
||||
|
||||
# 🔽 문자열로 참조
|
||||
from_user = relationship("User", foreign_keys=[from_user_id], back_populates="sent_requests")
|
||||
to_user = relationship("User", foreign_keys=[to_user_id], back_populates="received_requests")
|
||||
|
||||
class Friend(Base):
|
||||
__tablename__ = "friends"
|
||||
@ -39,5 +37,5 @@ class Friend(Base):
|
||||
CheckConstraint("user_id_1 < user_id_2", name="check_user_order"),
|
||||
)
|
||||
|
||||
user1 = relationship(User, foreign_keys=[user_id_1])
|
||||
user2 = relationship(User, foreign_keys=[user_id_2])
|
||||
user1 = relationship("User", foreign_keys=[user_id_1], back_populates="friendships1")
|
||||
user2 = relationship("User", foreign_keys=[user_id_2], back_populates="friendships2")
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
# app/models/user.py
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy import Column, Integer, String, DateTime
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
from datetime import datetime
|
||||
from app.core.config import Base
|
||||
from app.core.database import Base
|
||||
|
||||
class User(Base):
|
||||
__tablename__ = "users"
|
||||
@ -15,5 +13,12 @@ class User(Base):
|
||||
created_at = Column(DateTime, server_default=func.now(), nullable=False)
|
||||
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), nullable=False)
|
||||
|
||||
characters = relationship("Character", back_populates="user")
|
||||
homework_types = relationship("HomeworkType", back_populates="user", cascade="all, delete")
|
||||
from app.models.character import Character
|
||||
characters = relationship(Character, back_populates="user")
|
||||
homework_types = relationship("HomeworkType", back_populates="user", cascade="all, delete")
|
||||
|
||||
# 🔽 문자열만 사용하고 foreign_keys 생략 (권장)
|
||||
sent_requests = relationship("FriendRequest", back_populates="from_user", foreign_keys="FriendRequest.from_user_id")
|
||||
received_requests = relationship("FriendRequest", back_populates="to_user", foreign_keys="FriendRequest.to_user_id")
|
||||
friendships1 = relationship("Friend", back_populates="user1", foreign_keys="Friend.user_id_1")
|
||||
friendships2 = relationship("Friend", back_populates="user2", foreign_keys="Friend.user_id_2")
|
||||
Loading…
x
Reference in New Issue
Block a user