SearchWorksheets returns a list of worksheets based on the search filters.
( ctx context.Context, req *connect.Request[v1pb.SearchWorksheetsRequest], )
| 129 | |
| 130 | // SearchWorksheets returns a list of worksheets based on the search filters. |
| 131 | func (s *WorksheetService) SearchWorksheets( |
| 132 | ctx context.Context, |
| 133 | req *connect.Request[v1pb.SearchWorksheetsRequest], |
| 134 | ) (*connect.Response[v1pb.SearchWorksheetsResponse], error) { |
| 135 | request := req.Msg |
| 136 | user, ok := GetUserFromContext(ctx) |
| 137 | if !ok { |
| 138 | return nil, connect.NewError(connect.CodeInternal, errors.Errorf("user not found")) |
| 139 | } |
| 140 | |
| 141 | projectID, err := common.GetProjectID(request.Parent) |
| 142 | if err != nil { |
| 143 | return nil, connect.NewError(connect.CodeInvalidArgument, err) |
| 144 | } |
| 145 | |
| 146 | worksheetFind := &store.FindWorkSheetMessage{ |
| 147 | ProjectIDs: []string{projectID}, |
| 148 | PrincipalEmail: user.Email, |
| 149 | } |
| 150 | |
| 151 | filterQ, err := store.GetListSheetFilter(ctx, s.store, user.Email, request.Filter) |
| 152 | if err != nil { |
| 153 | return nil, connect.NewError(connect.CodeInvalidArgument, err) |
| 154 | } |
| 155 | worksheetFind.FilterQ = filterQ |
| 156 | |
| 157 | worksheetList, err := s.store.ListWorkSheets(ctx, worksheetFind) |
| 158 | if err != nil { |
| 159 | return nil, connect.NewError(connect.CodeInternal, errors.Errorf("failed to list worksheets: %v", err)) |
| 160 | } |
| 161 | |
| 162 | var v1pbWorksheets []*v1pb.Worksheet |
| 163 | for _, worksheet := range worksheetList { |
| 164 | ok, err := s.canReadWorksheet(ctx, worksheet) |
| 165 | if err != nil { |
| 166 | return nil, connect.NewError(connect.CodeInternal, errors.Errorf("failed to check access with error: %v", err)) |
| 167 | } |
| 168 | if !ok { |
| 169 | slog.Warn("cannot access worksheet", slog.String("name", worksheet.Title)) |
| 170 | continue |
| 171 | } |
| 172 | v1pbWorksheet := convertToAPIWorksheetMessage(worksheet) |
| 173 | v1pbWorksheets = append(v1pbWorksheets, v1pbWorksheet) |
| 174 | } |
| 175 | return connect.NewResponse(&v1pb.SearchWorksheetsResponse{ |
| 176 | Worksheets: v1pbWorksheets, |
| 177 | }), nil |
| 178 | } |
| 179 | |
| 180 | // UpdateWorksheet updates a worksheet. |
| 181 | func (s *WorksheetService) UpdateWorksheet( |
nothing calls this directly
no test coverage detected