@@ -22,18 +22,31 @@ defmodule Algora.Admin do
2222 alias Algora.Workspace.Installation
2323 alias Algora.Workspace.Jobs.FetchTopContributions
2424 alias Algora.Workspace.Jobs.ImportStargazer
25+ alias Algora.Workspace.Jobs.SyncUser
2526 alias Algora.Workspace.Repository
2627 alias Algora.Workspace.Ticket
2728
2829 require Logger
2930
30- def sync_user ( provider_login ) do
31- with { :ok , data } <- Github . get_user_by_username ( token ( ) , provider_login ) ,
32- { :ok , user } <- Workspace . ensure_user ( token ( ) , data [ "login" ] ) do
33- user
34- |> change ( % { display_name: data [ "name" ] , location: data [ "location" ] } )
35- |> Repo . update ( )
36- end
31+ def sync_users do
32+ Repo . transact (
33+ fn ->
34+ User
35+ # |> where([u], is_nil(u.display_name))
36+ |> where ( [ u ] , not is_nil ( u . provider_login ) )
37+ |> where ( [ u ] , not is_nil ( u . display_name ) )
38+ |> where ( [ u ] , u . display_name == u . provider_login )
39+ |> where ( [ u ] , not is_nil ( u . provider_id ) )
40+ |> where ( [ u ] , u . type == :individual )
41+ |> Repo . stream ( )
42+ |> Enum . each ( fn user -> sync_user ( provider_id: user . provider_id ) end )
43+ end ,
44+ timeout: :infinity
45+ )
46+ end
47+
48+ def sync_user ( opts ) do
49+ opts |> Map . new ( ) |> SyncUser . new ( ) |> Oban . insert ( )
3750 end
3851
3952 def backfill_charge ( id ) do
0 commit comments