feat: fix the response lgoin user data
This commit is contained in:
parent
82faab1cc5
commit
55f9e15468
|
@ -77,6 +77,7 @@ class Container(containers.DeclarativeContainer):
|
|||
subject_repository,
|
||||
answer_repository,
|
||||
)
|
||||
|
||||
answer_service = providers.Factory(
|
||||
AnswerService,
|
||||
answer_repository,
|
||||
|
|
|
@ -49,9 +49,16 @@ class UserMapper:
|
|||
email=user.email,
|
||||
name=user.name,
|
||||
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,
|
||||
phone=user.phone,
|
||||
locale=user.locale,
|
||||
created_at=(
|
||||
DatetimeUtil.to_string(user.created_at, fmt="%d-%m-%Y")
|
||||
if user.created_at
|
||||
else None
|
||||
),
|
||||
)
|
||||
|
|
|
@ -109,6 +109,14 @@ class QuizRepository:
|
|||
)
|
||||
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(
|
||||
self, subject_ids: List[str], limit: int = 3
|
||||
) -> List[QuizEntity]:
|
||||
|
|
|
@ -12,3 +12,4 @@ class LoginResponseSchema(BaseModel):
|
|||
pic_url: Optional[str] = None
|
||||
phone: Optional[str] = None
|
||||
locale: Optional[str] = None
|
||||
created_at: Optional[str] = None
|
||||
|
|
|
@ -123,6 +123,9 @@ class QuizService:
|
|||
return result
|
||||
|
||||
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)
|
||||
|
||||
if not user_answer:
|
||||
|
@ -139,6 +142,7 @@ class QuizService:
|
|||
quiz_data = self.quiz_repository.get_random_quizzes_by_subjects(
|
||||
subject_ids=quiz_subjects, limit=limit
|
||||
)
|
||||
|
||||
result = []
|
||||
for quiz in quiz_data:
|
||||
author = self.user_repostory.get_user_by_id(user_id=quiz.author_id)
|
||||
|
|
Loading…
Reference in New Issue