MCPcopy Index your code
hub / github.com/apache/answer / GetQuestionPage

Method GetQuestionPage

internal/service/content/question_service.go:1470–1530  ·  view source on GitHub ↗

GetQuestionPage query questions page

(ctx context.Context, req *schema.QuestionPageReq)

Source from the content-addressed store, hash-verified

1468
1469// GetQuestionPage query questions page
1470func (qs *QuestionService) GetQuestionPage(ctx context.Context, req *schema.QuestionPageReq) (
1471 questions []*schema.QuestionPageResp, total int64, err error) {
1472 questions = make([]*schema.QuestionPageResp, 0)
1473 // query by user role
1474 showHidden := false
1475 if req.LoginUserID != "" && req.UserIDBeSearched != "" {
1476 showHidden = req.LoginUserID == req.UserIDBeSearched
1477 if !showHidden {
1478 userRole, err := qs.userRoleRelService.GetUserRole(ctx, req.LoginUserID)
1479 if err != nil {
1480 return nil, 0, err
1481 }
1482 showHidden = userRole == role.RoleAdminID || userRole == role.RoleModeratorID
1483 }
1484 }
1485 // query by tag condition
1486 var tagIDs = make([]string, 0)
1487 if len(req.Tag) > 0 {
1488 tagInfo, exist, err := qs.tagCommon.GetTagBySlugName(ctx, strings.ToLower(req.Tag))
1489 if err != nil {
1490 return nil, 0, err
1491 }
1492 if exist {
1493 synTagIds, err := qs.tagCommon.GetTagIDsByMainTagID(ctx, tagInfo.ID)
1494 if err != nil {
1495 return nil, 0, err
1496 }
1497 tagIDs = append(tagIDs, synTagIds...)
1498 tagIDs = append(tagIDs, tagInfo.ID)
1499 } else {
1500 return questions, 0, nil
1501 }
1502 }
1503
1504 // query by user condition
1505 if req.Username != "" {
1506 userinfo, exist, err := qs.userCommon.GetUserBasicInfoByUserName(ctx, req.Username)
1507 if err != nil {
1508 return nil, 0, err
1509 }
1510 if !exist {
1511 return questions, 0, nil
1512 }
1513 req.UserIDBeSearched = userinfo.ID
1514 }
1515
1516 if req.OrderCond == schema.QuestionOrderCondHot {
1517 req.InDays = schema.HotInDays
1518 }
1519
1520 questionList, total, err := qs.questionRepo.GetQuestionPage(ctx, req.Page, req.PageSize,
1521 tagIDs, req.UserIDBeSearched, req.OrderCond, req.InDays, showHidden, req.ShowPending)
1522 if err != nil {
1523 return nil, 0, err
1524 }
1525 questions, err = qs.questioncommon.FormatQuestionsPage(ctx, questionList, req.LoginUserID, req.OrderCond)
1526 if err != nil {
1527 return nil, 0, err

Callers 3

PersonalQuestionPageMethod · 0.95
SearchUserTopListMethod · 0.95
SimilarQuestionMethod · 0.95

Calls 6

GetUserRoleMethod · 0.80
GetTagIDsByMainTagIDMethod · 0.80
FormatQuestionsPageMethod · 0.80
GetTagBySlugNameMethod · 0.65
GetQuestionPageMethod · 0.65

Tested by

no test coverage detected