(ctx context.Context, authInstanceID string)
| 4991 | } |
| 4992 | |
| 4993 | func (q *querier) GetWorkspaceAgentsByInstanceID(ctx context.Context, authInstanceID string) ([]database.WorkspaceAgent, error) { |
| 4994 | if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceSystem); err == nil { |
| 4995 | return q.db.GetWorkspaceAgentsByInstanceID(ctx, authInstanceID) |
| 4996 | } |
| 4997 | |
| 4998 | agents, err := q.db.GetWorkspaceAgentsByInstanceID(ctx, authInstanceID) |
| 4999 | if err != nil { |
| 5000 | return nil, err |
| 5001 | } |
| 5002 | // Filter to agents whose workspace is accessible. Template-version |
| 5003 | // agents can share the same instance ID but do not belong to a |
| 5004 | // workspace, so GetWorkspaceByAgentID returns sql.ErrNoRows for |
| 5005 | // them. Exclude those agents rather than failing the entire lookup. |
| 5006 | filtered := make([]database.WorkspaceAgent, 0, len(agents)) |
| 5007 | for _, agent := range agents { |
| 5008 | _, err = q.GetWorkspaceByAgentID(ctx, agent.ID) |
| 5009 | if err != nil { |
| 5010 | if errors.Is(err, sql.ErrNoRows) { |
| 5011 | continue |
| 5012 | } |
| 5013 | return nil, err |
| 5014 | } |
| 5015 | filtered = append(filtered, agent) |
| 5016 | } |
| 5017 | return filtered, nil |
| 5018 | } |
| 5019 | |
| 5020 | func (q *querier) GetWorkspaceAgentsByParentID(ctx context.Context, parentID uuid.UUID) ([]database.WorkspaceAgent, error) { |
| 5021 | workspace, err := q.db.GetWorkspaceByAgentID(ctx, parentID) |
nothing calls this directly
no test coverage detected