@@ -22,18 +22,31 @@ defmodule Algora.Admin do
22
22
alias Algora.Workspace.Installation
23
23
alias Algora.Workspace.Jobs.FetchTopContributions
24
24
alias Algora.Workspace.Jobs.ImportStargazer
25
+ alias Algora.Workspace.Jobs.SyncUser
25
26
alias Algora.Workspace.Repository
26
27
alias Algora.Workspace.Ticket
27
28
28
29
require Logger
29
30
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 ( )
37
50
end
38
51
39
52
def backfill_charge ( id ) do
0 commit comments