feat: fix the response lgoin user data

This commit is contained in:
akhdanre 2025-05-25 22:06:25 +07:00
parent 82faab1cc5
commit 55f9e15468
5 changed files with 33 additions and 12 deletions

View File

@ -77,6 +77,7 @@ class Container(containers.DeclarativeContainer):
subject_repository, subject_repository,
answer_repository, answer_repository,
) )
answer_service = providers.Factory( answer_service = providers.Factory(
AnswerService, AnswerService,
answer_repository, answer_repository,

View File

@ -49,9 +49,16 @@ class UserMapper:
email=user.email, email=user.email,
name=user.name, name=user.name,
birth_date=( birth_date=(
DatetimeUtil.to_string(user.birth_date) if user.birth_date else None DatetimeUtil.to_string(user.birth_date, fmt="%d-%m-%Y")
if user.birth_date
else None
), ),
pic_url=user.pic_url, pic_url=user.pic_url,
phone=user.phone, phone=user.phone,
locale=user.locale, locale=user.locale,
created_at=(
DatetimeUtil.to_string(user.created_at, fmt="%d-%m-%Y")
if user.created_at
else None
),
) )

View File

@ -109,6 +109,14 @@ class QuizRepository:
) )
return [QuizEntity(**doc) for doc in cursor] return [QuizEntity(**doc) for doc in cursor]
def get_random_quizzes(self, limit: int = 3) -> List[QuizEntity]:
pipeline = [
{"$match": {"is_public": True}},
{"$sample": {"size": limit}},
]
cursor = self.collection.aggregate(pipeline)
return [QuizEntity(**doc) for doc in cursor]
def get_random_quizzes_by_subjects( def get_random_quizzes_by_subjects(
self, subject_ids: List[str], limit: int = 3 self, subject_ids: List[str], limit: int = 3
) -> List[QuizEntity]: ) -> List[QuizEntity]:

View File

@ -12,3 +12,4 @@ class LoginResponseSchema(BaseModel):
pic_url: Optional[str] = None pic_url: Optional[str] = None
phone: Optional[str] = None phone: Optional[str] = None
locale: Optional[str] = None locale: Optional[str] = None
created_at: Optional[str] = None

View File

@ -123,6 +123,9 @@ class QuizService:
return result return result
def get_quiz_recommendation(self, user_id: str, page: int, limit: int): def get_quiz_recommendation(self, user_id: str, page: int, limit: int):
if not user_id:
quiz_data = self.quiz_repository.get_random_quizzes(limit=limit)
else:
user_answer = self.answer_repository.get_by_user(user_id=user_id) user_answer = self.answer_repository.get_by_user(user_id=user_id)
if not user_answer: if not user_answer:
@ -139,6 +142,7 @@ class QuizService:
quiz_data = self.quiz_repository.get_random_quizzes_by_subjects( quiz_data = self.quiz_repository.get_random_quizzes_by_subjects(
subject_ids=quiz_subjects, limit=limit subject_ids=quiz_subjects, limit=limit
) )
result = [] result = []
for quiz in quiz_data: for quiz in quiz_data:
author = self.user_repostory.get_user_by_id(user_id=quiz.author_id) author = self.user_repostory.get_user_by_id(user_id=quiz.author_id)