@@ -21,7 +21,7 @@ defmodule Algora.Admin do
21
21
alias Algora.Workspace
22
22
alias Algora.Workspace.Installation
23
23
alias Algora.Workspace.Jobs.FetchTopContributions
24
- alias Algora.Workspace.Jobs.ImportStargazer
24
+ alias Algora.Workspace.Jobs.ProcessStargazers
25
25
alias Algora.Workspace.Jobs.SyncUser
26
26
alias Algora.Workspace.Repository
27
27
alias Algora.Workspace.Ticket
@@ -1029,10 +1029,10 @@ defmodule Algora.Admin do
1029
1029
end
1030
1030
end
1031
1031
1032
- def import_stargazers ( repo_url , max_pages \\ nil ) when is_binary ( repo_url ) do
1032
+ def import_stargazers ( repo_url , page \\ 1 , max_pages \\ nil ) when is_binary ( repo_url ) do
1033
1033
with { :ok , [ owner: repo_owner , repo: repo_name ] } <- parse_repo_url ( repo_url ) ,
1034
- { :ok , repo } <- Workspace . ensure_repository ( token ( ) , repo_owner , repo_name ) do
1035
- fetch_and_import_stargazers ( repo_owner , repo_name , repo . id , 1 , max_pages )
1034
+ { :ok , repo } <- Workspace . ensure_repository ( Github.TokenPool . get_token ( ) , repo_owner , repo_name ) do
1035
+ fetch_and_import_stargazers ( repo_owner , repo_name , repo . id , page , max_pages )
1036
1036
else
1037
1037
error ->
1038
1038
Logger . error ( "Failed to import stargazers: #{ inspect ( error ) } " )
@@ -1047,28 +1047,25 @@ defmodule Algora.Admin do
1047
1047
else
1048
1048
url = "/repos/#{ repo_owner } /#{ repo_name } /stargazers?per_page=100&page=#{ page } "
1049
1049
1050
- case Github.Client . fetch ( token ( ) , url ) do
1050
+ case Github.Client . fetch ( Github.TokenPool . get_token ( ) , url ) do
1051
1051
{ :ok , [ ] } ->
1052
1052
Logger . info ( "Finished importing stargazers - no more pages" )
1053
1053
:ok
1054
1054
1055
1055
{ :ok , stargazers } ->
1056
- stargazers
1057
- |> Enum . chunk_every ( 10 )
1058
- |> Enum . each ( fn users ->
1059
- logins = Enum . map ( users , fn user -> user [ "login" ] end )
1060
-
1061
- % { provider_logins: logins , repo_id: repo_id }
1062
- |> ImportStargazer . new ( )
1063
- |> Oban . insert ( )
1064
- |> case do
1065
- { :ok , _job } -> Logger . info ( "Enqueued job for #{ logins } " )
1066
- { :error , error } -> Logger . error ( "Failed to enqueue job for #{ logins } : #{ inspect ( error ) } " )
1067
- end
1068
- end )
1069
-
1070
- # Process next page
1071
- fetch_and_import_stargazers ( repo_owner , repo_name , repo_id , page + 1 , max_pages )
1056
+ logins = Enum . map ( stargazers , fn user -> user [ "login" ] end )
1057
+
1058
+ case % { provider_logins: logins , repo_id: repo_id }
1059
+ |> ProcessStargazers . new ( )
1060
+ |> Oban . insert ( ) do
1061
+ { :ok , _job } ->
1062
+ Logger . info ( "Enqueued job for #{ logins } " )
1063
+ fetch_and_import_stargazers ( repo_owner , repo_name , repo_id , page + 1 , max_pages )
1064
+
1065
+ { :error , error } ->
1066
+ Logger . error ( "Failed to enqueue job for #{ logins } : #{ inspect ( error ) } " )
1067
+ { :error , :failed_to_enqueue_job }
1068
+ end
1072
1069
1073
1070
error ->
1074
1071
Logger . error ( "Failed to fetch stargazers page #{ page } : #{ inspect ( error ) } " )
0 commit comments