친구 작업중

This commit is contained in:
SR07 2025-06-09 17:53:38 +09:00
parent a240562564
commit 86845c81c5
5 changed files with 25 additions and 15 deletions

View File

@ -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 에러 감지!")

View File

@ -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
View 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

View File

@ -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")

View File

@ -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")