@@ -21,7 +21,7 @@ defmodule Algora.Admin do
2121 alias Algora.Workspace
2222 alias Algora.Workspace.Installation
2323 alias Algora.Workspace.Jobs.FetchTopContributions
24- alias Algora.Workspace.Jobs.ImportStargazer
24+ alias Algora.Workspace.Jobs.ProcessStargazers
2525 alias Algora.Workspace.Jobs.SyncUser
2626 alias Algora.Workspace.Repository
2727 alias Algora.Workspace.Ticket
@@ -1029,10 +1029,10 @@ defmodule Algora.Admin do
10291029 end
10301030 end
10311031
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
10331033 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 )
10361036 else
10371037 error ->
10381038 Logger . error ( "Failed to import stargazers: #{ inspect ( error ) } " )
@@ -1047,28 +1047,25 @@ defmodule Algora.Admin do
10471047 else
10481048 url = "/repos/#{ repo_owner } /#{ repo_name } /stargazers?per_page=100&page=#{ page } "
10491049
1050- case Github.Client . fetch ( token ( ) , url ) do
1050+ case Github.Client . fetch ( Github.TokenPool . get_token ( ) , url ) do
10511051 { :ok , [ ] } ->
10521052 Logger . info ( "Finished importing stargazers - no more pages" )
10531053 :ok
10541054
10551055 { :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
10721069
10731070 error ->
10741071 Logger . error ( "Failed to fetch stargazers page #{ page } : #{ inspect ( error ) } " )
0 commit comments