CreateSheet creates a new sheet.
(ctx context.Context, request *connect.Request[v1pb.CreateSheetRequest])
| 28 | |
| 29 | // CreateSheet creates a new sheet. |
| 30 | func (s *SheetService) CreateSheet(ctx context.Context, request *connect.Request[v1pb.CreateSheetRequest]) (*connect.Response[v1pb.Sheet], error) { |
| 31 | if request.Msg.Sheet == nil { |
| 32 | return nil, connect.NewError(connect.CodeInvalidArgument, errors.Errorf("sheet must be set")) |
| 33 | } |
| 34 | |
| 35 | projectResourceID, err := common.GetProjectID(request.Msg.Parent) |
| 36 | if err != nil { |
| 37 | return nil, connect.NewError(connect.CodeInvalidArgument, err) |
| 38 | } |
| 39 | project, err := s.store.GetProject(ctx, &store.FindProjectMessage{ |
| 40 | Workspace: common.GetWorkspaceIDFromContext(ctx), |
| 41 | ResourceID: &projectResourceID, |
| 42 | }) |
| 43 | if err != nil { |
| 44 | return nil, connect.NewError(connect.CodeInternal, errors.Wrapf(err, "failed to get project with resource id %q", projectResourceID)) |
| 45 | } |
| 46 | if project == nil { |
| 47 | return nil, connect.NewError(connect.CodeNotFound, errors.Errorf("project with resource id %q not found", projectResourceID)) |
| 48 | } |
| 49 | if project.Deleted { |
| 50 | return nil, connect.NewError(connect.CodeNotFound, errors.Errorf("project with resource id %q had deleted", projectResourceID)) |
| 51 | } |
| 52 | |
| 53 | storeSheetCreate := convertToStoreSheetMessage(request.Msg.Sheet) |
| 54 | sheets, err := s.store.CreateSheets(ctx, storeSheetCreate) |
| 55 | if err != nil { |
| 56 | return nil, connect.NewError(connect.CodeInternal, errors.Wrapf(err, "failed to create sheet")) |
| 57 | } |
| 58 | sheet := sheets[0] |
| 59 | v1pbSheet := convertToAPISheetMessage(project.ResourceID, sheet) |
| 60 | return connect.NewResponse(v1pbSheet), nil |
| 61 | } |
| 62 | |
| 63 | func (s *SheetService) BatchCreateSheets(ctx context.Context, request *connect.Request[v1pb.BatchCreateSheetsRequest]) (*connect.Response[v1pb.BatchCreateSheetsResponse], error) { |
| 64 | if len(request.Msg.Requests) == 0 { |
nothing calls this directly
no test coverage detected