Skip to content
This repository was archived by the owner on Jun 19, 2025. It is now read-only.

Commit 53db705

Browse files
feat(task-uuid): Update identifier of Task from task_id to uuid (#230)
* update identifier of Task from task_id to uuid * fix pylint and failing unit tests * add migration to rename task_id to uuid * fixed changes suggested in comments * update changes related to field change in integration tests
1 parent 5971b57 commit 53db705

File tree

21 files changed

+127
-91
lines changed

21 files changed

+127
-91
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"""Rename task_id to uuid
2+
3+
Revision ID: c12374978a12
4+
Revises: 6d5f957d035c
5+
Create Date: 2024-10-11 11:44:29.159937
6+
7+
"""
8+
from typing import Sequence, Union
9+
10+
from alembic import op
11+
import sqlalchemy as sa
12+
13+
14+
# revision identifiers, used by Alembic.
15+
revision: str = 'c12374978a12'
16+
down_revision: Union[str, None] = '6d5f957d035c'
17+
branch_labels: Union[str, Sequence[str], None] = None
18+
depends_on: Union[str, Sequence[str], None] = None
19+
20+
21+
def upgrade() -> None:
22+
# ### commands auto generated by Alembic - please adjust! ###
23+
op.alter_column('tasks', 'task_id', new_column_name='uuid')
24+
# ### end Alembic commands ###
25+
26+
27+
def downgrade() -> None:
28+
pass

aqueductcore/backend/models/orm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class Task(Base):
3737
"""Task details"""
3838

3939
__tablename__ = "task"
40-
task_id = mapped_column(String, primary_key=True)
40+
uuid = mapped_column(String, primary_key=True)
4141
extension_name: Mapped[str]
4242
action_name: Mapped[str]
4343
parameters: Mapped[Optional[str]]

aqueductcore/backend/models/task.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class TaskParamList(AQDModel):
6363
class TaskBase(AQDModel):
6464
"""Base model for a task."""
6565

66-
task_id: str
66+
uuid: str
6767
experiment_uuid: UUID
6868
extension_name: str
6969
action_name: str

aqueductcore/backend/routers/graphql/types.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ class KeyValuePair:
221221
class TaskData:
222222
"""Full information about the scheduled task."""
223223

224-
task_id: UUID = strawberry.field(description="Unique identifier of the task.")
224+
uuid: UUID = strawberry.field(description="Unique identifier of the task.")
225225
experiment: ExperimentData = strawberry.field(
226226
description="Experiment the task is associated with.", resolver=resolve_experiment
227227
)
@@ -272,7 +272,7 @@ def task_model_to_node(value: TaskRead) -> TaskData:
272272
]
273273

