Skip to content

Commit

Permalink
INN 3054 add filter by function slug (#1370)
Browse files Browse the repository at this point in the history
* Filter runs by function slug

* Update gql

* Update to use fnSlug filter
  • Loading branch information
anafilipadealmeida committed May 20, 2024
1 parent b168766 commit e6b185d
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ import {
} from '@inngest/components/types/functionRun';
import { getTimestampDaysAgo, toMaybeDate } from '@inngest/components/utils/date';
import { RiLoopLeftLine } from '@remixicon/react';
import { useQuery } from 'urql';

import { useEnvironment } from '@/app/(organization-active)/(dashboard)/env/[environmentSlug]/environment-context';
import { graphql } from '@/gql';
import { FunctionRunTimeFieldV2 } from '@/gql/graphql';
import { useSkippableGraphQLQuery } from '@/utils/useGraphQLQuery';
import { useSearchParam, useStringArraySearchParam } from '@/utils/useSearchParam';
import Page from '../../../runs/[runID]/page';
import RunsTable from './RunsTable';
Expand All @@ -28,10 +28,11 @@ const GetRunsDocument = graphql(`
$startTime: Time!
$status: [FunctionRunStatus!]
$timeField: FunctionRunTimeFieldV2
$functionSlug: String!
) {
environment: workspace(id: $environmentID) {
runs(
filter: { from: $startTime, status: $status, timeField: $timeField }
filter: { from: $startTime, status: $status, timeField: $timeField, fnSlug: $functionSlug }
orderBy: [{ field: QUEUED_AT, direction: DESC }]
) {
edges {
Expand All @@ -56,7 +57,15 @@ const renderSubComponent = ({ id }: { id: string }) => {
);
};

export default function RunsPage() {
export default function RunsPage({
params,
}: {
params: {
slug: string;
};
}) {
const functionSlug = decodeURIComponent(params.slug);

const [rawFilteredStatus, setFilteredStatus, removeFilteredStatus] =
useStringArraySearchParam('filterStatus');
const [rawTimeField = FunctionRunTimeFieldV2.QueuedAt, setTimeField] =
Expand Down Expand Up @@ -108,20 +117,32 @@ export default function RunsPage() {
}

const environment = useEnvironment();
const [{ data, fetching: fetchingRuns }, refetch] = useQuery({
const res = useSkippableGraphQLQuery({
query: GetRunsDocument,
skip: !functionSlug,
variables: {
environmentID: environment.id,
functionSlug,
startTime: startTime.toISOString(),
status: filteredStatus.length > 0 ? filteredStatus : null,
timeField,
},
});

if (res.error) {
throw res.error;
}

const runsData = res.data?.environment.runs.edges;

if (functionSlug && !runsData && !res.isLoading) {
throw new Error('missing run');
}

{
/* TODO: This is a temp parser */
}
const runs = data?.environment.runs.edges.map((edge) => {
const runs = runsData?.map((edge) => {
const startedAt = toMaybeDate(edge.node.startedAt);
let durationMS = null;
if (startedAt) {
Expand Down Expand Up @@ -151,12 +172,18 @@ export default function RunsPage() {
<StatusFilter selectedStatuses={filteredStatus} onStatusesChange={handleStatusesChange} />
</div>
{/* TODO: wire button */}
<Button label="Refresh" appearance="text" btnAction={refetch} icon={<RiLoopLeftLine />} />
<Button
label="Refresh"
appearance="text"
btnAction={() => {}}
icon={<RiLoopLeftLine />}
disabled
/>
</div>
<RunsTable
//@ts-ignore
data={runs}
isLoading={fetchingRuns}
isLoading={res.isLoading}
renderSubComponent={renderSubComponent}
getRowCanExpand={() => true}
/>
Expand Down
4 changes: 2 additions & 2 deletions ui/apps/dashboard/src/gql/gql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ const documents = {
"\n mutation CreateFunctionReplay(\n $environmentID: UUID!\n $functionID: UUID!\n $name: String!\n $fromRange: ULID!\n $toRange: ULID!\n $statuses: [FunctionRunStatus!]\n ) {\n createFunctionReplay(\n input: {\n workspaceID: $environmentID\n workflowID: $functionID\n name: $name\n fromRange: $fromRange\n toRange: $toRange\n statuses: $statuses\n }\n ) {\n id\n }\n }\n": types.CreateFunctionReplayDocument,
"\n query GetFunctionRunsCount(\n $environmentID: ID!\n $functionSlug: String!\n $functionRunStatuses: [FunctionRunStatus!]\n $timeRangeStart: Time!\n $timeRangeEnd: Time!\n $timeField: FunctionRunTimeField!\n ) {\n environment: workspace(id: $environmentID) {\n function: workflowBySlug(slug: $functionSlug) {\n id\n runs: runsV2(\n filter: {\n status: $functionRunStatuses\n lowerTime: $timeRangeStart\n upperTime: $timeRangeEnd\n timeField: $timeField\n }\n ) {\n totalCount\n }\n }\n }\n }\n": types.GetFunctionRunsCountDocument,
"\n query GetReplays($environmentID: ID!, $functionSlug: String!) {\n environment: workspace(id: $environmentID) {\n id\n function: workflowBySlug(slug: $functionSlug) {\n id\n replays {\n id\n name\n createdAt\n endedAt\n functionRunsScheduledCount\n }\n }\n }\n }\n": types.GetReplaysDocument,
"\n query GetRuns(\n $environmentID: ID!\n $startTime: Time!\n $status: [FunctionRunStatus!]\n $timeField: FunctionRunTimeFieldV2\n ) {\n environment: workspace(id: $environmentID) {\n runs(\n filter: { from: $startTime, status: $status, timeField: $timeField }\n orderBy: [{ field: QUEUED_AT, direction: DESC }]\n ) {\n edges {\n node {\n id\n queuedAt\n endedAt\n startedAt\n status\n }\n }\n }\n }\n }\n": types.GetRunsDocument,
"\n query GetRuns(\n $environmentID: ID!\n $startTime: Time!\n $status: [FunctionRunStatus!]\n $timeField: FunctionRunTimeFieldV2\n $functionSlug: String!\n ) {\n environment: workspace(id: $environmentID) {\n runs(\n filter: { from: $startTime, status: $status, timeField: $timeField, fnSlug: $functionSlug }\n orderBy: [{ field: QUEUED_AT, direction: DESC }]\n ) {\n edges {\n node {\n id\n queuedAt\n endedAt\n startedAt\n status\n }\n }\n }\n }\n }\n": types.GetRunsDocument,
"\n mutation NewIngestKey($input: NewIngestKey!) {\n key: createIngestKey(input: $input) {\n id\n }\n }\n": types.NewIngestKeyDocument,
"\n query GetIngestKeys($environmentID: ID!) {\n environment: workspace(id: $environmentID) {\n ingestKeys {\n id\n name\n createdAt\n source\n }\n }\n }\n": types.GetIngestKeysDocument,
"\n mutation UpdateIngestKey($id: ID!, $input: UpdateIngestKey!) {\n updateIngestKey(id: $id, input: $input) {\n id\n name\n createdAt\n presharedKey\n url\n filter {\n type\n ips\n events\n }\n metadata\n }\n }\n": types.UpdateIngestKeyDocument,
Expand Down Expand Up @@ -323,7 +323,7 @@ export function graphql(source: "\n query GetReplays($environmentID: ID!, $func
/**
* 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 GetRuns(\n $environmentID: ID!\n $startTime: Time!\n $status: [FunctionRunStatus!]\n $timeField: FunctionRunTimeFieldV2\n ) {\n environment: workspace(id: $environmentID) {\n runs(\n filter: { from: $startTime, status: $status, timeField: $timeField }\n orderBy: [{ field: QUEUED_AT, direction: DESC }]\n ) {\n edges {\n node {\n id\n queuedAt\n endedAt\n startedAt\n status\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query GetRuns(\n $environmentID: ID!\n $startTime: Time!\n $status: [FunctionRunStatus!]\n $timeField: FunctionRunTimeFieldV2\n ) {\n environment: workspace(id: $environmentID) {\n runs(\n filter: { from: $startTime, status: $status, timeField: $timeField }\n orderBy: [{ field: QUEUED_AT, direction: DESC }]\n ) {\n edges {\n node {\n id\n queuedAt\n endedAt\n startedAt\n status\n }\n }\n }\n }\n }\n"];
export function graphql(source: "\n query GetRuns(\n $environmentID: ID!\n $startTime: Time!\n $status: [FunctionRunStatus!]\n $timeField: FunctionRunTimeFieldV2\n $functionSlug: String!\n ) {\n environment: workspace(id: $environmentID) {\n runs(\n filter: { from: $startTime, status: $status, timeField: $timeField, fnSlug: $functionSlug }\n orderBy: [{ field: QUEUED_AT, direction: DESC }]\n ) {\n edges {\n node {\n id\n queuedAt\n endedAt\n startedAt\n status\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query GetRuns(\n $environmentID: ID!\n $startTime: Time!\n $status: [FunctionRunStatus!]\n $timeField: FunctionRunTimeFieldV2\n $functionSlug: String!\n ) {\n environment: workspace(id: $environmentID) {\n runs(\n filter: { from: $startTime, status: $status, timeField: $timeField, fnSlug: $functionSlug }\n orderBy: [{ field: QUEUED_AT, direction: DESC }]\n ) {\n edges {\n node {\n id\n queuedAt\n endedAt\n startedAt\n status\n }\n }\n }\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
Expand Down

0 comments on commit e6b185d

Please sign in to comment.