(ctx context.Context, find *FindProjectMessage)
| 80 | } |
| 81 | |
| 82 | func (s *Store) GetProject(ctx context.Context, find *FindProjectMessage) (*ProjectMessage, error) { |
| 83 | if find.ResourceID != nil { |
| 84 | if v, ok := s.projectCache.Get(*find.ResourceID); ok && s.enableCache { |
| 85 | return v, nil |
| 86 | } |
| 87 | } |
| 88 | |
| 89 | // We will always return the resource regardless of its deleted state. |
| 90 | find.ShowDeleted = true |
| 91 | |
| 92 | projects, err := s.ListProjects(ctx, find) |
| 93 | if err != nil { |
| 94 | return nil, err |
| 95 | } |
| 96 | if len(projects) == 0 { |
| 97 | return nil, nil |
| 98 | } |
| 99 | if len(projects) > 1 { |
| 100 | return nil, &common.Error{Code: common.Conflict, Err: errors.Errorf("found %d projects with filter %+v, expect 1", len(projects), find)} |
| 101 | } |
| 102 | project := projects[0] |
| 103 | |
| 104 | s.storeProjectCache(project) |
| 105 | return project, nil |
| 106 | } |
| 107 | |
| 108 | // ListProjects lists all projects. |
| 109 | func (s *Store) ListProjects(ctx context.Context, find *FindProjectMessage) ([]*ProjectMessage, error) { |
no test coverage detected