From 46491269e35131c500835226d43ca15ceade4c2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Mon, 11 Mar 2024 14:40:11 +0300 Subject: [PATCH] refactor: rewrite get execution using useExecution with RQ --- .../src/graphql/queries/get-execution.js | 25 ------------------- .../backend/src/graphql/query-resolvers.js | 2 -- packages/backend/src/graphql/schema.graphql | 1 - .../src/components/ExecutionHeader/index.jsx | 7 ++++-- .../web/src/graphql/queries/get-execution.js | 16 ------------ packages/web/src/hooks/useExecution.js | 18 +++++++++++++ packages/web/src/pages/Execution/index.jsx | 9 +++---- packages/web/src/propTypes/propTypes.js | 2 ++ 8 files changed, 28 insertions(+), 52 deletions(-) delete mode 100644 packages/backend/src/graphql/queries/get-execution.js delete mode 100644 packages/web/src/graphql/queries/get-execution.js create mode 100644 packages/web/src/hooks/useExecution.js diff --git a/packages/backend/src/graphql/queries/get-execution.js b/packages/backend/src/graphql/queries/get-execution.js deleted file mode 100644 index 37659ffb..00000000 --- a/packages/backend/src/graphql/queries/get-execution.js +++ /dev/null @@ -1,25 +0,0 @@ -import Execution from '../../models/execution.js'; - -const getExecution = async (_parent, params, context) => { - const conditions = context.currentUser.can('read', 'Execution'); - const userExecutions = context.currentUser.$relatedQuery('executions'); - const allExecutions = Execution.query(); - const executionBaseQuery = conditions.isCreator - ? userExecutions - : allExecutions; - - const execution = await executionBaseQuery - .clone() - .withGraphFetched({ - flow: { - steps: true, - }, - }) - .withSoftDeleted() - .findById(params.executionId) - .throwIfNotFound(); - - return execution; -}; - -export default getExecution; diff --git a/packages/backend/src/graphql/query-resolvers.js b/packages/backend/src/graphql/query-resolvers.js index 1400d3f0..58b63077 100644 --- a/packages/backend/src/graphql/query-resolvers.js +++ b/packages/backend/src/graphql/query-resolvers.js @@ -7,7 +7,6 @@ import getConnectedApps from './queries/get-connected-apps.js'; import getCurrentUser from './queries/get-current-user.js'; import getDynamicData from './queries/get-dynamic-data.js'; import getDynamicFields from './queries/get-dynamic-fields.js'; -import getExecution from './queries/get-execution.js'; import getExecutions from './queries/get-executions.js'; import getFlow from './queries/get-flow.js'; import getFlows from './queries/get-flows.js'; @@ -39,7 +38,6 @@ const queryResolvers = { getCurrentUser, getDynamicData, getDynamicFields, - getExecution, getExecutions, getFlow, getFlows, diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index acafacdd..2ee3c650 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -13,7 +13,6 @@ type Query { name: String ): FlowConnection getStepWithTestExecutions(stepId: String!): [Step] - getExecution(executionId: String!): Execution getExecutions( limit: Int! offset: Int! diff --git a/packages/web/src/components/ExecutionHeader/index.jsx b/packages/web/src/components/ExecutionHeader/index.jsx index 2b2b7a46..8cc42b15 100644 --- a/packages/web/src/components/ExecutionHeader/index.jsx +++ b/packages/web/src/components/ExecutionHeader/index.jsx @@ -55,8 +55,11 @@ function ExecutionDate(props) { } ExecutionDate.propTypes = { - createdAt: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(Date)]) - .isRequired, + createdAt: PropTypes.oneOfType([ + PropTypes.string, + PropTypes.number, + PropTypes.instanceOf(Date), + ]).isRequired, }; function ExecutionHeader(props) { diff --git a/packages/web/src/graphql/queries/get-execution.js b/packages/web/src/graphql/queries/get-execution.js deleted file mode 100644 index 5c3f81b7..00000000 --- a/packages/web/src/graphql/queries/get-execution.js +++ /dev/null @@ -1,16 +0,0 @@ -import { gql } from '@apollo/client'; -export const GET_EXECUTION = gql` - query GetExecution($executionId: String!) { - getExecution(executionId: $executionId) { - id - testRun - createdAt - updatedAt - flow { - id - name - active - } - } - } -`; diff --git a/packages/web/src/hooks/useExecution.js b/packages/web/src/hooks/useExecution.js new file mode 100644 index 00000000..e9bbf9ef --- /dev/null +++ b/packages/web/src/hooks/useExecution.js @@ -0,0 +1,18 @@ +import { useQuery } from '@tanstack/react-query'; + +import api from 'helpers/api'; + +export default function useExecution({ executionId }) { + const query = useQuery({ + queryKey: ['execution', executionId], + queryFn: async ({ signal }) => { + const { data } = await api.get(`/v1/executions/${executionId}`, { + signal, + }); + + return data; + }, + }); + + return query; +} diff --git a/packages/web/src/pages/Execution/index.jsx b/packages/web/src/pages/Execution/index.jsx index b6a702d1..39cec79a 100644 --- a/packages/web/src/pages/Execution/index.jsx +++ b/packages/web/src/pages/Execution/index.jsx @@ -1,6 +1,5 @@ import * as React from 'react'; import { useParams } from 'react-router-dom'; -import { useQuery } from '@apollo/client'; import Grid from '@mui/material/Grid'; import Box from '@mui/material/Box'; import AlertTitle from '@mui/material/AlertTitle'; @@ -10,16 +9,14 @@ import useFormatMessage from 'hooks/useFormatMessage'; import ExecutionHeader from 'components/ExecutionHeader'; import ExecutionStep from 'components/ExecutionStep'; import Container from 'components/Container'; -import { GET_EXECUTION } from 'graphql/queries/get-execution'; import useExecutionSteps from 'hooks/useExecutionSteps'; +import useExecution from 'hooks/useExecution'; export default function Execution() { const { executionId } = useParams(); const formatMessage = useFormatMessage(); - const { data: execution } = useQuery(GET_EXECUTION, { - variables: { executionId }, - }); + const { data: execution } = useExecution({ executionId }); const { data, @@ -40,7 +37,7 @@ export default function Execution() { return ( - + {!isExecutionStepsLoading && !data?.pages?.[0].data.length && ( diff --git a/packages/web/src/propTypes/propTypes.js b/packages/web/src/propTypes/propTypes.js index 6f6ef17b..b15bf0bc 100644 --- a/packages/web/src/propTypes/propTypes.js +++ b/packages/web/src/propTypes/propTypes.js @@ -279,10 +279,12 @@ export const ExecutionPropType = PropTypes.shape({ executionSteps: PropTypes.arrayOf(ExecutionStepPropType), updatedAt: PropTypes.oneOfType([ PropTypes.string, + PropTypes.number, PropTypes.instanceOf(Date), ]), createdAt: PropTypes.oneOfType([ PropTypes.string, + PropTypes.number, PropTypes.instanceOf(Date), ]), });