MCPcopy Create free account
hub / github.com/bytebase/bytebase / UndeleteProject

Method UndeleteProject

backend/api/v1/project_service.go:442–464  ·  view source on GitHub ↗

UndeleteProject undeletes a project.

(ctx context.Context, req *connect.Request[v1pb.UndeleteProjectRequest])

Source from the content-addressed store, hash-verified

440
441// UndeleteProject undeletes a project.
442func (s *ProjectService) UndeleteProject(ctx context.Context, req *connect.Request[v1pb.UndeleteProjectRequest]) (*connect.Response[v1pb.Project], error) {
443 project, err := s.getProjectMessage(ctx, req.Msg.Name)
444 if err != nil {
445 return nil, err
446 }
447 // Idempotent: if already active, return the project
448 if !project.Deleted {
449 return connect.NewResponse(convertToProject(project)), nil
450 }
451
452 if err := s.store.UpdateProjects(ctx, &store.UpdateProjectMessage{
453 ResourceID: project.ResourceID,
454 Workspace: project.Workspace,
455 Delete: &undeletePatch,
456 }); err != nil {
457 return nil, connect.NewError(connect.CodeInternal, err)
458 }
459 project, err = s.store.GetProject(ctx, &store.FindProjectMessage{Workspace: common.GetWorkspaceIDFromContext(ctx), ResourceID: &project.ResourceID})
460 if err != nil {
461 return nil, connect.NewError(connect.CodeInternal, err)
462 }
463 return connect.NewResponse(convertToProject(project)), nil
464}
465
466// BatchDeleteProjects deletes multiple projects in batch.
467func (s *ProjectService) BatchDeleteProjects(ctx context.Context, request *connect.Request[v1pb.BatchDeleteProjectsRequest]) (*connect.Response[emptypb.Empty], error) {

Callers

nothing calls this directly

Calls 5

getProjectMessageMethod · 0.95
convertToProjectFunction · 0.85
UpdateProjectsMethod · 0.80
GetProjectMethod · 0.65

Tested by

no test coverage detected