(fields []string)
| 5 | ) |
| 6 | |
| 7 | func (repo *Repository) ExportData(fields []string) map[string]interface{} { |
| 8 | v := reflect.ValueOf(repo).Elem() |
| 9 | data := map[string]interface{}{} |
| 10 | |
| 11 | for _, f := range fields { |
| 12 | switch f { |
| 13 | case "parent": |
| 14 | data[f] = miniRepoExport(repo.Parent) |
| 15 | case "templateRepository": |
| 16 | data[f] = miniRepoExport(repo.TemplateRepository) |
| 17 | case "languages": |
| 18 | data[f] = repo.Languages.Edges |
| 19 | case "labels": |
| 20 | data[f] = repo.Labels.Nodes |
| 21 | case "assignableUsers": |
| 22 | data[f] = repo.AssignableUsers.Nodes |
| 23 | case "mentionableUsers": |
| 24 | data[f] = repo.MentionableUsers.Nodes |
| 25 | case "milestones": |
| 26 | data[f] = repo.Milestones.Nodes |
| 27 | case "projects": |
| 28 | data[f] = repo.Projects.Nodes |
| 29 | case "repositoryTopics": |
| 30 | var topics []RepositoryTopic |
| 31 | for _, n := range repo.RepositoryTopics.Nodes { |
| 32 | topics = append(topics, n.Topic) |
| 33 | } |
| 34 | data[f] = topics |
| 35 | default: |
| 36 | sf := fieldByName(v, f) |
| 37 | data[f] = sf.Interface() |
| 38 | } |
| 39 | } |
| 40 | |
| 41 | return data |
| 42 | } |
| 43 | |
| 44 | func miniRepoExport(r *Repository) map[string]interface{} { |
| 45 | if r == nil { |
nothing calls this directly
no test coverage detected