12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package v2
- import (
- "context"
- "time"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/status"
- "google.golang.org/protobuf/types/known/timestamppb"
- apiv2pb "github.com/usememos/memos/proto/gen/api/v2"
- "github.com/usememos/memos/store"
- )
- type ResourceService struct {
- apiv2pb.UnimplementedResourceServiceServer
- Store *store.Store
- }
- // NewResourceService creates a new ResourceService.
- func NewResourceService(store *store.Store) *ResourceService {
- return &ResourceService{
- Store: store,
- }
- }
- func (s *ResourceService) ListResources(ctx context.Context, _ *apiv2pb.ListResourcesRequest) (*apiv2pb.ListResourcesResponse, error) {
- user, err := getCurrentUser(ctx, s.Store)
- if err != nil {
- return nil, status.Errorf(codes.Internal, "failed to get current user: %v", err)
- }
- resources, err := s.Store.ListResources(ctx, &store.FindResource{
- CreatorID: &user.ID,
- HasRelatedMemo: true,
- })
- if err != nil {
- return nil, status.Errorf(codes.Internal, "failed to list resources: %v", err)
- }
- response := &apiv2pb.ListResourcesResponse{}
- for _, resource := range resources {
- response.Resources = append(response.Resources, convertResourceFromStore(resource))
- }
- return response, nil
- }
- func convertResourceFromStore(resource *store.Resource) *apiv2pb.Resource {
- return &apiv2pb.Resource{
- Id: resource.ID,
- CreatedTs: timestamppb.New(time.Unix(resource.CreatedTs, 0)),
- Filename: resource.Filename,
- ExternalLink: resource.ExternalLink,
- Type: resource.Type,
- Size: resource.Size,
- RelatedMemoId: resource.RelatedMemoID,
- }
- }
|