274274
task = TaskData(
275-
task_id=UUID(value.task_id),
275+
uuid=UUID(value.uuid),
276276
extension_name=value.extension_name,
277277
action_name=value.action_name,
278278
task_status=TaskStatus(value.status),

aqueductcore/backend/services/extensions.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ async def execute(
165165
)
166166

167167
db_task = orm.Task(
168-
task_id=str(task.task_id),
168+
uuid=str(task.task_id),
169169
action_name=self.name,
170170
extension_name=extension.name,
171171
parameters=params_json,
@@ -176,7 +176,8 @@ async def execute(
176176
db_experiment.tasks.append(db_task)
177177
await db_session.commit()
178178
return await task_orm_to_model(
179-
value=db_task, task_info=task,
179+
value=db_task,
180+
task_info=task,
180181
experiment_uuid=db_task.experiment.uuid,
181182
username=user_info.username,
182183
)

aqueductcore/backend/services/task_executor.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ async def revoke_task(
176176
select(orm.Task)
177177
.options(joinedload(orm.Task.created_by_user))
178178
.options(joinedload(orm.Task.experiment))
179-
.filter(orm.Task.task_id == task_id)
179+
.filter(orm.Task.uuid == task_id)
180180
)
181181
result = await db_session.execute(statement)
182182

@@ -198,8 +198,8 @@ async def revoke_task(
198198
if not user_info.can_cancel_task_owned_by(task_user):
199199
raise AQDPermission("User has no permission to cancel tasks of this user.")
200200

201-
AsyncResult(db_task.task_id).revoke(terminate=terminate, signal="SIGINT")
202-
task_info = await _update_task_info(task_id=db_task.task_id, wait=False)
201+
AsyncResult(db_task.uuid).revoke(terminate=terminate, signal="SIGINT")
202+
task_info = await _update_task_info(task_id=db_task.uuid, wait=False)
203203

204204
username = db_task.created_by_user.username
205205
return await task_orm_to_model(
@@ -219,7 +219,7 @@ async def get_task_by_uuid(
219219
select(orm.Task)
220220
.options(joinedload(orm.Task.experiment))
221221
.options(joinedload(orm.Task.created_by_user))
222-
.where(orm.Task.task_id == str(task_id))
222+
.where(orm.Task.uuid == str(task_id))
223223
)
224224

225225
result = await db_session.execute(statement)
@@ -240,7 +240,7 @@ async def get_task_by_uuid(
240240
if db_task.experiment.created_by != user_info.uuid:
241241
raise AQDPermission("User has no permission to see this task.")
242242

243-
task_info = await _update_task_info(task_id=db_task.task_id, wait=False)
243+
task_info = await _update_task_info(task_id=db_task.uuid, wait=False)
244244

245245
return await task_orm_to_model(
246246
value=db_task, task_info=task_info, experiment_uuid=db_task.experiment.uuid
@@ -308,7 +308,7 @@ async def get_all_tasks( # pylint: disable=too-many-arguments
308308
if username is not None and item.created_by_user.username != username:
309309
continue
310310

311-
task_info = await _update_task_info(task_id=item.task_id, wait=False)
311+
task_info = await _update_task_info(task_id=item.uuid, wait=False)
312312
tasks_list.append(
313313
await task_orm_to_model(
314314
value=item,

aqueductcore/backend/services/utils.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ async def task_orm_to_model(
3131
username = value.created_by_user.username
3232

3333
task = TaskRead(
34-
task_id=value.task_id,
34+
uuid=value.uuid,
3535
experiment_uuid=experiment_uuid,
3636
extension_name=value.extension_name,
3737
action_name=value.action_name,
@@ -56,7 +56,7 @@ def task_model_to_orm(
5656
) -> orm.Task:
5757
"""Convert ORM Experiment to Pydantic Model"""
5858
return orm.Task(
59-
task_id=value.task_id,
59+
uuid=value.uuid,
6060
action_name=value.action_name,
6161
extension_name=value.extension_name,
6262
parameters=(value.parameters.model_dump_json() if value.parameters else None),
@@ -128,15 +128,16 @@ def is_tag_valid(tag: str) -> bool:
128128

129129

130130
def format_list_human_readable(arr: List[Union[str, int]]) -> str:
131-
"""Convert list of strings to a single string separated by commas"""
132-
arr = [str(value) for value in arr]
133-
if len(arr) == 1:
134-
return arr[0]
131+
"""Convert a list of strings or integers to a human-readable string."""
132+
str_arr = [str(value) for value in arr]
133+
134+
if not str_arr:
135+
return ""
135136

136-
if len(arr) == 2:
137-
return arr[-2] + " and " + arr[-1]
137+
if len(str_arr) == 1:
138+
return str_arr[0]
138139

139-
if len(arr) > 2:
140-
return ", ".join(arr[:-2]) + ", " + arr[-2] + " and " + arr[-1]
140+
if len(str_arr) == 2:
141+
return " and ".join(str_arr)
141142

142-
return ""
143+
return f"{', '.join(str_arr[:-1])} and {str_arr[-1]}"

aqueductcore/frontend/src/API/graphql/mutations/extension/cancelTask.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const CANCEL_TASK = gql`
88
$taskId: UUID!
99
) {
1010
cancelTask(cancelTaskInput: {taskId: $taskId}) {
11-
taskId
11+
uuid
1212
resultCode
1313
taskStatus
1414
}

aqueductcore/frontend/src/API/graphql/queries/tasks/getAllTasks.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export const GET_ALL_TASKS = gql`
1313
resultCode
1414
stdOut
1515
stdErr
16-
taskId
16+
uuid
1717
createdBy
1818
experiment {
1919
uuid

aqueductcore/frontend/src/API/graphql/queries/tasks/getTask.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export const GET_TASK = gql`
1313
resultCode
1414
stdOut
1515
stdErr
16-
taskId
16+
uuid
1717
createdBy
1818
experiment {
1919
uuid

0 commit comments

Comments
 (0)