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

Function getProjectIDsSearchFilter

backend/api/v1/plan_service.go:134–164  ·  view source on GitHub ↗
(ctx context.Context, user *store.UserMessage, permission permission.Permission, iamManager *iam.Manager, stores *store.Store)

Source from the content-addressed store, hash-verified

132}
133
134func getProjectIDsSearchFilter(ctx context.Context, user *store.UserMessage, permission permission.Permission, iamManager *iam.Manager, stores *store.Store) (*[]string, error) {
135 workspaceID := common.GetWorkspaceIDFromContext(ctx)
136 projects, err := stores.ListProjects(ctx, &store.FindProjectMessage{Workspace: workspaceID})
137 if err != nil {
138 return nil, errors.Wrapf(err, "failed to list projects")
139 }
140
141 ok, err := iamManager.CheckPermission(ctx, permission, user, workspaceID)
142 if err != nil {
143 return nil, errors.Wrapf(err, "failed to check permission %q", permission)
144 }
145 if ok {
146 projectIDs := make([]string, 0, len(projects))
147 for _, project := range projects {
148 projectIDs = append(projectIDs, project.ResourceID)
149 }
150 return &projectIDs, nil
151 }
152
153 var projectIDs []string
154 for _, project := range projects {
155 ok, err := iamManager.CheckPermission(ctx, permission, user, workspaceID, project.ResourceID)
156 if err != nil {
157 return nil, errors.Wrapf(err, "failed to check permission %q", permission)
158 }
159 if ok {
160 projectIDs = append(projectIDs, project.ResourceID)
161 }
162 }
163 return &projectIDs, nil
164}
165
166// CreatePlan creates a new plan.
167func (s *PlanService) CreatePlan(ctx context.Context, request *connect.Request[v1pb.CreatePlanRequest]) (*connect.Response[v1pb.Plan], error) {

Callers 1

SearchIssuesMethod · 0.85

Calls 3

CheckPermissionMethod · 0.80
ListProjectsMethod · 0.65

Tested by

no test coverage detected