From dd1e7afaaa48df74762ac86ea18f2b938c826b79 Mon Sep 17 00:00:00 2001 From: Jatin <140497406+jatinriverlane@users.noreply.github.com> Date: Tue, 8 Oct 2024 13:59:00 +0000 Subject: [PATCH 1/5] update identifier of Task from task_id to uuid --- aqueductcore/backend/models/orm.py | 2 +- aqueductcore/backend/routers/graphql/types.py | 4 +-- aqueductcore/backend/services/extensions.py | 5 ++-- .../backend/services/task_executor.py | 8 +++--- aqueductcore/backend/services/utils.py | 25 +++++++++---------- .../mutations/extension/cancelTask.tsx | 2 +- .../API/graphql/queries/tasks/getAllTasks.tsx | 2 +- .../src/API/graphql/queries/tasks/getTask.tsx | 2 +- .../frontend/src/__mocks__/TasksDataMock.ts | 10 ++++---- .../src/__mocks__/queries/tasks/getTask.tsx | 4 +-- .../organisms/TaskDetailsModal/index.tsx | 4 +-- .../frontend/src/helper/formatters.tsx | 2 +- .../frontend/src/types/globalTypes.ts | 8 +++--- .../src/types/graphql/__GENERATED__/gql.ts | 12 ++++----- .../types/graphql/__GENERATED__/graphql.ts | 18 +++++++------ 15 files changed, 55 insertions(+), 53 deletions(-) diff --git a/aqueductcore/backend/models/orm.py b/aqueductcore/backend/models/orm.py index 7f7e78fd..5bbf8d38 100644 --- a/aqueductcore/backend/models/orm.py +++ b/aqueductcore/backend/models/orm.py @@ -37,7 +37,7 @@ class Task(Base): """Task details""" __tablename__ = "task" - task_id = mapped_column(String, primary_key=True) + uuid = mapped_column(String, primary_key=True) extension_name: Mapped[str] action_name: Mapped[str] parameters: Mapped[Optional[str]] diff --git a/aqueductcore/backend/routers/graphql/types.py b/aqueductcore/backend/routers/graphql/types.py index 888ccc8f..99d9c2bf 100644 --- a/aqueductcore/backend/routers/graphql/types.py +++ b/aqueductcore/backend/routers/graphql/types.py @@ -221,7 +221,7 @@ class KeyValuePair: class TaskData: """Full information about the scheduled task.""" - task_id: UUID = strawberry.field(description="Unique identifier of the task.") + uuid: UUID = strawberry.field(description="Unique identifier of the task.") experiment: ExperimentData = strawberry.field( description="Experiment the task is associated with.", resolver=resolve_experiment ) @@ -272,7 +272,7 @@ def task_model_to_node(value: TaskRead) -> TaskData: ] task = TaskData( - task_id=UUID(value.task_id), + uuid=UUID(value.task_id), extension_name=value.extension_name, action_name=value.action_name, task_status=TaskStatus(value.status), diff --git a/aqueductcore/backend/services/extensions.py b/aqueductcore/backend/services/extensions.py index 60dfbd0a..df5e00b7 100644 --- a/aqueductcore/backend/services/extensions.py +++ b/aqueductcore/backend/services/extensions.py @@ -165,7 +165,7 @@ async def execute( ) db_task = orm.Task( - task_id=str(task.task_id), + uuid=str(task.task_id), action_name=self.name, extension_name=extension.name, parameters=params_json, @@ -176,7 +176,8 @@ async def execute( db_experiment.tasks.append(db_task) await db_session.commit() return await task_orm_to_model( - value=db_task, task_info=task, + value=db_task, + task_info=task, experiment_uuid=db_task.experiment.uuid, username=user_info.username, ) diff --git a/aqueductcore/backend/services/task_executor.py b/aqueductcore/backend/services/task_executor.py index 4722ef52..ce2d1079 100644 --- a/aqueductcore/backend/services/task_executor.py +++ b/aqueductcore/backend/services/task_executor.py @@ -176,7 +176,7 @@ async def revoke_task( select(orm.Task) .options(joinedload(orm.Task.created_by_user)) .options(joinedload(orm.Task.experiment)) - .filter(orm.Task.task_id == task_id) + .filter(orm.Task.uuid == task_id) ) result = await db_session.execute(statement) @@ -219,7 +219,7 @@ async def get_task_by_uuid( select(orm.Task) .options(joinedload(orm.Task.experiment)) .options(joinedload(orm.Task.created_by_user)) - .where(orm.Task.task_id == str(task_id)) + .where(orm.Task.uuid == str(task_id)) ) result = await db_session.execute(statement) @@ -240,7 +240,7 @@ async def get_task_by_uuid( if db_task.experiment.created_by != user_info.uuid: raise AQDPermission("User has no permission to see this task.") - task_info = await _update_task_info(task_id=db_task.task_id, wait=False) + task_info = await _update_task_info(task_id=db_task.uuid, wait=False) return await task_orm_to_model( 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 if username is not None and item.created_by_user.username != username: continue - task_info = await _update_task_info(task_id=item.task_id, wait=False) + task_info = await _update_task_info(task_id=item.uuid, wait=False) tasks_list.append( await task_orm_to_model( value=item, diff --git a/aqueductcore/backend/services/utils.py b/aqueductcore/backend/services/utils.py index 81052c65..e327ba8b 100644 --- a/aqueductcore/backend/services/utils.py +++ b/aqueductcore/backend/services/utils.py @@ -31,7 +31,7 @@ async def task_orm_to_model( username = value.created_by_user.username task = TaskRead( - task_id=value.task_id, + task_id=value.uuid, experiment_uuid=experiment_uuid, extension_name=value.extension_name, action_name=value.action_name, @@ -128,15 +128,14 @@ def is_tag_valid(tag: str) -> bool: def format_list_human_readable(arr: List[Union[str, int]]) -> str: - """Convert list of strings to a single string separated by commas""" - arr = [str(value) for value in arr] - if len(arr) == 1: - return arr[0] - - if len(arr) == 2: - return arr[-2] + " and " + arr[-1] - - if len(arr) > 2: - return ", ".join(arr[:-2]) + ", " + arr[-2] + " and " + arr[-1] - - return "" + """Convert a list of strings or integers to a human-readable string.""" + str_arr = [str(value) for value in arr] + + if not str_arr: + return "" + elif len(str_arr) == 1: + return str_arr[0] + elif len(str_arr) == 2: + return " and ".join(str_arr) + else: + return f"{', '.join(str_arr[:-1])} and {str_arr[-1]}" diff --git a/aqueductcore/frontend/src/API/graphql/mutations/extension/cancelTask.tsx b/aqueductcore/frontend/src/API/graphql/mutations/extension/cancelTask.tsx index 8c45b5e2..d20568ca 100644 --- a/aqueductcore/frontend/src/API/graphql/mutations/extension/cancelTask.tsx +++ b/aqueductcore/frontend/src/API/graphql/mutations/extension/cancelTask.tsx @@ -8,7 +8,7 @@ export const CANCEL_TASK = gql` $taskId: UUID! ) { cancelTask(cancelTaskInput: {taskId: $taskId}) { - taskId + uuid resultCode taskStatus } diff --git a/aqueductcore/frontend/src/API/graphql/queries/tasks/getAllTasks.tsx b/aqueductcore/frontend/src/API/graphql/queries/tasks/getAllTasks.tsx index 7b6d8741..13258bf1 100644 --- a/aqueductcore/frontend/src/API/graphql/queries/tasks/getAllTasks.tsx +++ b/aqueductcore/frontend/src/API/graphql/queries/tasks/getAllTasks.tsx @@ -13,7 +13,7 @@ export const GET_ALL_TASKS = gql` resultCode stdOut stdErr - taskId + uuid createdBy experiment { uuid diff --git a/aqueductcore/frontend/src/API/graphql/queries/tasks/getTask.tsx b/aqueductcore/frontend/src/API/graphql/queries/tasks/getTask.tsx index dbc54d4e..fc3fcaad 100644 --- a/aqueductcore/frontend/src/API/graphql/queries/tasks/getTask.tsx +++ b/aqueductcore/frontend/src/API/graphql/queries/tasks/getTask.tsx @@ -13,7 +13,7 @@ export const GET_TASK = gql` resultCode stdOut stdErr - taskId + uuid createdBy experiment { uuid diff --git a/aqueductcore/frontend/src/__mocks__/TasksDataMock.ts b/aqueductcore/frontend/src/__mocks__/TasksDataMock.ts index 5728de24..a2145215 100644 --- a/aqueductcore/frontend/src/__mocks__/TasksDataMock.ts +++ b/aqueductcore/frontend/src/__mocks__/TasksDataMock.ts @@ -12,7 +12,7 @@ export const TasksDataMock: TaskType[] = [ "resultCode": 1, "stdOut": "Some text 2", "stdErr": null, - "taskId": "caab6b1e-d275-4bb3-9803-967d03eb843d", + "uuid": "caab6b1e-d275-4bb3-9803-967d03eb843d", "experiment": { uuid: ExperimentsDataMock[0].uuid, title: ExperimentsDataMock[0].title, @@ -28,7 +28,7 @@ export const TasksDataMock: TaskType[] = [ "resultCode": null, "stdOut": null, "stdErr": "Error!", - "taskId": "2640eb24-5d99-493c-8a44-5ade9df8769a", + "uuid": "2640eb24-5d99-493c-8a44-5ade9df8769a", "experiment": { uuid: ExperimentsDataMock[0].uuid, title: ExperimentsDataMock[0].title, @@ -44,7 +44,7 @@ export const TasksDataMock: TaskType[] = [ "resultCode": null, "stdOut": null, "stdErr": null, - "taskId": "9aec85cc-032a-4daf-b0f2-67d04d25455c", + "uuid": "9aec85cc-032a-4daf-b0f2-67d04d25455c", "experiment": { uuid: ExperimentsDataMock[0].uuid, title: ExperimentsDataMock[0].title, @@ -150,5 +150,5 @@ export const TaskParams = [ "__typename": "KeyValuePair" } ] -export const SampleTaskId = TasksDataMock[0].taskId; -export const PendingTaskId = TasksDataMock[1].taskId; +export const SampleTaskId = TasksDataMock[0].uuid; +export const PendingTaskId = TasksDataMock[1].uuid; diff --git a/aqueductcore/frontend/src/__mocks__/queries/tasks/getTask.tsx b/aqueductcore/frontend/src/__mocks__/queries/tasks/getTask.tsx index 013d405e..6a108561 100644 --- a/aqueductcore/frontend/src/__mocks__/queries/tasks/getTask.tsx +++ b/aqueductcore/frontend/src/__mocks__/queries/tasks/getTask.tsx @@ -18,7 +18,7 @@ export const getTask_mock = { result: { data: { task: { - ...TasksDataMock.find(task => task.taskId === SampleTaskId), + ...TasksDataMock.find(task => task.uuid === SampleTaskId), parameters: TaskParams } }, @@ -35,7 +35,7 @@ export const getTask_mock = { result: { data: { task: { - ...TasksDataMock.find(task => task.taskId === PendingTaskId), + ...TasksDataMock.find(task => task.uuid === PendingTaskId), parameters: TaskParams } }, diff --git a/aqueductcore/frontend/src/components/organisms/TaskDetailsModal/index.tsx b/aqueductcore/frontend/src/components/organisms/TaskDetailsModal/index.tsx index 4b383c7b..b856b1fa 100644 --- a/aqueductcore/frontend/src/components/organisms/TaskDetailsModal/index.tsx +++ b/aqueductcore/frontend/src/components/organisms/TaskDetailsModal/index.tsx @@ -21,7 +21,7 @@ import { TaskType } from "types/globalTypes"; interface TaskDetailsModalProps { isOpen: boolean handleClose: () => void - taskId: TaskType['taskId'] + taskId: TaskType['uuid'] } export type settingItemType = { @@ -215,7 +215,7 @@ function TaskDetailsModal({ isOpen, handleClose, taskId }: TaskDetailsModalProps }, { label: "taskId", - value: task.taskId + value: task.uuid }, { label: "taskStatus", diff --git a/aqueductcore/frontend/src/helper/formatters.tsx b/aqueductcore/frontend/src/helper/formatters.tsx index 325384e1..4842acda 100644 --- a/aqueductcore/frontend/src/helper/formatters.tsx +++ b/aqueductcore/frontend/src/helper/formatters.tsx @@ -30,7 +30,7 @@ export function experimentTableDataFormatter(experimentList: ExperimentDataType[ export function taskHistoryTableFormatter(tasks: TaskType[]): TaskDataType[] { const formattedTasks = tasks.map(task => ({ - taskId: task.taskId, + taskId: task.uuid, experiment: { title: task.experiment.title, eid: task.experiment.eid diff --git a/aqueductcore/frontend/src/types/globalTypes.ts b/aqueductcore/frontend/src/types/globalTypes.ts index 970f865a..78c0463a 100644 --- a/aqueductcore/frontend/src/types/globalTypes.ts +++ b/aqueductcore/frontend/src/types/globalTypes.ts @@ -140,12 +140,12 @@ export type EXECUTE_EXTENSION_TYPE = { resultCode: TaskData['resultCode'] stdErr: TaskData['stdErr'] stdOut: TaskData['stdOut'] - taskId: TaskData['taskId'] + taskId: TaskData['uuid'] taskStatus: TaskData['taskStatus'] } export type CANCEL_TASK_TYPE = { - taskId: TaskData['taskId'] + taskId: TaskData['uuid'] resultCode: TaskData['resultCode'] taskStatus: TaskData['taskStatus'] } @@ -199,7 +199,7 @@ export type TaskDataType = { name: ExtensionInfo['name'] action: ExtensionActionInfo['name'] }; - taskId: TaskType['taskId'] + taskId: TaskType['uuid']; taskStatus: TaskType['taskStatus']; receivedAt: TaskData['receivedAt']; createdBy: TaskData['createdBy']; @@ -263,7 +263,7 @@ export interface TaskType { resultCode: TaskData['resultCode'] stdOut: TaskData['stdOut'] stdErr: TaskData['stdErr'] - taskId: TaskData['taskId'] + uuid: TaskData['uuid'] createdBy: TaskData['createdBy'] experiment: { uuid: ExperimentData['uuid'] diff --git a/aqueductcore/frontend/src/types/graphql/__GENERATED__/gql.ts b/aqueductcore/frontend/src/types/graphql/__GENERATED__/gql.ts index 24d6d7f6..5f08d990 100644 --- a/aqueductcore/frontend/src/types/graphql/__GENERATED__/gql.ts +++ b/aqueductcore/frontend/src/types/graphql/__GENERATED__/gql.ts @@ -18,7 +18,7 @@ const documents = { "\n mutation removeExperiment($uuid: UUID!) {\n removeExperiment(experimentRemoveInput: { uuid: $uuid})\n }\n": types.RemoveExperimentDocument, "\n mutation removeTagFromExperiment($uuid: UUID!, $tag: String!) {\n removeTagFromExperiment(experimentTagInput: { uuid: $uuid, tag: $tag }) {\n uuid\n tags\n }\n }\n": types.RemoveTagFromExperimentDocument, "\n mutation updateExperimentName(\n $uuid: UUID!\n $experimentUpdateInput: ExperimentUpdateInput!\n ) {\n updateExperiment(uuid: $uuid, experimentUpdateInput: $experimentUpdateInput) {\n uuid\n title\n description\n eid\n }\n }\n": types.UpdateExperimentNameDocument, - "\n mutation CancelTask(\n $taskId: UUID!\n ) {\n cancelTask(cancelTaskInput: {taskId: $taskId}) {\n createdBy\n taskId\n resultCode\n taskStatus\n }\n }\n": types.CancelTaskDocument, + "\n mutation CancelTask(\n $taskId: UUID!\n ) {\n cancelTask(cancelTaskInput: {taskId: $taskId}) {\n uuid\n resultCode\n taskStatus\n }\n }\n": types.CancelTaskDocument, "\n mutation ExecuteExtension(\n $experimentUuid: UUID!\n $extension: String!\n $action: String!\n $params: [[String!]!]!\n ) {\n executeExtension(executeExtensionInput: {experimentUuid: $experimentUuid, extension: $extension, action: $action, params: $params}) {\n resultCode\n stdErr\n stdOut\n }\n }\n": types.ExecuteExtensionDocument, "\n query getAllExperiments($offset: Int!, $limit: Int!, $filters: ExperimentFiltersInput) {\n experiments(offset: $offset, limit: $limit, filters: $filters) {\n experimentsData {\n uuid\n eid\n title\n description\n tags\n createdAt\n createdBy\n }\n totalExperimentsCount\n }\n }\n": types.GetAllExperimentsDocument, "\n query getAllTags {\n tags {\n tagsData\n }\n }\n": types.GetAllTagsDocument, @@ -26,8 +26,8 @@ const documents = { "\n query getExperimentFilesById($experimentIdentifier: ExperimentIdentifierInput!) {\n experiment(experimentIdentifier: $experimentIdentifier) {\n uuid\n files {\n name\n path\n modifiedAt\n }\n }\n }\n": types.GetExperimentFilesByIdDocument, "\n query getAllExtensionNames {\n extensions {\n name\n }\n }\n": types.GetAllExtensionNamesDocument, "\n query getAllExtensions {\n extensions {\n name\n authors\n description\n actions {\n description\n experimentVariableName\n name\n parameters {\n dataType\n defaultValue\n description\n displayName\n name\n options\n }\n }\n }\n }\n": types.GetAllExtensionsDocument, - "\n query getAllTasks($offset: Int!, $limit: Int!, $filters: TasksFilterInput) {\n tasks(offset: $offset, limit: $limit, filters: $filters) {\n tasksData {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n taskId\n experiment {\n createdBy\n uuid \n title\n eid\n }\n }\n totalTasksCount\n }\n }\n": types.GetAllTasksDocument, - "\n query getTask($taskId: UUID!) {\n task(taskId: $taskId) {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n taskId\n experiment {\n createdBy\n uuid \n title\n eid\n }\n parameters {\n key {\n dataType\n name\n displayName\n defaultValue\n description\n options\n }\n value\n } \n }\n }\n": types.GetTaskDocument, + "\n query getAllTasks($offset: Int!, $limit: Int!, $filters: TasksFilterInput) {\n tasks(offset: $offset, limit: $limit, filters: $filters) {\n tasksData {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n uuid\n createdBy\n experiment {\n uuid \n title\n eid\n }\n }\n totalTasksCount\n }\n }\n": types.GetAllTasksDocument, + "\n query getTask($taskId: UUID!) {\n task(taskId: $taskId) {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n uuid\n createdBy\n experiment {\n uuid \n title\n eid\n }\n parameters {\n key {\n dataType\n name\n displayName\n defaultValue\n description\n options\n }\n value\n } \n }\n }\n": types.GetTaskDocument, "\n query getCurrentUserInfo {\n getCurrentUserInfo {\n scopes\n username\n }\n }\n": types.GetCurrentUserInfoDocument, }; @@ -68,7 +68,7 @@ export function graphql(source: "\n mutation updateExperimentName(\n $uuid: /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n mutation CancelTask(\n $taskId: UUID!\n ) {\n cancelTask(cancelTaskInput: {taskId: $taskId}) {\n createdBy\n taskId\n resultCode\n taskStatus\n }\n }\n"): (typeof documents)["\n mutation CancelTask(\n $taskId: UUID!\n ) {\n cancelTask(cancelTaskInput: {taskId: $taskId}) {\n createdBy\n taskId\n resultCode\n taskStatus\n }\n }\n"]; +export function graphql(source: "\n mutation CancelTask(\n $taskId: UUID!\n ) {\n cancelTask(cancelTaskInput: {taskId: $taskId}) {\n uuid\n resultCode\n taskStatus\n }\n }\n"): (typeof documents)["\n mutation CancelTask(\n $taskId: UUID!\n ) {\n cancelTask(cancelTaskInput: {taskId: $taskId}) {\n uuid\n resultCode\n taskStatus\n }\n }\n"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -100,11 +100,11 @@ export function graphql(source: "\n query getAllExtensions {\n extensions {\ /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getAllTasks($offset: Int!, $limit: Int!, $filters: TasksFilterInput) {\n tasks(offset: $offset, limit: $limit, filters: $filters) {\n tasksData {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n taskId\n experiment {\n createdBy\n uuid \n title\n eid\n }\n }\n totalTasksCount\n }\n }\n"): (typeof documents)["\n query getAllTasks($offset: Int!, $limit: Int!, $filters: TasksFilterInput) {\n tasks(offset: $offset, limit: $limit, filters: $filters) {\n tasksData {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n taskId\n experiment {\n createdBy\n uuid \n title\n eid\n }\n }\n totalTasksCount\n }\n }\n"]; +export function graphql(source: "\n query getAllTasks($offset: Int!, $limit: Int!, $filters: TasksFilterInput) {\n tasks(offset: $offset, limit: $limit, filters: $filters) {\n tasksData {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n uuid\n createdBy\n experiment {\n uuid \n title\n eid\n }\n }\n totalTasksCount\n }\n }\n"): (typeof documents)["\n query getAllTasks($offset: Int!, $limit: Int!, $filters: TasksFilterInput) {\n tasks(offset: $offset, limit: $limit, filters: $filters) {\n tasksData {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n uuid\n createdBy\n experiment {\n uuid \n title\n eid\n }\n }\n totalTasksCount\n }\n }\n"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query getTask($taskId: UUID!) {\n task(taskId: $taskId) {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n taskId\n experiment {\n createdBy\n uuid \n title\n eid\n }\n parameters {\n key {\n dataType\n name\n displayName\n defaultValue\n description\n options\n }\n value\n } \n }\n }\n"): (typeof documents)["\n query getTask($taskId: UUID!) {\n task(taskId: $taskId) {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n taskId\n experiment {\n createdBy\n uuid \n title\n eid\n }\n parameters {\n key {\n dataType\n name\n displayName\n defaultValue\n description\n options\n }\n value\n } \n }\n }\n"]; +export function graphql(source: "\n query getTask($taskId: UUID!) {\n task(taskId: $taskId) {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n uuid\n createdBy\n experiment {\n uuid \n title\n eid\n }\n parameters {\n key {\n dataType\n name\n displayName\n defaultValue\n description\n options\n }\n value\n } \n }\n }\n"): (typeof documents)["\n query getTask($taskId: UUID!) {\n task(taskId: $taskId) {\n extensionName\n actionName\n taskStatus\n receivedAt\n resultCode\n stdOut\n stdErr\n uuid\n createdBy\n experiment {\n uuid \n title\n eid\n }\n parameters {\n key {\n dataType\n name\n displayName\n defaultValue\n description\n options\n }\n value\n } \n }\n }\n"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/aqueductcore/frontend/src/types/graphql/__GENERATED__/graphql.ts b/aqueductcore/frontend/src/types/graphql/__GENERATED__/graphql.ts index 83458c3e..cb8fd6e0 100644 --- a/aqueductcore/frontend/src/types/graphql/__GENERATED__/graphql.ts +++ b/aqueductcore/frontend/src/types/graphql/__GENERATED__/graphql.ts @@ -289,10 +289,10 @@ export type TaskData = { stdErr?: Maybe; /** Content of task stdout. */ stdOut?: Maybe; - /** Unique identifier of the task. */ - taskId: Scalars['UUID']['output']; /** Status of the task execution. */ taskStatus: TaskStatus; + /** Unique identifier of the task. */ + uuid: Scalars['UUID']['output']; }; export enum TaskStatus { @@ -315,10 +315,12 @@ export type Tasks = { export type TasksFilterInput = { actionName?: InputMaybe; + endDate?: InputMaybe; experiment?: InputMaybe; extensionName?: InputMaybe; limit?: InputMaybe; offset?: InputMaybe; + startDate?: InputMaybe; username?: InputMaybe; }; @@ -376,7 +378,7 @@ export type CancelTaskMutationVariables = Exact<{ }>; -export type CancelTaskMutation = { __typename?: 'Mutation', cancelTask: { __typename?: 'TaskData', createdBy: string, taskId: any, resultCode?: number | null, taskStatus: TaskStatus } }; +export type CancelTaskMutation = { __typename?: 'Mutation', cancelTask: { __typename?: 'TaskData', uuid: any, resultCode?: number | null, taskStatus: TaskStatus } }; export type ExecuteExtensionMutationVariables = Exact<{ experimentUuid: Scalars['UUID']['input']; @@ -433,14 +435,14 @@ export type GetAllTasksQueryVariables = Exact<{ }>; -export type GetAllTasksQuery = { __typename?: 'Query', tasks: { __typename?: 'Tasks', totalTasksCount: number, tasksData: Array<{ __typename?: 'TaskData', extensionName: string, actionName: string, taskStatus: TaskStatus, receivedAt: any, resultCode?: number | null, stdOut?: string | null, stdErr?: string | null, taskId: any, experiment: { __typename?: 'ExperimentData', createdBy: string, uuid: any, title: string, eid: string } }> } }; +export type GetAllTasksQuery = { __typename?: 'Query', tasks: { __typename?: 'Tasks', totalTasksCount: number, tasksData: Array<{ __typename?: 'TaskData', extensionName: string, actionName: string, taskStatus: TaskStatus, receivedAt: any, resultCode?: number | null, stdOut?: string | null, stdErr?: string | null, uuid: any, createdBy: string, experiment: { __typename?: 'ExperimentData', uuid: any, title: string, eid: string } }> } }; export type GetTaskQueryVariables = Exact<{ taskId: Scalars['UUID']['input']; }>; -export type GetTaskQuery = { __typename?: 'Query', task?: { __typename?: 'TaskData', extensionName: string, actionName: string, taskStatus: TaskStatus, receivedAt: any, resultCode?: number | null, stdOut?: string | null, stdErr?: string | null, taskId: any, experiment: { __typename?: 'ExperimentData', createdBy: string, uuid: any, title: string, eid: string }, parameters: Array<{ __typename?: 'KeyValuePair', value?: string | null, key: { __typename?: 'ExtensionParameterType', dataType: string, name: string, displayName?: string | null, defaultValue?: string | null, description?: string | null, options?: Array | null } }> } | null }; +export type GetTaskQuery = { __typename?: 'Query', task?: { __typename?: 'TaskData', extensionName: string, actionName: string, taskStatus: TaskStatus, receivedAt: any, resultCode?: number | null, stdOut?: string | null, stdErr?: string | null, uuid: any, createdBy: string, experiment: { __typename?: 'ExperimentData', uuid: any, title: string, eid: string }, parameters: Array<{ __typename?: 'KeyValuePair', value?: string | null, key: { __typename?: 'ExtensionParameterType', dataType: string, name: string, displayName?: string | null, defaultValue?: string | null, description?: string | null, options?: Array | null } }> } | null }; export type GetCurrentUserInfoQueryVariables = Exact<{ [key: string]: never; }>; @@ -453,7 +455,7 @@ export const CreateExperimentDocument = {"kind":"Document","definitions":[{"kind export const RemoveExperimentDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"removeExperiment"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"uuid"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"removeExperiment"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"experimentRemoveInput"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"uuid"},"value":{"kind":"Variable","name":{"kind":"Name","value":"uuid"}}}]}}]}]}}]} as unknown as DocumentNode; export const RemoveTagFromExperimentDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"removeTagFromExperiment"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"uuid"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"tag"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"removeTagFromExperiment"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"experimentTagInput"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"uuid"},"value":{"kind":"Variable","name":{"kind":"Name","value":"uuid"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"tag"},"value":{"kind":"Variable","name":{"kind":"Name","value":"tag"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"tags"}}]}}]}}]} as unknown as DocumentNode; export const UpdateExperimentNameDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"updateExperimentName"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"uuid"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"experimentUpdateInput"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ExperimentUpdateInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateExperiment"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"uuid"},"value":{"kind":"Variable","name":{"kind":"Name","value":"uuid"}}},{"kind":"Argument","name":{"kind":"Name","value":"experimentUpdateInput"},"value":{"kind":"Variable","name":{"kind":"Name","value":"experimentUpdateInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"eid"}}]}}]}}]} as unknown as DocumentNode; -export const CancelTaskDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CancelTask"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"taskId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cancelTask"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"cancelTaskInput"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"taskId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"taskId"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createdBy"}},{"kind":"Field","name":{"kind":"Name","value":"taskId"}},{"kind":"Field","name":{"kind":"Name","value":"resultCode"}},{"kind":"Field","name":{"kind":"Name","value":"taskStatus"}}]}}]}}]} as unknown as DocumentNode; +export const CancelTaskDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CancelTask"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"taskId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cancelTask"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"cancelTaskInput"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"taskId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"taskId"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"resultCode"}},{"kind":"Field","name":{"kind":"Name","value":"taskStatus"}}]}}]}}]} as unknown as DocumentNode; export const ExecuteExtensionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ExecuteExtension"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"experimentUuid"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"extension"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"action"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"params"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"executeExtension"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"executeExtensionInput"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"experimentUuid"},"value":{"kind":"Variable","name":{"kind":"Name","value":"experimentUuid"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"extension"},"value":{"kind":"Variable","name":{"kind":"Name","value":"extension"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"action"},"value":{"kind":"Variable","name":{"kind":"Name","value":"action"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"params"},"value":{"kind":"Variable","name":{"kind":"Name","value":"params"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"resultCode"}},{"kind":"Field","name":{"kind":"Name","value":"stdErr"}},{"kind":"Field","name":{"kind":"Name","value":"stdOut"}}]}}]}}]} as unknown as DocumentNode; export const GetAllExperimentsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getAllExperiments"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"offset"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"limit"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filters"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ExperimentFiltersInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"experiments"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"offset"},"value":{"kind":"Variable","name":{"kind":"Name","value":"offset"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"Variable","name":{"kind":"Name","value":"limit"}}},{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filters"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"experimentsData"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"eid"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"tags"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"createdBy"}}]}},{"kind":"Field","name":{"kind":"Name","value":"totalExperimentsCount"}}]}}]}}]} as unknown as DocumentNode; export const GetAllTagsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getAllTags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tagsData"}}]}}]}}]} as unknown as DocumentNode; @@ -461,6 +463,6 @@ export const GetExperimentByIdDocument = {"kind":"Document","definitions":[{"kin export const GetExperimentFilesByIdDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getExperimentFilesById"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"experimentIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ExperimentIdentifierInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"experiment"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"experimentIdentifier"},"value":{"kind":"Variable","name":{"kind":"Name","value":"experimentIdentifier"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"files"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"path"}},{"kind":"Field","name":{"kind":"Name","value":"modifiedAt"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetAllExtensionNamesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getAllExtensionNames"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"extensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode; export const GetAllExtensionsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getAllExtensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"extensions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"authors"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"actions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"experimentVariableName"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"parameters"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dataType"}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"displayName"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}}]}}]}}]}}]} as unknown as DocumentNode; -export const GetAllTasksDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getAllTasks"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"offset"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"limit"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filters"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"TasksFilterInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tasks"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"offset"},"value":{"kind":"Variable","name":{"kind":"Name","value":"offset"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"Variable","name":{"kind":"Name","value":"limit"}}},{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filters"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tasksData"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"extensionName"}},{"kind":"Field","name":{"kind":"Name","value":"actionName"}},{"kind":"Field","name":{"kind":"Name","value":"taskStatus"}},{"kind":"Field","name":{"kind":"Name","value":"receivedAt"}},{"kind":"Field","name":{"kind":"Name","value":"resultCode"}},{"kind":"Field","name":{"kind":"Name","value":"stdOut"}},{"kind":"Field","name":{"kind":"Name","value":"stdErr"}},{"kind":"Field","name":{"kind":"Name","value":"taskId"}},{"kind":"Field","name":{"kind":"Name","value":"experiment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createdBy"}},{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"eid"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"totalTasksCount"}}]}}]}}]} as unknown as DocumentNode; -export const GetTaskDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getTask"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"taskId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"task"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"taskId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"taskId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"extensionName"}},{"kind":"Field","name":{"kind":"Name","value":"actionName"}},{"kind":"Field","name":{"kind":"Name","value":"taskStatus"}},{"kind":"Field","name":{"kind":"Name","value":"receivedAt"}},{"kind":"Field","name":{"kind":"Name","value":"resultCode"}},{"kind":"Field","name":{"kind":"Name","value":"stdOut"}},{"kind":"Field","name":{"kind":"Name","value":"stdErr"}},{"kind":"Field","name":{"kind":"Name","value":"taskId"}},{"kind":"Field","name":{"kind":"Name","value":"experiment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createdBy"}},{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"eid"}}]}},{"kind":"Field","name":{"kind":"Name","value":"parameters"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dataType"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"displayName"}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetAllTasksDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getAllTasks"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"offset"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"limit"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filters"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"TasksFilterInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tasks"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"offset"},"value":{"kind":"Variable","name":{"kind":"Name","value":"offset"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"Variable","name":{"kind":"Name","value":"limit"}}},{"kind":"Argument","name":{"kind":"Name","value":"filters"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filters"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tasksData"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"extensionName"}},{"kind":"Field","name":{"kind":"Name","value":"actionName"}},{"kind":"Field","name":{"kind":"Name","value":"taskStatus"}},{"kind":"Field","name":{"kind":"Name","value":"receivedAt"}},{"kind":"Field","name":{"kind":"Name","value":"resultCode"}},{"kind":"Field","name":{"kind":"Name","value":"stdOut"}},{"kind":"Field","name":{"kind":"Name","value":"stdErr"}},{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"createdBy"}},{"kind":"Field","name":{"kind":"Name","value":"experiment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"eid"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"totalTasksCount"}}]}}]}}]} as unknown as DocumentNode; +export const GetTaskDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getTask"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"taskId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"task"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"taskId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"taskId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"extensionName"}},{"kind":"Field","name":{"kind":"Name","value":"actionName"}},{"kind":"Field","name":{"kind":"Name","value":"taskStatus"}},{"kind":"Field","name":{"kind":"Name","value":"receivedAt"}},{"kind":"Field","name":{"kind":"Name","value":"resultCode"}},{"kind":"Field","name":{"kind":"Name","value":"stdOut"}},{"kind":"Field","name":{"kind":"Name","value":"stdErr"}},{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"createdBy"}},{"kind":"Field","name":{"kind":"Name","value":"experiment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"uuid"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"eid"}}]}},{"kind":"Field","name":{"kind":"Name","value":"parameters"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dataType"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"displayName"}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetCurrentUserInfoDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getCurrentUserInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getCurrentUserInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"scopes"}},{"kind":"Field","name":{"kind":"Name","value":"username"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file From 277c739977e10db3939e88527c7dd6b641226444 Mon Sep 17 00:00:00 2001 From: Jatin <140497406+jatinriverlane@users.noreply.github.com> Date: Tue, 8 Oct 2024 14:29:21 +0000 Subject: [PATCH 2/5] fix pylint and failing unit tests --- aqueductcore/backend/models/task.py | 2 +- aqueductcore/backend/routers/graphql/types.py | 2 +- aqueductcore/backend/services/utils.py | 14 ++++++++------ tests/unittests/initial_data.py | 4 ++-- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/aqueductcore/backend/models/task.py b/aqueductcore/backend/models/task.py index c2f75c91..90c193ee 100644 --- a/aqueductcore/backend/models/task.py +++ b/aqueductcore/backend/models/task.py @@ -63,7 +63,7 @@ class TaskParamList(AQDModel): class TaskBase(AQDModel): """Base model for a task.""" - task_id: str + uuid: str experiment_uuid: UUID extension_name: str action_name: str diff --git a/aqueductcore/backend/routers/graphql/types.py b/aqueductcore/backend/routers/graphql/types.py index 99d9c2bf..b1bb27c4 100644 --- a/aqueductcore/backend/routers/graphql/types.py +++ b/aqueductcore/backend/routers/graphql/types.py @@ -272,7 +272,7 @@ def task_model_to_node(value: TaskRead) -> TaskData: ] task = TaskData( - uuid=UUID(value.task_id), + uuid=UUID(value.uuid), extension_name=value.extension_name, action_name=value.action_name, task_status=TaskStatus(value.status), diff --git a/aqueductcore/backend/services/utils.py b/aqueductcore/backend/services/utils.py index e327ba8b..9439e354 100644 --- a/aqueductcore/backend/services/utils.py +++ b/aqueductcore/backend/services/utils.py @@ -31,7 +31,7 @@ async def task_orm_to_model( username = value.created_by_user.username task = TaskRead( - task_id=value.uuid, + uuid=value.uuid, experiment_uuid=experiment_uuid, extension_name=value.extension_name, action_name=value.action_name, @@ -56,7 +56,7 @@ def task_model_to_orm( ) -> orm.Task: """Convert ORM Experiment to Pydantic Model""" return orm.Task( - task_id=value.task_id, + uuid=value.uuid, action_name=value.action_name, extension_name=value.extension_name, parameters=(value.parameters.model_dump_json() if value.parameters else None), @@ -133,9 +133,11 @@ def format_list_human_readable(arr: List[Union[str, int]]) -> str: if not str_arr: return "" - elif len(str_arr) == 1: + + if len(str_arr) == 1: return str_arr[0] - elif len(str_arr) == 2: + + if len(str_arr) == 2: return " and ".join(str_arr) - else: - return f"{', '.join(str_arr[:-1])} and {str_arr[-1]}" + + return f"{', '.join(str_arr[:-1])} and {str_arr[-1]}" diff --git a/tests/unittests/initial_data.py b/tests/unittests/initial_data.py index 862bdc11..842a7b2a 100644 --- a/tests/unittests/initial_data.py +++ b/tests/unittests/initial_data.py @@ -310,7 +310,7 @@ task_data = [ TaskCreate( - task_id=str(UUID(int=1000 + i)), + uuid=str(UUID(int=1000 + i)), experiment_uuid=experiment.uuid, action_name="dummy action", extension_name="dummy extension", @@ -335,7 +335,7 @@ for i, experiment in enumerate(experiment_data) ] + [ TaskCreate( - task_id=str(UUID(int=1100 + i)), + uuid=str(UUID(int=1100 + i)), experiment_uuid=experiment.uuid, action_name="dummy action two", extension_name="dummy extension two", From 1d019220c0b8c379d53dbbfbedb9d3d5eead15f3 Mon Sep 17 00:00:00 2001 From: Jatin <140497406+jatinriverlane@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:47:20 +0100 Subject: [PATCH 3/5] add migration to rename task_id to uuid --- .../c12374978a12_rename_task_id_to_uuid.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 alembic/versions/c12374978a12_rename_task_id_to_uuid.py diff --git a/alembic/versions/c12374978a12_rename_task_id_to_uuid.py b/alembic/versions/c12374978a12_rename_task_id_to_uuid.py new file mode 100644 index 00000000..74817d3a --- /dev/null +++ b/alembic/versions/c12374978a12_rename_task_id_to_uuid.py @@ -0,0 +1,28 @@ +"""Rename task_id to uuid + +Revision ID: c12374978a12 +Revises: 6d5f957d035c +Create Date: 2024-10-11 11:44:29.159937 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'c12374978a12' +down_revision: Union[str, None] = '6d5f957d035c' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('tasks', 'task_id', new_column_name='uuid') + # ### end Alembic commands ### + + +def downgrade() -> None: + pass From 8545f21548d8cc37c9054f4a7a2ca1b0004525e4 Mon Sep 17 00:00:00 2001 From: Jatin <140497406+jatinriverlane@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:38:28 +0000 Subject: [PATCH 4/5] fixed changes suggested in comments --- aqueductcore/backend/services/task_executor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aqueductcore/backend/services/task_executor.py b/aqueductcore/backend/services/task_executor.py index ce2d1079..1d33f511 100644 --- a/aqueductcore/backend/services/task_executor.py +++ b/aqueductcore/backend/services/task_executor.py @@ -198,8 +198,8 @@ async def revoke_task( if not user_info.can_cancel_task_owned_by(task_user): raise AQDPermission("User has no permission to cancel tasks of this user.") - AsyncResult(db_task.task_id).revoke(terminate=terminate, signal="SIGINT") - task_info = await _update_task_info(task_id=db_task.task_id, wait=False) + AsyncResult(db_task.uuid).revoke(terminate=terminate, signal="SIGINT") + task_info = await _update_task_info(task_id=db_task.uuid, wait=False) username = db_task.created_by_user.username return await task_orm_to_model( From 5c059c84aa97a607edb508d16718a4b15cd76d9f Mon Sep 17 00:00:00 2001 From: Jatin <140497406+jatinriverlane@users.noreply.github.com> Date: Sat, 12 Oct 2024 17:13:22 +0000 Subject: [PATCH 5/5] update changes related to field change in integration tests --- tests/integration/test_extensions_executor.py | 2 +- tests/integration/test_graphql_tasks.py | 57 ++++++++++--------- tests/integration/test_job_scopes.py | 15 ++--- 3 files changed, 39 insertions(+), 35 deletions(-) diff --git a/tests/integration/test_extensions_executor.py b/tests/integration/test_extensions_executor.py index f3824d3d..bf4012c3 100644 --- a/tests/integration/test_extensions_executor.py +++ b/tests/integration/test_extensions_executor.py @@ -52,7 +52,7 @@ async def test_extension_echo( "var7": "string2", }, ) - task_info = await _update_task_info(str(result.task_id), wait=True) + task_info = await _update_task_info(str(result.uuid), wait=True) assert task_info.status == "SUCCESS" assert task_info.result_code == 0 assert ( diff --git a/tests/integration/test_graphql_tasks.py b/tests/integration/test_graphql_tasks.py index 494c2cc0..7748465e 100644 --- a/tests/integration/test_graphql_tasks.py +++ b/tests/integration/test_graphql_tasks.py @@ -40,7 +40,7 @@ resultCode stdErr stdOut - taskId + uuid taskStatus createdBy } @@ -54,7 +54,7 @@ actionName endedAt taskStatus - taskId + uuid stdOut stdErr resultCode @@ -85,7 +85,7 @@ tasks(limit: 100, offset: 0, filters: {actionName: $actionName}) { tasksData { taskStatus - taskId + uuid stdOut stdErr resultCode @@ -119,7 +119,7 @@ tasks(limit: 100, offset: 0, filters: {extensionName: $extensionName}) { tasksData { taskStatus - taskId + uuid stdOut stdErr resultCode @@ -151,7 +151,7 @@ tasks(limit: 100, offset: 0, filters: {username: $username}) { tasksData { taskStatus - taskId + uuid stdOut stdErr resultCode @@ -184,7 +184,7 @@ tasks(limit: 100, offset: 0, filters: {experiment: {type: $type, value: $value}}) { tasksData { taskStatus - taskId + uuid stdOut stdErr resultCode @@ -261,7 +261,7 @@ resultCode stdErr stdOut - taskId + uuid taskStatus createdBy } @@ -277,7 +277,7 @@ resultCode stdErr stdOut - taskId + uuid taskStatus createdBy parameters { @@ -342,7 +342,7 @@ async def test_execute_extension( ) assert resp.errors is None res = resp.data["executeExtension"] - assert UUID(res["taskId"]) + assert UUID(res["uuid"]) assert res["taskStatus"] in ("SUCCESS", "STARTED", "PENDING") @@ -366,8 +366,7 @@ async def test_cancel_task( schema = Schema(query=Query, mutation=Mutation) context = ServerContext( db_session=db_session, - user_info=UserInfo( - uuid=db_user.uuid, username=db_user.username, scopes=set(UserScope)), + user_info=UserInfo(uuid=db_user.uuid, username=db_user.username, scopes=set(UserScope)), ) resp = await schema.execute( query=execute_extension_mutation, @@ -387,7 +386,7 @@ async def test_cancel_task( }, context_value=context, ) - taskId = UUID(resp.data["executeExtension"]["taskId"]) + taskId = UUID(resp.data["executeExtension"]["uuid"]) assert isinstance(taskId, UUID) resp = await schema.execute( query=cancel_task_mutation, @@ -396,7 +395,7 @@ async def test_cancel_task( ) res = resp.data["cancelTask"] - assert UUID(res["taskId"]) + assert UUID(res["uuid"]) # TODO: if we don't wait, most probably this status # will be "PENDING", so after a cycle of waiting this will update @@ -449,13 +448,13 @@ async def test_query_all_tasks( }, context_value=context, ) - taskId = UUID(resp.data["executeExtension"]["taskId"]) + taskId = UUID(resp.data["executeExtension"]["uuid"]) task_ids.append(taskId) resp = await schema.execute(all_tasks_query, context_value=context) assert resp.errors is None - resp_task_ids = [UUID(task["taskId"]) for task in resp.data["tasks"]["tasksData"]] + resp_task_ids = [UUID(task["uuid"]) for task in resp.data["tasks"]["tasksData"]] assert set(resp_task_ids) == set(task_ids) @@ -504,7 +503,7 @@ async def test_query_all_tasks_filter_by_action_name( }, context_value=context, ) - taskId = UUID(resp.data["executeExtension"]["taskId"]) + taskId = UUID(resp.data["executeExtension"]["uuid"]) task_ids.append(taskId) resp = await schema.execute( @@ -514,7 +513,7 @@ async def test_query_all_tasks_filter_by_action_name( ) assert resp.errors is None - resp_task_ids = [UUID(task["taskId"]) for task in resp.data["tasks"]["tasksData"]] + resp_task_ids = [UUID(task["uuid"]) for task in resp.data["tasks"]["tasksData"]] assert set(resp_task_ids) == set(task_ids) users = [task["createdBy"] for task in resp.data["tasks"]["tasksData"]] assert set(users) == {db_user.username} @@ -565,7 +564,7 @@ async def test_query_all_tasks_filter_by_extension_name( }, context_value=context, ) - taskId = UUID(resp.data["executeExtension"]["taskId"]) + taskId = UUID(resp.data["executeExtension"]["uuid"]) task_ids.append(taskId) resp = await schema.execute( @@ -575,7 +574,7 @@ async def test_query_all_tasks_filter_by_extension_name( ) assert resp.errors is None - resp_task_ids = [UUID(task["taskId"]) for task in resp.data["tasks"]["tasksData"]] + resp_task_ids = [UUID(task["uuid"]) for task in resp.data["tasks"]["tasksData"]] assert set(resp_task_ids) == set(task_ids) @@ -608,13 +607,17 @@ async def test_query_all_tasks_filter_by_username( for idx in range(10): context = ServerContext( db_session=db_session, - user_info=UserInfo(uuid=db_user0.uuid, username=db_user0.username, scopes=set(UserScope)), + user_info=UserInfo( + uuid=db_user0.uuid, username=db_user0.username, scopes=set(UserScope) + ), ) if idx > 7: - context = ServerContext( - db_session=db_session, - user_info=UserInfo(uuid=db_user1.uuid, username=db_user1.username, scopes=set(UserScope)), - ) + context = ServerContext( + db_session=db_session, + user_info=UserInfo( + uuid=db_user1.uuid, username=db_user1.username, scopes=set(UserScope) + ), + ) resp = await schema.execute( query=execute_extension_mutation, variable_values={ @@ -633,9 +636,9 @@ async def test_query_all_tasks_filter_by_username( }, context_value=context, ) - taskId = UUID(resp.data["executeExtension"]["taskId"]) + taskId = UUID(resp.data["executeExtension"]["uuid"]) if idx <= 7: - task_ids.append(taskId) + task_ids.append(taskId) resp = await schema.execute( all_tasks_query_filter_by_username, @@ -644,5 +647,5 @@ async def test_query_all_tasks_filter_by_username( ) assert resp.errors is None - resp_task_ids = [UUID(task["taskId"]) for task in resp.data["tasks"]["tasksData"]] + resp_task_ids = [UUID(task["uuid"]) for task in resp.data["tasks"]["tasksData"]] assert set(resp_task_ids) == set(task_ids) diff --git a/tests/integration/test_job_scopes.py b/tests/integration/test_job_scopes.py index 160218fc..fd34c03a 100644 --- a/tests/integration/test_job_scopes.py +++ b/tests/integration/test_job_scopes.py @@ -6,16 +6,17 @@ import pytest import pytest_asyncio - from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine -from aqueductcore.backend.errors import AQDPermission, AQDDBTaskNonExisting from aqueductcore.backend.context import UserInfo, UserScope +from aqueductcore.backend.errors import AQDDBTaskNonExisting, AQDPermission from aqueductcore.backend.models import orm from aqueductcore.backend.models.experiment import ExperimentCreate from aqueductcore.backend.models.task import TaskCreate from aqueductcore.backend.services.task_executor import ( - get_all_tasks, get_task_by_uuid, revoke_task, + get_all_tasks, + get_task_by_uuid, + revoke_task, ) from aqueductcore.backend.services.utils import ( experiment_model_to_orm, @@ -171,7 +172,7 @@ async def test_user_can_see_a_task( ), db_session=my_db_session, ) - assert task.task_id == str(task_id) + assert task.uuid == str(task_id) else: with pytest.raises(AQDPermission): await get_task_by_uuid( @@ -219,7 +220,7 @@ async def test_user_can_cancel_tasks( scopes=scope, ), db_session=my_db_session, - task_id=tasks_data[task_number].task_id, + task_id=tasks_data[task_number].uuid, terminate=False, ) else: @@ -230,7 +231,7 @@ async def test_user_can_cancel_tasks( scopes=scope, ), db_session=my_db_session, - task_id=tasks_data[task_number].task_id, + task_id=tasks_data[task_number].uuid, terminate=False, ) - assert task.task_id == tasks_data[task_number].task_id + assert task.uuid == tasks_data[task_number].uuid