1414from simcore_postgres_database .models .users_details import (
1515 users_pre_registration_details ,
1616)
17- from simcore_postgres_database .utils import as_postgres_sql_query_str
1817from simcore_postgres_database .utils_repos import (
1918 pass_or_acquire_connection ,
2019 transaction_context ,
@@ -268,6 +267,21 @@ async def review_user_pre_registration(
268267#
269268
270269
270+ def _create_account_request_reviewed_by_username_subquery () -> Any :
271+ """Creates a reusable subquery for getting reviewer username by ID."""
272+ reviewer_alias = sa .alias (users , name = "reviewer_alias" )
273+ return (
274+ sa .select (
275+ reviewer_alias .c .name ,
276+ )
277+ .where (
278+ users_pre_registration_details .c .account_request_reviewed_by
279+ == reviewer_alias .c .id
280+ )
281+ .label ("account_request_reviewed_by_username" )
282+ )
283+
284+
271285def _build_left_outer_join_query (
272286 email_like : str | None ,
273287 product_name : ProductName | None ,
@@ -338,7 +352,6 @@ async def search_merged_pre_and_registered_users(
338352) -> list [Row ]:
339353 """Searches and merges users from both users and pre-registration tables"""
340354 users_alias = sa .alias (users , name = "users_alias" )
341- reviewer_alias = sa .alias (users , name = "reviewer_alias" )
342355
343356 invited_by = (
344357 sa .select (
@@ -349,14 +362,7 @@ async def search_merged_pre_and_registered_users(
349362 )
350363
351364 account_request_reviewed_by_username = (
352- sa .select (
353- reviewer_alias .c .name ,
354- )
355- .where (
356- users_pre_registration_details .c .account_request_reviewed_by
357- == reviewer_alias .c .id
358- )
359- .label ("account_request_reviewed_by_username" )
365+ _create_account_request_reviewed_by_username_subquery ()
360366 )
361367
362368 columns = (
@@ -454,7 +460,12 @@ async def list_merged_pre_and_registered_users(
454460 if not filter_include_deleted :
455461 users_where .append (users .c .status != UserStatus .DELETED )
456462
457- # Query for pre-registered users that are not yet in the users table
463+ # Create subquery for reviewer username
464+ account_request_reviewed_by_username = (
465+ _create_account_request_reviewed_by_username_subquery ()
466+ )
467+
468+ # Query for pre-registered users
458469 # We need to left join with users to identify if the pre-registered user is already in the system
459470 pre_reg_query = (
460471 sa .select (
@@ -480,7 +491,8 @@ async def list_merged_pre_and_registered_users(
480491 users .c .status ,
481492 # Use created_by directly instead of a subquery
482493 users_pre_registration_details .c .created_by .label ("created_by" ),
483- sa .literal (True ).label ("is_pre_registered" ),
494+ account_request_reviewed_by_username ,
495+ sa .literal_column ("true" ).label ("is_pre_registered" ),
484496 )
485497 .select_from (
486498 users_pre_registration_details .outerjoin (
@@ -515,7 +527,8 @@ async def list_merged_pre_and_registered_users(
515527 users .c .status ,
516528 # Match the created_by field from the pre_reg query
517529 sa .literal (None ).label ("created_by" ),
518- sa .literal (False ).label ("is_pre_registered" ),
530+ sa .literal (None ).label ("account_request_reviewed_by_username" ),
531+ sa .literal_column ("false" ).label ("is_pre_registered" ),
519532 )
520533 .select_from (
521534 users .join (user_to_groups , user_to_groups .c .uid == users .c .id )
@@ -557,14 +570,6 @@ async def list_merged_pre_and_registered_users(
557570 .subquery ()
558571 )
559572
560- _logger .debug (
561- "%s\n %s\n %s\n %s" ,
562- "-" * 100 ,
563- as_postgres_sql_query_str (distinct_query ),
564- "-" * 100 ,
565- as_postgres_sql_query_str (count_query ),
566- )
567-
568573 async with pass_or_acquire_connection (engine , connection ) as conn :
569574 # Get total count
570575 count_result = await conn .execute (count_query )
0 commit comments