MCPcopy Index your code
hub / github.com/rilldata/rill / GetProject

Method GetProject

admin/server/projects.go:267–374  ·  view source on GitHub ↗
(ctx context.Context, req *adminv1.GetProjectRequest)

Source from the content-addressed store, hash-verified

265}
266
267func (s *Server) GetProject(ctx context.Context, req *adminv1.GetProjectRequest) (*adminv1.GetProjectResponse, error) {
268 observability.AddRequestAttributes(ctx,
269 attribute.String("args.org", req.Org),
270 attribute.String("args.project", req.Project),
271 )
272 if req.Branch != "" {
273 observability.AddRequestAttributes(ctx, attribute.String("args.branch", req.Branch))
274 }
275
276 org, err := s.admin.DB.FindOrganizationByName(ctx, req.Org)
277 if err != nil {
278 return nil, err
279 }
280
281 proj, err := s.admin.DB.FindProjectByName(ctx, req.Org, req.Project)
282 if err != nil {
283 return nil, err
284 }
285
286 claims := auth.GetClaims(ctx)
287 permissions := claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID)
288 forceAccess := claims.Superuser(ctx) && req.SuperuserForceAccess
289 if proj.Public {
290 permissions.ReadProject = true
291 permissions.ReadProd = true
292 }
293 if forceAccess {
294 permissions.ReadProject = true
295 permissions.ReadProd = true
296 permissions.ReadProdStatus = true
297 permissions.ReadDev = true
298 permissions.ReadDevStatus = true
299 permissions.ReadProvisionerResources = true
300 permissions.ReadProjectMembers = true
301 }
302
303 if !permissions.ReadProject {
304 return nil, status.Error(codes.PermissionDenied, "does not have permission to read project")
305 }
306
307 var depl *database.Deployment
308 if req.Branch != "" {
309 depls, err := s.admin.DB.FindDeploymentsForProject(ctx, proj.ID, "", req.Branch)
310 if err != nil {
311 return nil, err
312 }
313 if len(depls) == 0 {
314 return nil, status.Errorf(codes.NotFound, "no deployment found for branch %q", req.Branch)
315 } else if len(depls) > 1 {
316 return nil, status.Errorf(codes.FailedPrecondition, "multiple deployments found for branch %q. Recreate deployments to resolve", req.Branch)
317 }
318 depl = depls[0]
319 } else {
320 if proj.PrimaryDeploymentID == nil {
321 return &adminv1.GetProjectResponse{
322 Project: s.projToDTO(proj, org.Name),
323 ProjectPermissions: permissions,
324 }, nil

Callers

nothing calls this directly

Calls 15

projToDTOMethod · 0.95
issueRuntimeTokenMethod · 0.95
AddRequestAttributesFunction · 0.92
GetClaimsFunction · 0.92
deploymentToDTOFunction · 0.85
DeploymentMethod · 0.80
StringMethod · 0.65
FindProjectByNameMethod · 0.65
ProjectPermissionsMethod · 0.65
SuperuserMethod · 0.65

Tested by

no test coverage detected