common.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package v1
  2. import (
  3. "encoding/base64"
  4. "github.com/pkg/errors"
  5. "google.golang.org/protobuf/proto"
  6. v1pb "github.com/usememos/memos/proto/gen/api/v1"
  7. "github.com/usememos/memos/store"
  8. )
  9. const (
  10. // DefaultPageSize is the default page size for requests.
  11. DefaultPageSize = 10
  12. )
  13. func convertStateFromStore(rowStatus store.RowStatus) v1pb.State {
  14. switch rowStatus {
  15. case store.Normal:
  16. return v1pb.State_NORMAL
  17. case store.Archived:
  18. return v1pb.State_ARCHIVED
  19. default:
  20. return v1pb.State_STATE_UNSPECIFIED
  21. }
  22. }
  23. func convertStateToStore(state v1pb.State) store.RowStatus {
  24. switch state {
  25. case v1pb.State_NORMAL:
  26. return store.Normal
  27. case v1pb.State_ARCHIVED:
  28. return store.Archived
  29. default:
  30. return store.Normal
  31. }
  32. }
  33. func getPageToken(limit int, offset int) (string, error) {
  34. return marshalPageToken(&v1pb.PageToken{
  35. Limit: int32(limit),
  36. Offset: int32(offset),
  37. })
  38. }
  39. func marshalPageToken(pageToken *v1pb.PageToken) (string, error) {
  40. b, err := proto.Marshal(pageToken)
  41. if err != nil {
  42. return "", errors.Wrapf(err, "failed to marshal page token")
  43. }
  44. return base64.StdEncoding.EncodeToString(b), nil
  45. }
  46. func unmarshalPageToken(s string, pageToken *v1pb.PageToken) error {
  47. b, err := base64.StdEncoding.DecodeString(s)
  48. if err != nil {
  49. return errors.Wrapf(err, "failed to decode page token")
  50. }
  51. if err := proto.Unmarshal(b, pageToken); err != nil {
  52. return errors.Wrapf(err, "failed to unmarshal page token")
  53. }
  54. return nil
  55. }
  56. func isSuperUser(user *store.User) bool {
  57. return user.Role == store.RoleAdmin || user.Role == store.RoleHost
  58. }