common.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package v2
  2. import (
  3. "context"
  4. "encoding/base64"
  5. "github.com/pkg/errors"
  6. "google.golang.org/protobuf/proto"
  7. apiv2pb "github.com/usememos/memos/proto/gen/api/v2"
  8. "github.com/usememos/memos/store"
  9. )
  10. func convertRowStatusFromStore(rowStatus store.RowStatus) apiv2pb.RowStatus {
  11. switch rowStatus {
  12. case store.Normal:
  13. return apiv2pb.RowStatus_ACTIVE
  14. case store.Archived:
  15. return apiv2pb.RowStatus_ARCHIVED
  16. default:
  17. return apiv2pb.RowStatus_ROW_STATUS_UNSPECIFIED
  18. }
  19. }
  20. func convertRowStatusToStore(rowStatus apiv2pb.RowStatus) store.RowStatus {
  21. switch rowStatus {
  22. case apiv2pb.RowStatus_ACTIVE:
  23. return store.Normal
  24. case apiv2pb.RowStatus_ARCHIVED:
  25. return store.Archived
  26. default:
  27. return store.Normal
  28. }
  29. }
  30. func getCurrentUser(ctx context.Context, s *store.Store) (*store.User, error) {
  31. username, ok := ctx.Value(usernameContextKey).(string)
  32. if !ok {
  33. return nil, nil
  34. }
  35. user, err := s.GetUser(ctx, &store.FindUser{
  36. Username: &username,
  37. })
  38. if err != nil {
  39. return nil, err
  40. }
  41. return user, nil
  42. }
  43. func getPageToken(limit int, offset int) (string, error) {
  44. return marshalPageToken(&apiv2pb.PageToken{
  45. Limit: int32(limit),
  46. Offset: int32(offset),
  47. })
  48. }
  49. func marshalPageToken(pageToken *apiv2pb.PageToken) (string, error) {
  50. b, err := proto.Marshal(pageToken)
  51. if err != nil {
  52. return "", errors.Wrapf(err, "failed to marshal page token")
  53. }
  54. return base64.StdEncoding.EncodeToString(b), nil
  55. }
  56. func unmarshalPageToken(s string, pageToken *apiv2pb.PageToken) error {
  57. b, err := base64.StdEncoding.DecodeString(s)
  58. if err != nil {
  59. return errors.Wrapf(err, "failed to decode page token")
  60. }
  61. if err := proto.Unmarshal(b, pageToken); err != nil {
  62. return errors.Wrapf(err, "failed to unmarshal page token")
  63. }
  64. return nil
  65. }