@@ -236,7 +236,7 @@ defmodule AlgoraWeb.Admin.SeedLive do
236
236
rows
237
237
|> Stream . map ( fn row -> Enum . zip_reduce ( cols , row , Map . new ( ) , fn col , val , acc -> Map . put ( acc , col , val ) end ) end )
238
238
|> Stream . map ( & process_row / 1 )
239
- |> Task . async_stream ( & add_user / 1 , max_concurrency: 10 , timeout: :infinity )
239
+ |> Task . async_stream ( & Map . put ( & 1 , "org" , get_user ( & 1 ) ) , max_concurrency: 10 , timeout: :infinity )
240
240
|> Stream . map ( fn { :ok , row } -> row end )
241
241
|> Enum . to_list ( )
242
242
@@ -255,54 +255,49 @@ defmodule AlgoraWeb.Admin.SeedLive do
255
255
)
256
256
end
257
257
258
- defp add_user ( % { "org_handle" => key } = row ) when is_binary ( key ) and key != "" do
259
- user =
260
- case :ets . lookup ( @ user_cache_table , key ) do
261
- [ { _ , user } ] ->
262
- user
263
-
264
- _ ->
265
- with { :ok , user } <- Workspace . ensure_user ( Algora.Admin . token ( ) , key ) ,
266
- { :ok , user } <- Repo . fetch ( User , user . id ) do
267
- :ets . insert ( @ user_cache_table , { key , user } )
268
- user
269
- else
270
- _ -> nil
271
- end
272
- end
258
+ defp get_user ( % { "org_handle" => handle } = _row ) when is_binary ( handle ) and handle != "" do
259
+ case :ets . lookup ( @ user_cache_table , handle ) do
260
+ [ { _ , user } ] ->
261
+ user
273
262
274
- Map . put ( row , "org" , user )
275
- end
276
-
277
- defp add_user ( % { "company_url" => url } = row ) when is_binary ( url ) and url != "" do
278
- user =
279
- case :ets . lookup ( @ user_cache_table , url ) do
280
- [ { _ , user } ] ->
263
+ _ ->
264
+ with { :ok , user } <- Workspace . ensure_user ( Algora.Admin . token ( ) , handle ) ,
265
+ { :ok , user } <- Repo . fetch ( User , user . id ) do
266
+ :ets . insert ( @ user_cache_table , { handle , user } )
281
267
user
268
+ else
269
+ _ ->
270
+ :ets . insert ( @ user_cache_table , { handle , nil } )
271
+ nil
272
+ end
273
+ end
274
+ end
282
275
283
- _ ->
284
- domain =
285
- url
286
- |> String . trim_leading ( "https://" )
287
- |> String . trim_leading ( "http://" )
288
- |> String . trim_leading ( "www." )
289
-
290
- with { :ok , user } <-
291
- fetch_or_create_user ( domain , % { hiring: true , tech_stack: row [ "tech_stack" ] } ) ,
292
- { :ok , user } <- Repo . fetch ( User , user . id ) do
293
- :ets . insert ( @ user_cache_table , { url , user } )
294
- user
295
- else
296
- _ ->
297
- :ets . insert ( @ user_cache_table , { url , nil } )
298
- nil
299
- end
300
- end
276
+ defp get_user ( % { "company_url" => url } = row ) when is_binary ( url ) and url != "" do
277
+ case :ets . lookup ( @ user_cache_table , url ) do
278
+ [ { _ , user } ] ->
279
+ user
301
280
302
- Map . put ( row , "org" , user )
281
+ _ ->
282
+ domain =
283
+ url
284
+ |> String . trim_leading ( "https://" )
285
+ |> String . trim_leading ( "http://" )
286
+ |> String . trim_leading ( "www." )
287
+
288
+ with { :ok , user } <- fetch_or_create_user ( domain , % { hiring: true , tech_stack: row [ "tech_stack" ] } ) ,
289
+ { :ok , user } <- Repo . fetch ( User , user . id ) do
290
+ :ets . insert ( @ user_cache_table , { url , user } )
291
+ user
292
+ else
293
+ _ ->
294
+ :ets . insert ( @ user_cache_table , { url , nil } )
295
+ nil
296
+ end
297
+ end
303
298
end
304
299
305
- defp add_user ( row ) , do: row
300
+ defp get_user ( _row ) , do: nil
306
301
307
302
def fetch_or_create_user ( domain , opts ) do
308
303
case Repo . one ( from o in User , where: o . domain == ^ domain , limit: 1 ) do
0 commit comments