Skip to content

Commit 1bd2b4a

Browse files
committed
cleanup
1 parent 7df4f5c commit 1bd2b4a

File tree

1 file changed

+32
-29
lines changed

1 file changed

+32
-29
lines changed

services/web/server/src/simcore_service_webserver/folders/_folders_repository.py

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import logging
2+
from collections.abc import Callable
23
from datetime import datetime
3-
from typing import Callable, cast
4+
from typing import cast
45

56
import sqlalchemy as sa
67
from aiohttp import web
@@ -31,10 +32,10 @@
3132
from simcore_postgres_database.utils_workspaces_sql import (
3233
create_my_workspace_access_rights_subquery,
3334
)
34-
from sqlalchemy import func
35+
from sqlalchemy import sql
3536
from sqlalchemy.ext.asyncio import AsyncConnection
3637
from sqlalchemy.orm import aliased
37-
from sqlalchemy.sql import ColumnElement, CompoundSelect, Select, asc, desc, select
38+
from sqlalchemy.sql import ColumnElement, CompoundSelect, Select
3839
from sqlalchemy.sql.selectable import GenerativeSelect
3940

4041
from ..db.plugin import get_asyncpg_engine
@@ -71,8 +72,8 @@ async def create(
7172
user_id=user_id,
7273
workspace_id=workspace_id,
7374
created_by_gid=created_by_gid,
74-
created=func.now(),
75-
modified=func.now(),
75+
created=sql.func.now(),
76+
modified=sql.func.now(),
7677
)
7778
.returning(*_FOLDER_DB_MODEL_COLS)
7879
)
@@ -91,9 +92,9 @@ def _create_private_workspace_query(
9192
WorkspaceScope.ALL,
9293
)
9394
return (
94-
select(
95+
sql.select(
9596
*_FOLDER_DB_MODEL_COLS,
96-
func.json_build_object(
97+
sql.func.json_build_object(
9798
"read",
9899
sa.text("true"),
99100
"write",
@@ -128,7 +129,7 @@ def _create_shared_workspace_query(
128129
)
129130

130131
shared_workspace_query = (
131-
select(
132+
sql.select(
132133
*_FOLDER_DB_MODEL_COLS,
133134
workspace_access_rights_subquery.c.my_access_rights,
134135
)
@@ -160,7 +161,7 @@ def _set_ordering(
160161
base_query: GenerativeSelect,
161162
order_by: OrderBy,
162163
) -> GenerativeSelect:
163-
direction_func: Callable = {OrderDirection.ASC: asc, OrderDirection: desc}[
164+
direction_func: Callable = {OrderDirection.ASC: sql.asc, OrderDirection: sql.asc}[
164165
order_by.direction
165166
]
166167
column = getattr(folders_v2.c, order_by.field)
@@ -244,7 +245,7 @@ async def list_( # pylint: disable=too-many-arguments,too-many-branches
244245
raise ValueError(msg)
245246

246247
# Select total count from base_query
247-
count_query = select(func.count()).select_from(combined_query.subquery())
248+
count_query = sql.select(sql.func.count()).select_from(combined_query.subquery())
248249

249250
# Ordering and pagination
250251
list_query = (
@@ -278,7 +279,9 @@ async def list_trashed_folders(
278279
NOTE: this is app-wide i.e. no product, user or workspace filtered
279280
TODO: check with MD about workspaces
280281
"""
281-
base_query = select(_FOLDER_DB_MODEL_COLS).where(folders_v2.c.trashed.is_not(None))
282+
base_query = sql.select(_FOLDER_DB_MODEL_COLS).where(
283+
folders_v2.c.trashed.is_not(None)
284+
)
282285

283286
if is_set(trashed_explicitly):
284287
assert isinstance(trashed_explicitly, bool) # nosec
@@ -291,7 +294,7 @@ async def list_trashed_folders(
291294
base_query = base_query.where(folders_v2.c.trashed < trashed_before)
292295

293296
# Select total count from base_query
294-
count_query = select(func.count()).select_from(base_query.subquery())
297+
count_query = sql.select(sql.func.count()).select_from(base_query.subquery())
295298

296299
# Ordering and pagination
297300
list_query = _set_ordering(base_query, order_by).offset(offset).limit(limit)
@@ -305,7 +308,7 @@ async def list_trashed_folders(
305308

306309

307310
def _create_base_select_query(folder_id: FolderID, product_name: ProductName) -> Select:
308-
return select(*_FOLDER_DB_MODEL_COLS,).where(
311+
return sql.select(*_FOLDER_DB_MODEL_COLS,).where(
309312
(folders_v2.c.product_name == product_name)
310313
& (folders_v2.c.folder_id == folder_id)
311314
)
@@ -392,7 +395,7 @@ async def update(
392395
)
393396

394397
query = (
395-
(folders_v2.update().values(modified=func.now(), **updated))
398+
(folders_v2.update().values(modified=sql.func.now(), **updated))
396399
.where(folders_v2.c.product_name == product_name)
397400
.returning(*_FOLDER_DB_MODEL_COLS)
398401
)
@@ -421,7 +424,7 @@ async def delete_recursively(
421424
) -> None:
422425
async with transaction_context(get_asyncpg_engine(app), connection) as conn:
423426
# Step 1: Define the base case for the recursive CTE
424-
base_query = select(
427+
base_query = sql.select(
425428
folders_v2.c.folder_id, folders_v2.c.parent_folder_id
426429
).where(
427430
(folders_v2.c.folder_id == folder_id) # <-- specified folder id
@@ -431,7 +434,7 @@ async def delete_recursively(
431434

432435
# Step 2: Define the recursive case
433436
folder_alias = aliased(folders_v2)
434-
recursive_query = select(
437+
recursive_query = sql.select(
435438
folder_alias.c.folder_id, folder_alias.c.parent_folder_id
436439
).select_from(
437440
folder_alias.join(
@@ -444,7 +447,7 @@ async def delete_recursively(
444447
folder_hierarchy_cte = folder_hierarchy_cte.union_all(recursive_query)
445448

446449
# Step 4: Execute the query to get all descendants
447-
final_query = select(folder_hierarchy_cte)
450+
final_query = sql.select(folder_hierarchy_cte)
448451
result = await conn.stream(final_query)
449452
# list of tuples [(folder_id, parent_folder_id), ...] ex. [(1, None), (2, 1)]
450453
rows = [row async for row in result]
@@ -479,7 +482,7 @@ async def get_projects_recursively_only_if_user_is_owner(
479482
async with pass_or_acquire_connection(get_asyncpg_engine(app), connection) as conn:
480483

481484
# Step 1: Define the base case for the recursive CTE
482-
base_query = select(
485+
base_query = sql.select(
483486
folders_v2.c.folder_id, folders_v2.c.parent_folder_id
484487
).where(
485488
(folders_v2.c.folder_id == folder_id) # <-- specified folder id
@@ -489,7 +492,7 @@ async def get_projects_recursively_only_if_user_is_owner(
489492

490493
# Step 2: Define the recursive case
491494
folder_alias = aliased(folders_v2)
492-
recursive_query = select(
495+
recursive_query = sql.select(
493496
folder_alias.c.folder_id, folder_alias.c.parent_folder_id
494497
).select_from(
495498
folder_alias.join(
@@ -502,13 +505,13 @@ async def get_projects_recursively_only_if_user_is_owner(
502505
folder_hierarchy_cte = folder_hierarchy_cte.union_all(recursive_query)
503506

504507
# Step 4: Execute the query to get all descendants
505-
final_query = select(folder_hierarchy_cte)
508+
final_query = sql.select(folder_hierarchy_cte)
506509
result = await conn.stream(final_query)
507510
# list of tuples [(folder_id, parent_folder_id), ...] ex. [(1, None), (2, 1)]
508511
folder_ids = [item[0] async for item in result]
509512

510513
query = (
511-
select(projects_to_folders.c.project_uuid)
514+
sql.select(projects_to_folders.c.project_uuid)
512515
.join(projects)
513516
.where(
514517
(projects_to_folders.c.folder_id.in_(folder_ids))
@@ -537,7 +540,7 @@ async def get_all_folders_and_projects_ids_recursively(
537540
async with pass_or_acquire_connection(get_asyncpg_engine(app), connection) as conn:
538541

539542
# Step 1: Define the base case for the recursive CTE
540-
base_query = select(
543+
base_query = sql.select(
541544
folders_v2.c.folder_id, folders_v2.c.parent_folder_id
542545
).where(
543546
(folders_v2.c.folder_id == folder_id) # <-- specified folder id
@@ -547,7 +550,7 @@ async def get_all_folders_and_projects_ids_recursively(
547550

548551
# Step 2: Define the recursive case
549552
folder_alias = aliased(folders_v2)
550-
recursive_query = select(
553+
recursive_query = sql.select(
551554
folder_alias.c.folder_id, folder_alias.c.parent_folder_id
552555
).select_from(
553556
folder_alias.join(
@@ -560,12 +563,12 @@ async def get_all_folders_and_projects_ids_recursively(
560563
folder_hierarchy_cte = folder_hierarchy_cte.union_all(recursive_query)
561564

562565
# Step 4: Execute the query to get all descendants
563-
final_query = select(folder_hierarchy_cte)
566+
final_query = sql.select(folder_hierarchy_cte)
564567
result = await conn.stream(final_query)
565568
# list of tuples [(folder_id, parent_folder_id), ...] ex. [(1, None), (2, 1)]
566569
folder_ids = [item.folder_id async for item in result]
567570

568-
query = select(projects_to_folders.c.project_uuid).where(
571+
query = sql.select(projects_to_folders.c.project_uuid).where(
569572
(projects_to_folders.c.folder_id.in_(folder_ids))
570573
& (projects_to_folders.c.user_id == private_workspace_user_id_or_none)
571574
)
@@ -586,7 +589,7 @@ async def get_folders_recursively(
586589
async with pass_or_acquire_connection(get_asyncpg_engine(app), connection) as conn:
587590

588591
# Step 1: Define the base case for the recursive CTE
589-
base_query = select(
592+
base_query = sql.select(
590593
folders_v2.c.folder_id, folders_v2.c.parent_folder_id
591594
).where(
592595
(folders_v2.c.folder_id == folder_id) # <-- specified folder id
@@ -596,7 +599,7 @@ async def get_folders_recursively(
596599

597600
# Step 2: Define the recursive case
598601
folder_alias = aliased(folders_v2)
599-
recursive_query = select(
602+
recursive_query = sql.select(
600603
folder_alias.c.folder_id, folder_alias.c.parent_folder_id
601604
).select_from(
602605
folder_alias.join(
@@ -609,13 +612,13 @@ async def get_folders_recursively(
609612
folder_hierarchy_cte = folder_hierarchy_cte.union_all(recursive_query)
610613

611614
# Step 4: Execute the query to get all descendants
612-
final_query = select(folder_hierarchy_cte)
615+
final_query = sql.select(folder_hierarchy_cte)
613616
result = await conn.stream(final_query)
614617
return cast(list[FolderID], [row.folder_id async for row in result])
615618

616619

617620
def _select_trashed_by_primary_gid_query():
618-
return sa.select(
621+
return sa.sql.select(
619622
folders_v2.c.folder_id,
620623
users.c.primary_gid.label("trashed_by_primary_gid"),
621624
).select_from(

0 commit comments

Comments
 (0)