in internal/service/object_info/object_info.go [62:185]
func (os *ObjService) GetUnreviewedRevisionInfo(ctx context.Context, objectID string) (objInfo *schema.UnreviewedRevisionInfoInfo, err error) {
objectType, err := obj.GetObjectTypeStrByObjectID(objectID)
if err != nil {
return nil, err
}
switch objectType {
case constant.QuestionObjectType:
questionInfo, exist, err := os.questionRepo.GetQuestion(ctx, objectID)
if err != nil {
return nil, err
}
if !exist {
break
}
taglist, err := os.tagCommon.GetObjectEntityTag(ctx, objectID)
if err != nil {
return nil, err
}
os.tagCommon.TagsFormatRecommendAndReserved(ctx, taglist)
tags, err := os.tagCommon.TagFormat(ctx, taglist)
if err != nil {
return nil, err
}
objInfo = &schema.UnreviewedRevisionInfoInfo{
CreatedAt: questionInfo.CreatedAt.Unix(),
ObjectID: questionInfo.ID,
QuestionID: questionInfo.ID,
ObjectType: objectType,
ObjectCreatorUserID: questionInfo.UserID,
Title: questionInfo.Title,
Content: questionInfo.OriginalText,
Html: questionInfo.ParsedText,
AnswerCount: questionInfo.AnswerCount,
AnswerAccepted: !checker.IsNotZeroString(questionInfo.AcceptedAnswerID),
Tags: tags,
Status: questionInfo.Status,
ShowStatus: questionInfo.Show,
}
case constant.AnswerObjectType:
answerInfo, exist, err := os.answerRepo.GetAnswer(ctx, objectID)
if err != nil {
return nil, err
}
if !exist {
break
}
questionInfo, exist, err := os.questionRepo.GetQuestion(ctx, answerInfo.QuestionID)
if err != nil {
return nil, err
}
if !exist {
break
}
objInfo = &schema.UnreviewedRevisionInfoInfo{
CreatedAt: answerInfo.CreatedAt.Unix(),
ObjectID: answerInfo.ID,
QuestionID: answerInfo.QuestionID,
AnswerID: answerInfo.ID,
ObjectType: objectType,
ObjectCreatorUserID: answerInfo.UserID,
Title: questionInfo.Title,
Content: answerInfo.OriginalText,
Html: answerInfo.ParsedText,
Status: answerInfo.Status,
AnswerAccepted: questionInfo.AcceptedAnswerID == answerInfo.ID,
}
case constant.TagObjectType:
tagInfo, exist, err := os.tagRepo.GetTagByID(ctx, objectID, true)
if err != nil {
return nil, err
}
if !exist {
break
}
objInfo = &schema.UnreviewedRevisionInfoInfo{
CreatedAt: tagInfo.CreatedAt.Unix(),
ObjectID: tagInfo.ID,
ObjectType: objectType,
Title: tagInfo.SlugName,
Content: tagInfo.OriginalText,
Html: tagInfo.ParsedText,
Status: tagInfo.Status,
}
case constant.CommentObjectType:
commentInfo, exist, err := os.commentRepo.GetCommentWithoutStatus(ctx, objectID)
if err != nil {
return nil, err
}
if !exist {
break
}
objInfo = &schema.UnreviewedRevisionInfoInfo{
CreatedAt: commentInfo.CreatedAt.Unix(),
ObjectID: commentInfo.ID,
CommentID: commentInfo.ID,
ObjectType: objectType,
ObjectCreatorUserID: commentInfo.UserID,
Content: commentInfo.OriginalText,
Html: commentInfo.ParsedText,
Status: commentInfo.Status,
}
if len(commentInfo.QuestionID) > 0 {
questionInfo, exist, err := os.questionRepo.GetQuestion(ctx, commentInfo.QuestionID)
if err != nil {
return nil, err
}
if exist {
objInfo.QuestionID = questionInfo.ID
}
answerInfo, exist, err := os.answerRepo.GetAnswer(ctx, commentInfo.ObjectID)
if err != nil {
return nil, err
}
if exist {
objInfo.AnswerID = answerInfo.ID
}
}
}
if objInfo == nil {
err = errors.BadRequest(reason.ObjectNotFound)
}
return objInfo, err
}