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 id: int
from_user_id: int from_user_id: int
to_user_id: int to_user_id: int
from_user_email: str | None = None
to_user_email: str | None = None
status: FriendRequestStatus status: FriendRequestStatus
created_at: datetime created_at: datetime
updated_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.friend import FriendRequest, Friend, FriendRequestStatus
from app.models.user import User from app.models.user import User
from app.models.character import Character, CharacterHomework 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): def get_received_requests(db: Session, user_id: int):
return db.query(FriendRequest).filter( sender = aliased(User)
FriendRequest.to_user_id == user_id, receiver = aliased(User)
FriendRequest.status == FriendRequestStatus.pending stmt = (
).all() 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): def get_sent_requests(db: Session, user_id: int):
return db.query(FriendRequest).filter( sender = aliased(User)
FriendRequest.from_user_id == user_id, receiver = aliased(User)
FriendRequest.status == FriendRequestStatus.pending stmt = (
).all() 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): def cancel_sent_request(db: Session, request_id: int, user_id: int):