getOneObjectDetail get object detail
(ctx context.Context, revisionID string)
| 370 | |
| 371 | // getOneObjectDetail get object detail |
| 372 | func (as *ActivityService) getOneObjectDetail(ctx context.Context, revisionID string) ( |
| 373 | resp *schema.ObjectTimelineDetail, err error) { |
| 374 | resp = &schema.ObjectTimelineDetail{Tags: make([]*schema.ObjectTimelineTag, 0)} |
| 375 | |
| 376 | // if request revision is 0, return null object detail. |
| 377 | if revisionID == "0" { |
| 378 | return nil, nil |
| 379 | } |
| 380 | |
| 381 | revision, err := as.revisionService.GetRevision(ctx, revisionID) |
| 382 | if err != nil { |
| 383 | log.Warn(err) |
| 384 | return nil, nil |
| 385 | } |
| 386 | objInfo, err := as.objectInfoService.GetInfo(ctx, revision.ObjectID) |
| 387 | if err != nil { |
| 388 | return nil, err |
| 389 | } |
| 390 | |
| 391 | switch objInfo.ObjectType { |
| 392 | case constant.QuestionObjectType: |
| 393 | data := &entity.QuestionWithTagsRevision{} |
| 394 | if err = json.Unmarshal([]byte(revision.Content), data); err != nil { |
| 395 | log.Errorf("revision parsing error %s", err) |
| 396 | return resp, nil |
| 397 | } |
| 398 | for _, tag := range data.Tags { |
| 399 | resp.Tags = append(resp.Tags, &schema.ObjectTimelineTag{ |
| 400 | SlugName: tag.SlugName, |
| 401 | DisplayName: tag.DisplayName, |
| 402 | MainTagSlugName: tag.MainTagSlugName, |
| 403 | Recommend: tag.Recommend, |
| 404 | Reserved: tag.Reserved, |
| 405 | }) |
| 406 | } |
| 407 | resp.Title = data.Title |
| 408 | resp.OriginalText = data.OriginalText |
| 409 | case constant.AnswerObjectType: |
| 410 | data := &entity.Answer{} |
| 411 | if err = json.Unmarshal([]byte(revision.Content), data); err != nil { |
| 412 | log.Errorf("revision parsing error %s", err) |
| 413 | return resp, nil |
| 414 | } |
| 415 | resp.Title = objInfo.Title // answer show question title |
| 416 | resp.OriginalText = data.OriginalText |
| 417 | case constant.TagObjectType: |
| 418 | data := &entity.Tag{} |
| 419 | if err = json.Unmarshal([]byte(revision.Content), data); err != nil { |
| 420 | log.Errorf("revision parsing error %s", err) |
| 421 | return resp, nil |
| 422 | } |
| 423 | resp.Title = data.DisplayName |
| 424 | resp.OriginalText = data.OriginalText |
| 425 | resp.SlugName = data.SlugName |
| 426 | resp.MainTagSlugName = data.MainTagSlugName |
| 427 | default: |
| 428 | log.Errorf("unknown object type %s", objInfo.ObjectType) |
| 429 | } |
no test coverage detected