MCPcopy Create free account
hub / github.com/apache/devlake / ExtractAccounts

Function ExtractAccounts

backend/plugins/gitlab/tasks/account_extractor.go:43–103  ·  view source on GitHub ↗
(taskCtx plugin.SubTaskContext)

Source from the content-addressed store, hash-verified

41}
42
43func ExtractAccounts(taskCtx plugin.SubTaskContext) errors.Error {
44 rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_USER_TABLE)
45
46 // Do not extract createdUserAt if we are not using /users API
47 var skipCreatedUserAt = strings.HasPrefix(data.ApiClient.GetEndpoint(), "https://gitlab.com")
48
49 extractor, err := api.NewApiExtractor(api.ApiExtractorArgs{
50 RawDataSubTaskArgs: *rawDataSubTaskArgs,
51 Extract: func(row *api.RawData) ([]interface{}, errors.Error) {
52 var userRes models.GitlabAccount
53 err := errors.Convert(json.Unmarshal(row.Data, &userRes))
54 if err != nil {
55 return nil, err
56 }
57
58 results := make([]interface{}, 0)
59 var GitlabAccount *models.GitlabAccount
60 if skipCreatedUserAt {
61 GitlabAccount = &models.GitlabAccount{
62 ConnectionId: data.Options.ConnectionId,
63 GitlabId: userRes.GitlabId,
64 Username: userRes.Username,
65 Name: userRes.Name,
66 State: userRes.State,
67 MembershipState: userRes.MembershipState,
68 AvatarUrl: userRes.AvatarUrl,
69 WebUrl: userRes.WebUrl,
70 Email: userRes.Email,
71 }
72 } else {
73 GitlabAccount = &models.GitlabAccount{
74 ConnectionId: data.Options.ConnectionId,
75 GitlabId: userRes.GitlabId,
76 Username: userRes.Username,
77 Name: userRes.Name,
78 State: userRes.State,
79 MembershipState: userRes.MembershipState,
80 AvatarUrl: userRes.AvatarUrl,
81 WebUrl: userRes.WebUrl,
82 Email: userRes.Email,
83 CreatedUserAt: userRes.CreatedUserAt,
84 }
85 }
86
87 results = append(results, GitlabAccount)
88
89 return results, nil
90 },
91 })
92
93 if err != nil {
94 return err
95 }
96
97 err = extractor.Execute()
98 if err != nil {
99 return err
100 }

Callers

nothing calls this directly

Calls 4

ExecuteMethod · 0.95
CreateRawDataSubTaskArgsFunction · 0.70
GetEndpointMethod · 0.65
ConvertMethod · 0.45

Tested by

no test coverage detected