feat: events list filtering by status (#232)

This commit is contained in:
abelanger5
2024-03-04 14:10:44 -08:00
committed by GitHub
parent 043f23e2a3
commit c4fc355805
16 changed files with 261 additions and 120 deletions
@@ -100,6 +100,8 @@ WorkflowRunList:
$ref: "./workflow_run.yaml#/WorkflowRunList"
WorkflowRunStatus:
$ref: "./workflow_run.yaml#/WorkflowRunStatus"
WorkflowRunStatusList:
$ref: "./workflow_run.yaml#/WorkflowRunStatusList"
JobRunStatus:
$ref: "./workflow_run.yaml#/JobRunStatus"
StepRunStatus:
@@ -76,6 +76,11 @@ WorkflowRunStatus:
- FAILED
- CANCELLED
WorkflowRunStatusList:
type: array
items:
$ref: "#/WorkflowRunStatus"
WorkflowRunTriggeredBy:
type: object
properties:
@@ -43,6 +43,12 @@ withTenant:
type: array
items:
$ref: "../../components/schemas/_index.yaml#/WorkflowID"
- description: A list of workflow run statuses to filter by
in: query
name: statuses
required: false
schema:
$ref: "../../components/schemas/_index.yaml#/WorkflowRunStatusList"
- description: The search query to filter for
in: query
name: search
+10
View File
@@ -53,6 +53,16 @@ func (t *EventService) EventList(ctx echo.Context, request gen.EventListRequestO
listOpts.Offset = &offset
}
if request.Params.Statuses != nil {
statuses := make([]db.WorkflowRunStatus, len(*request.Params.Statuses))
for i, status := range *request.Params.Statuses {
statuses[i] = db.WorkflowRunStatus(status)
}
listOpts.WorkflowRunStatus = statuses
}
listRes, err := t.config.Repository.Event().ListEvents(tenant.ID, listOpts)
if err != nil {
+119 -105
View File
@@ -693,6 +693,9 @@ type WorkflowRunList struct {
// WorkflowRunStatus defines model for WorkflowRunStatus.
type WorkflowRunStatus string
// WorkflowRunStatusList defines model for WorkflowRunStatusList.
type WorkflowRunStatusList = []WorkflowRunStatus
// WorkflowRunTriggeredBy defines model for WorkflowRunTriggeredBy.
type WorkflowRunTriggeredBy struct {
CronParentId *string `json:"cronParentId,omitempty"`
@@ -798,6 +801,9 @@ type EventListParams struct {
// Workflows A list of workflow IDs to filter by
Workflows *[]WorkflowID `form:"workflows,omitempty" json:"workflows,omitempty"`
// Statuses A list of workflow run statuses to filter by
Statuses *WorkflowRunStatusList `form:"statuses,omitempty" json:"statuses,omitempty"`
// Search The search query to filter for
Search *EventSearch `form:"search,omitempty" json:"search,omitempty"`
@@ -1442,6 +1448,13 @@ func (w *ServerInterfaceWrapper) EventList(ctx echo.Context) error {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter workflows: %s", err))
}
// ------------- Optional query parameter "statuses" -------------
err = runtime.BindQueryParameter("form", true, false, "statuses", ctx.QueryParams(), &params.Statuses)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter statuses: %s", err))
}
// ------------- Optional query parameter "search" -------------
err = runtime.BindQueryParameter("form", true, false, "search", ctx.QueryParams(), &params.Search)
@@ -5473,115 +5486,116 @@ func (sh *strictHandler) WorkflowVersionGetDefinition(ctx echo.Context, workflow
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
"AQAA//98DeBsBvwAAA==",
}
// GetSwagger returns the content of the embedded swagger specification file
@@ -61,6 +61,7 @@ import {
WorkflowList,
WorkflowRun,
WorkflowRunList,
WorkflowRunStatusList,
WorkflowVersion,
WorkflowVersionDefinition,
} from "./data-contracts";
@@ -539,6 +540,8 @@ export class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType
keys?: EventKey[];
/** A list of workflow IDs to filter by */
workflows?: WorkflowID[];
/** A list of workflow run statuses to filter by */
statuses?: WorkflowRunStatusList;
/** The search query to filter for */
search?: EventSearch;
/** What to order by */
@@ -465,6 +465,8 @@ export enum WorkflowRunStatus {
CANCELLED = "CANCELLED",
}
export type WorkflowRunStatusList = WorkflowRunStatus[];
export enum JobRunStatus {
PENDING = "PENDING",
RUNNING = "RUNNING",
@@ -78,6 +78,7 @@ export const columns = ({
return <div>{relativeDate(row.original.metadata.createdAt)}</div>;
},
},
// empty columns to get column filtering to work properly
{
accessorKey: 'workflows',
header: () => <></>,
@@ -85,6 +86,13 @@ export const columns = ({
return <div></div>;
},
},
{
accessorKey: 'status',
header: () => <></>,
cell: () => {
return <div></div>;
},
},
{
accessorKey: 'Workflow Runs',
header: ({ column }) => (
+42 -9
View File
@@ -15,6 +15,7 @@ import api, {
EventOrderByDirection,
EventOrderByField,
ReplayEventRequest,
WorkflowRunStatus,
queries,
} from '@/lib/api';
import invariant from 'tiny-invariant';
@@ -133,6 +134,16 @@ function EventsTable() {
return filter?.value as Array<string>;
}, [columnFilters]);
const statuses = useMemo(() => {
const filter = columnFilters.find((filter) => filter.id === 'status');
if (!filter) {
return;
}
return filter?.value as Array<WorkflowRunStatus>;
}, [columnFilters]);
const offset = useMemo(() => {
if (!pagination) {
return;
@@ -155,8 +166,9 @@ function EventsTable() {
offset,
limit: pageSize,
search,
statuses,
}),
refetchInterval: 800,
refetchInterval: 2000,
});
const replayEventsMutation = useMutation({
@@ -204,14 +216,30 @@ function EventsTable() {
);
}, [workflowKeys]);
// useEffect(() => {
// if (listEventsQuery.data?.pagination) {
// setPagination({
// pageIndex: (listEventsQuery.data.pagination.current_page || 1) - 1,
// pageSize: listEventsQuery.data.pagination.num_pages || 0,
// });
// }
// }, [listEventsQuery.data?.pagination]);
const workflowRunStatusFilters = useMemo((): FilterOption[] => {
return [
{
value: WorkflowRunStatus.SUCCEEDED,
label: 'Succeeded',
},
{
value: WorkflowRunStatus.FAILED,
label: 'Failed',
},
{
value: WorkflowRunStatus.RUNNING,
label: 'Running',
},
{
value: WorkflowRunStatus.PENDING,
label: 'Pending',
},
{
value: WorkflowRunStatus.CANCELLED,
label: 'Cancelled',
},
];
}, []);
const tableColumns = columns({
onRowClick: (row: Event) => {
@@ -281,6 +309,11 @@ function EventsTable() {
title: 'Workflow',
options: workflowKeyFilters,
},
{
columnId: 'status',
title: 'Status',
options: workflowRunStatusFilters,
},
]}
actions={actions}
sorting={sorting}
+3
View File
@@ -28,6 +28,9 @@ type ListEventOpts struct {
// (optional) a list of workflow IDs to filter by
Workflows []string
// (optional) a list of workflow run statuses to filter by
WorkflowRunStatus []db.WorkflowRunStatus
// (optional) number of events to skip
Offset *int
+9 -1
View File
@@ -24,7 +24,11 @@ WHERE
(
sqlc.narg('search')::text IS NULL OR
jsonb_path_exists(events."data", cast(concat('$.** ? (@.type() == "string" && @ like_regex "', sqlc.narg('search')::text, '")') as jsonpath))
);
) AND
(
sqlc.narg('statuses')::text[] IS NULL OR
"status" = ANY(cast(sqlc.narg('statuses')::text[] as "WorkflowRunStatus"[]))
);
-- name: CreateEvent :one
INSERT INTO "Event" (
@@ -78,6 +82,10 @@ WHERE
sqlc.narg('search')::text IS NULL OR
workflow.name like concat('%', sqlc.narg('search')::text, '%') OR
jsonb_path_exists(events."data", cast(concat('$.** ? (@.type() == "string" && @ like_regex "', sqlc.narg('search')::text, '")') as jsonpath))
) AND
(
sqlc.narg('statuses')::text[] IS NULL OR
"status" = ANY(cast(sqlc.narg('statuses')::text[] as "WorkflowRunStatus"[]))
)
GROUP BY
events."id"
@@ -37,7 +37,11 @@ WHERE
(
$4::text IS NULL OR
jsonb_path_exists(events."data", cast(concat('$.** ? (@.type() == "string" && @ like_regex "', $4::text, '")') as jsonpath))
)
) AND
(
$5::text[] IS NULL OR
"status" = ANY(cast($5::text[] as "WorkflowRunStatus"[]))
)
`
type CountEventsParams struct {
@@ -45,6 +49,7 @@ type CountEventsParams struct {
Keys []string `json:"keys"`
Workflows []string `json:"workflows"`
Search pgtype.Text `json:"search"`
Statuses []string `json:"statuses"`
}
func (q *Queries) CountEvents(ctx context.Context, db DBTX, arg CountEventsParams) (int64, error) {
@@ -53,6 +58,7 @@ func (q *Queries) CountEvents(ctx context.Context, db DBTX, arg CountEventsParam
arg.Keys,
arg.Workflows,
arg.Search,
arg.Statuses,
)
var total int64
err := row.Scan(&total)
@@ -187,16 +193,20 @@ WHERE
$4::text IS NULL OR
workflow.name like concat('%', $4::text, '%') OR
jsonb_path_exists(events."data", cast(concat('$.** ? (@.type() == "string" && @ like_regex "', $4::text, '")') as jsonpath))
) AND
(
$5::text[] IS NULL OR
"status" = ANY(cast($5::text[] as "WorkflowRunStatus"[]))
)
GROUP BY
events."id"
ORDER BY
case when $5 = 'createdAt ASC' THEN events."createdAt" END ASC ,
case when $5 = 'createdAt DESC' then events."createdAt" END DESC
case when $6 = 'createdAt ASC' THEN events."createdAt" END ASC ,
case when $6 = 'createdAt DESC' then events."createdAt" END DESC
OFFSET
COALESCE($6, 0)
COALESCE($7, 0)
LIMIT
COALESCE($7, 50)
COALESCE($8, 50)
`
type ListEventsParams struct {
@@ -204,6 +214,7 @@ type ListEventsParams struct {
Keys []string `json:"keys"`
Workflows []string `json:"workflows"`
Search pgtype.Text `json:"search"`
Statuses []string `json:"statuses"`
Orderby interface{} `json:"orderby"`
Offset interface{} `json:"offset"`
Limit interface{} `json:"limit"`
@@ -223,6 +234,7 @@ func (q *Queries) ListEvents(ctx context.Context, db DBTX, arg ListEventsParams)
arg.Keys,
arg.Workflows,
arg.Search,
arg.Statuses,
arg.Orderby,
arg.Offset,
arg.Limit,
+11
View File
@@ -85,6 +85,17 @@ func (r *eventRepository) ListEvents(tenantId string, opts *repository.ListEvent
countParams.Workflows = opts.Workflows
}
if opts.WorkflowRunStatus != nil {
statuses := make([]string, 0)
for _, status := range opts.WorkflowRunStatus {
statuses = append(statuses, string(status))
}
queryParams.Statuses = statuses
countParams.Statuses = statuses
}
orderByField := "createdAt"
orderByDirection := "DESC"
@@ -25,6 +25,7 @@ from hatchet_sdk.clients.rest.models.event_list import EventList
from hatchet_sdk.clients.rest.models.event_order_by_direction import EventOrderByDirection
from hatchet_sdk.clients.rest.models.event_order_by_field import EventOrderByField
from hatchet_sdk.clients.rest.models.replay_event_request import ReplayEventRequest
from hatchet_sdk.clients.rest.models.workflow_run_status import WorkflowRunStatus
from hatchet_sdk.clients.rest.api_client import ApiClient, RequestSerialized
from hatchet_sdk.clients.rest.api_response import ApiResponse
@@ -582,6 +583,7 @@ class EventApi:
limit: Annotated[Optional[StrictInt], Field(description="The number to limit by")] = None,
keys: Annotated[Optional[List[StrictStr]], Field(description="A list of keys to filter by")] = None,
workflows: Annotated[Optional[List[StrictStr]], Field(description="A list of workflow IDs to filter by")] = None,
statuses: Annotated[Optional[List[WorkflowRunStatus]], Field(description="A list of workflow run statuses to filter by")] = None,
search: Annotated[Optional[StrictStr], Field(description="The search query to filter for")] = None,
order_by_field: Annotated[Optional[EventOrderByField], Field(description="What to order by")] = None,
order_by_direction: Annotated[Optional[EventOrderByDirection], Field(description="The order direction")] = None,
@@ -612,6 +614,8 @@ class EventApi:
:type keys: List[str]
:param workflows: A list of workflow IDs to filter by
:type workflows: List[str]
:param statuses: A list of workflow run statuses to filter by
:type statuses: List[WorkflowRunStatus]
:param search: The search query to filter for
:type search: str
:param order_by_field: What to order by
@@ -646,6 +650,7 @@ class EventApi:
limit=limit,
keys=keys,
workflows=workflows,
statuses=statuses,
search=search,
order_by_field=order_by_field,
order_by_direction=order_by_direction,
@@ -679,6 +684,7 @@ class EventApi:
limit: Annotated[Optional[StrictInt], Field(description="The number to limit by")] = None,
keys: Annotated[Optional[List[StrictStr]], Field(description="A list of keys to filter by")] = None,
workflows: Annotated[Optional[List[StrictStr]], Field(description="A list of workflow IDs to filter by")] = None,
statuses: Annotated[Optional[List[WorkflowRunStatus]], Field(description="A list of workflow run statuses to filter by")] = None,
search: Annotated[Optional[StrictStr], Field(description="The search query to filter for")] = None,
order_by_field: Annotated[Optional[EventOrderByField], Field(description="What to order by")] = None,
order_by_direction: Annotated[Optional[EventOrderByDirection], Field(description="The order direction")] = None,
@@ -709,6 +715,8 @@ class EventApi:
:type keys: List[str]
:param workflows: A list of workflow IDs to filter by
:type workflows: List[str]
:param statuses: A list of workflow run statuses to filter by
:type statuses: List[WorkflowRunStatus]
:param search: The search query to filter for
:type search: str
:param order_by_field: What to order by
@@ -743,6 +751,7 @@ class EventApi:
limit=limit,
keys=keys,
workflows=workflows,
statuses=statuses,
search=search,
order_by_field=order_by_field,
order_by_direction=order_by_direction,
@@ -776,6 +785,7 @@ class EventApi:
limit: Annotated[Optional[StrictInt], Field(description="The number to limit by")] = None,
keys: Annotated[Optional[List[StrictStr]], Field(description="A list of keys to filter by")] = None,
workflows: Annotated[Optional[List[StrictStr]], Field(description="A list of workflow IDs to filter by")] = None,
statuses: Annotated[Optional[List[WorkflowRunStatus]], Field(description="A list of workflow run statuses to filter by")] = None,
search: Annotated[Optional[StrictStr], Field(description="The search query to filter for")] = None,
order_by_field: Annotated[Optional[EventOrderByField], Field(description="What to order by")] = None,
order_by_direction: Annotated[Optional[EventOrderByDirection], Field(description="The order direction")] = None,
@@ -806,6 +816,8 @@ class EventApi:
:type keys: List[str]
:param workflows: A list of workflow IDs to filter by
:type workflows: List[str]
:param statuses: A list of workflow run statuses to filter by
:type statuses: List[WorkflowRunStatus]
:param search: The search query to filter for
:type search: str
:param order_by_field: What to order by
@@ -840,6 +852,7 @@ class EventApi:
limit=limit,
keys=keys,
workflows=workflows,
statuses=statuses,
search=search,
order_by_field=order_by_field,
order_by_direction=order_by_direction,
@@ -868,6 +881,7 @@ class EventApi:
limit,
keys,
workflows,
statuses,
search,
order_by_field,
order_by_direction,
@@ -882,6 +896,7 @@ class EventApi:
_collection_formats: Dict[str, str] = {
'keys': 'multi',
'workflows': 'multi',
'statuses': 'multi',
}
_path_params: Dict[str, str] = {}
@@ -911,6 +926,10 @@ class EventApi:
_query_params.append(('workflows', workflows))
if statuses is not None:
_query_params.append(('statuses', statuses))
if search is not None:
_query_params.append(('search', search))
@@ -61,6 +61,7 @@ import {
WorkflowList,
WorkflowRun,
WorkflowRunList,
WorkflowRunStatusList,
WorkflowVersion,
WorkflowVersionDefinition,
} from './data-contracts';
@@ -543,6 +544,8 @@ export class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType
keys?: EventKey[];
/** A list of workflow IDs to filter by */
workflows?: WorkflowID[];
/** A list of workflow run statuses to filter by */
statuses?: WorkflowRunStatusList;
/** The search query to filter for */
search?: EventSearch;
/** What to order by */
@@ -465,6 +465,8 @@ export enum WorkflowRunStatus {
CANCELLED = 'CANCELLED',
}
export type WorkflowRunStatusList = WorkflowRunStatus[];
export enum JobRunStatus {
PENDING = 'PENDING',
RUNNING = 'RUNNING',