친구 작업중
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)
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||||
Base = declarative_base()
|
Base = declarative_base()
|
||||||
|
|
||||||
|
import app.models # ✅ 그대로 유지
|
||||||
|
|
||||||
@event.listens_for(Engine, "handle_error")
|
@event.listens_for(Engine, "handle_error")
|
||||||
def receive_handle_error(exception_context):
|
def receive_handle_error(exception_context):
|
||||||
print("🔥 SQLAlchemy DB 에러 감지!")
|
print("🔥 SQLAlchemy DB 에러 감지!")
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
#pp/main.py
|
#pp/main.py
|
||||||
|
from app.models import User, Character, HomeworkType, Friend, FriendRequest # 👈 명시적 import!
|
||||||
from fastapi import FastAPI, Request, Depends
|
from fastapi import FastAPI, Request, Depends
|
||||||
from fastapi.openapi.docs import get_swagger_ui_html
|
from fastapi.openapi.docs import get_swagger_ui_html
|
||||||
from fastapi.openapi.utils import get_openapi
|
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.middleware.cors import CORSMiddleware
|
||||||
from fastapi.security import OAuth2PasswordBearer
|
from fastapi.security import OAuth2PasswordBearer
|
||||||
import traceback
|
import traceback
|
||||||
from app.models import user, friend, character, homework
|
|
||||||
|
|
||||||
from app.api import user, auth, character, homework, character_homework, dashboard, friend
|
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 datetime import datetime
|
||||||
from app.core.database import Base
|
from app.core.database import Base
|
||||||
import enum
|
import enum
|
||||||
from app.models.user import User
|
|
||||||
|
|
||||||
class FriendRequestStatus(enum.Enum):
|
class FriendRequestStatus(enum.Enum):
|
||||||
pending = "pending"
|
pending = "pending"
|
||||||
@ -11,20 +10,19 @@ class FriendRequestStatus(enum.Enum):
|
|||||||
rejected = "rejected"
|
rejected = "rejected"
|
||||||
cancelled = "cancelled"
|
cancelled = "cancelled"
|
||||||
|
|
||||||
|
|
||||||
class FriendRequest(Base):
|
class FriendRequest(Base):
|
||||||
__tablename__ = "friend_requests"
|
__tablename__ = "friend_requests"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True, index=True)
|
id = Column(Integer, primary_key=True, index=True)
|
||||||
from_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", ondelete="CASCADE"), nullable=False)
|
to_user_id = Column(Integer, ForeignKey("users.id"))
|
||||||
status = Column(Enum(FriendRequestStatus), default=FriendRequestStatus.pending, nullable=False)
|
status = Column(Enum(FriendRequestStatus), default=FriendRequestStatus.pending, nullable=False)
|
||||||
created_at = Column(DateTime, default=datetime.utcnow)
|
created_at = Column(DateTime, default=datetime.utcnow)
|
||||||
updated_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):
|
class Friend(Base):
|
||||||
__tablename__ = "friends"
|
__tablename__ = "friends"
|
||||||
@ -39,5 +37,5 @@ class Friend(Base):
|
|||||||
CheckConstraint("user_id_1 < user_id_2", name="check_user_order"),
|
CheckConstraint("user_id_1 < user_id_2", name="check_user_order"),
|
||||||
)
|
)
|
||||||
|
|
||||||
user1 = relationship(User, foreign_keys=[user_id_1])
|
user1 = relationship("User", foreign_keys=[user_id_1], back_populates="friendships1")
|
||||||
user2 = relationship(User, foreign_keys=[user_id_2])
|
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 import Column, Integer, String, DateTime
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
from sqlalchemy.sql import func
|
from sqlalchemy.sql import func
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from app.core.config import Base
|
from app.core.database import Base
|
||||||
|
|
||||||
class User(Base):
|
class User(Base):
|
||||||
__tablename__ = "users"
|
__tablename__ = "users"
|
||||||
@ -15,5 +13,12 @@ class User(Base):
|
|||||||
created_at = Column(DateTime, server_default=func.now(), nullable=False)
|
created_at = Column(DateTime, server_default=func.now(), nullable=False)
|
||||||
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), nullable=False)
|
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), nullable=False)
|
||||||
|
|
||||||
characters = relationship("Character", back_populates="user")
|
from app.models.character import Character
|
||||||
homework_types = relationship("HomeworkType", back_populates="user", cascade="all, delete")
|
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