activity_service .go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package v2
  2. import (
  3. "context"
  4. "time"
  5. "google.golang.org/grpc/codes"
  6. "google.golang.org/grpc/status"
  7. "google.golang.org/protobuf/types/known/timestamppb"
  8. apiv2pb "github.com/usememos/memos/proto/gen/api/v2"
  9. storepb "github.com/usememos/memos/proto/gen/store"
  10. "github.com/usememos/memos/store"
  11. )
  12. func (s *APIV2Service) GetActivity(ctx context.Context, request *apiv2pb.GetActivityRequest) (*apiv2pb.GetActivityResponse, error) {
  13. activity, err := s.Store.GetActivity(ctx, &store.FindActivity{
  14. ID: &request.Id,
  15. })
  16. if err != nil {
  17. return nil, status.Errorf(codes.Internal, "failed to get activity: %v", err)
  18. }
  19. activityMessage, err := s.convertActivityFromStore(ctx, activity)
  20. if err != nil {
  21. return nil, status.Errorf(codes.Internal, "failed to convert activity from store: %v", err)
  22. }
  23. return &apiv2pb.GetActivityResponse{
  24. Activity: activityMessage,
  25. }, nil
  26. }
  27. func (*APIV2Service) convertActivityFromStore(_ context.Context, activity *store.Activity) (*apiv2pb.Activity, error) {
  28. return &apiv2pb.Activity{
  29. Id: activity.ID,
  30. CreatorId: activity.CreatorID,
  31. Type: activity.Type.String(),
  32. Level: activity.Level.String(),
  33. CreateTime: timestamppb.New(time.Unix(activity.CreatedTs, 0)),
  34. Payload: convertActivityPayloadFromStore(activity.Payload),
  35. }, nil
  36. }
  37. func convertActivityPayloadFromStore(payload *storepb.ActivityPayload) *apiv2pb.ActivityPayload {
  38. v2Payload := &apiv2pb.ActivityPayload{}
  39. if payload.MemoComment != nil {
  40. v2Payload.MemoComment = &apiv2pb.ActivityMemoCommentPayload{
  41. MemoId: payload.MemoComment.MemoId,
  42. RelatedMemoId: payload.MemoComment.RelatedMemoId,
  43. }
  44. }
  45. if payload.VersionUpdate != nil {
  46. v2Payload.VersionUpdate = &apiv2pb.ActivityVersionUpdatePayload{
  47. Version: payload.VersionUpdate.Version,
  48. }
  49. }
  50. return v2Payload
  51. }