Merge pull request #11 from nightbug-xx/codex/add-from_user_email-to-response

Add user emails to friend request listings
This commit is contained in:
nightbug-xx 2025-06-10 10:12:10 +09:00 committed by GitHub
commit 392c71f630
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 46 additions and 9 deletions

View File

@ -18,6 +18,8 @@ class FriendRequestResponse(BaseModel):
id: int
from_user_id: int
to_user_id: int
from_user_email: str | None = None
to_user_email: str | None = None
status: FriendRequestStatus
created_at: datetime
updated_at: datetime

View File

@ -1,4 +1,5 @@
from sqlalchemy.orm import Session
from sqlalchemy.orm import Session, aliased
from sqlalchemy import select
from app.models.friend import FriendRequest, Friend, FriendRequestStatus
from app.models.user import User
from app.models.character import Character, CharacterHomework
@ -44,17 +45,51 @@ def send_friend_request(db: Session, from_user_id: int, to_user_email: str):
def get_received_requests(db: Session, user_id: int):
return db.query(FriendRequest).filter(
FriendRequest.to_user_id == user_id,
FriendRequest.status == FriendRequestStatus.pending
).all()
sender = aliased(User)
receiver = aliased(User)
stmt = (
select(
FriendRequest.id,
FriendRequest.from_user_id,
FriendRequest.to_user_id,
sender.email.label("from_user_email"),
receiver.email.label("to_user_email"),
FriendRequest.status,
FriendRequest.created_at,
FriendRequest.updated_at,
)
.join(sender, FriendRequest.from_user_id == sender.id)
.join(receiver, FriendRequest.to_user_id == receiver.id)
.where(
FriendRequest.to_user_id == user_id,
FriendRequest.status == FriendRequestStatus.pending,
)
)
return db.execute(stmt).mappings().all()
def get_sent_requests(db: Session, user_id: int):
return db.query(FriendRequest).filter(
FriendRequest.from_user_id == user_id,
FriendRequest.status == FriendRequestStatus.pending
).all()
sender = aliased(User)
receiver = aliased(User)
stmt = (
select(
FriendRequest.id,
FriendRequest.from_user_id,
FriendRequest.to_user_id,
sender.email.label("from_user_email"),
receiver.email.label("to_user_email"),
FriendRequest.status,
FriendRequest.created_at,
FriendRequest.updated_at,
)
.join(sender, FriendRequest.from_user_id == sender.id)
.join(receiver, FriendRequest.to_user_id == receiver.id)
.where(
FriendRequest.from_user_id == user_id,
FriendRequest.status == FriendRequestStatus.pending,
)
)
return db.execute(stmt).mappings().all()
def cancel_sent_request(db: Session, request_id: int, user_id: int):