MCPcopy
hub / github.com/apache/devlake / ExtractProjects

Function ExtractProjects

backend/plugins/taiga/tasks/project_extractor.go:40–84  ·  view source on GitHub ↗
(taskCtx plugin.SubTaskContext)

Source from the content-addressed store, hash-verified

38}
39
40func ExtractProjects(taskCtx plugin.SubTaskContext) errors.Error {
41 data := taskCtx.GetData().(*TaigaTaskData)
42 extractor, err := api.NewApiExtractor(api.ApiExtractorArgs{
43 RawDataSubTaskArgs: api.RawDataSubTaskArgs{
44 Ctx: taskCtx,
45 Params: TaigaApiParams{
46 ConnectionId: data.Options.ConnectionId,
47 ProjectId: data.Options.ProjectId,
48 },
49 Table: RAW_PROJECT_TABLE,
50 },
51 Extract: func(row *api.RawData) ([]interface{}, errors.Error) {
52 var apiProject struct {
53 Id uint64 `json:"id"`
54 Name string `json:"name"`
55 Slug string `json:"slug"`
56 Description string `json:"description"`
57 CreatedDate string `json:"created_date"`
58 ModifiedDate string `json:"modified_date"`
59 }
60 err := json.Unmarshal(row.Data, &apiProject)
61 if err != nil {
62 return nil, errors.Default.Wrap(err, "error unmarshalling project")
63 }
64
65 project := &models.TaigaProject{
66 Scope: common.Scope{
67 ConnectionId: data.Options.ConnectionId,
68 },
69 ProjectId: apiProject.Id,
70 Name: apiProject.Name,
71 Slug: apiProject.Slug,
72 Description: apiProject.Description,
73 }
74
75 return []interface{}{project}, nil
76 },
77 })
78
79 if err != nil {
80 return err
81 }
82
83 return extractor.Execute()
84}

Callers

nothing calls this directly

Calls 3

ExecuteMethod · 0.95
WrapMethod · 0.80
GetDataMethod · 0.65

Tested by

no test coverage detected