diff --git a/litmus-portal/frontend/src/models/graphql/workflowListData.ts b/litmus-portal/frontend/src/models/graphql/workflowListData.ts index fbda5ace4..a801fe9e1 100644 --- a/litmus-portal/frontend/src/models/graphql/workflowListData.ts +++ b/litmus-portal/frontend/src/models/graphql/workflowListData.ts @@ -97,7 +97,7 @@ export interface ListManifestTemplate { } export interface SortInput { - field: 'Name'; + field: 'Name' | 'Time'; descending?: Boolean; } @@ -116,7 +116,7 @@ export interface ListWorkflowsInput { } export interface ListWorkflowsOutput { - totalNoOfWorkflows: number; + total_no_of_workflows: number; workflows: ScheduledWorkflow[]; } diff --git a/litmus-portal/frontend/src/views/ChaosWorkflows/BrowseSchedule/index.tsx b/litmus-portal/frontend/src/views/ChaosWorkflows/BrowseSchedule/index.tsx index bf703552d..6253c4861 100644 --- a/litmus-portal/frontend/src/views/ChaosWorkflows/BrowseSchedule/index.tsx +++ b/litmus-portal/frontend/src/views/ChaosWorkflows/BrowseSchedule/index.tsx @@ -69,7 +69,7 @@ const BrowseSchedule: React.FC = () => { // State for sorting const [sortData, setSortData] = useState({ - field: 'Name', + field: 'Time', descending: true, }); @@ -366,7 +366,7 @@ const BrowseSchedule: React.FC = () => { diff --git a/litmus-portal/graphql-server/go.sum b/litmus-portal/graphql-server/go.sum index 87738572a..1d98a2bf7 100644 --- a/litmus-portal/graphql-server/go.sum +++ b/litmus-portal/graphql-server/go.sum @@ -625,6 +625,7 @@ github.com/litmuschaos/chaos-scheduler v0.0.0-20210607090343-9952190ad032 h1:Nza github.com/litmuschaos/chaos-scheduler v0.0.0-20210607090343-9952190ad032/go.mod h1:7EO6kbZKeJGKzkchgQepCxywvqNFNvNHW0G+u9923AY= github.com/litmuschaos/elves v0.0.0-20201107015738-552d74669e3c/go.mod h1:DsbHGNUq/78NZozWVVI9Q6eBei4I+JjlkkD5aibJ3MQ= github.com/litmuschaos/litmus v0.0.0-20210623100610-9204af1e8d30 h1:J5+8Q3Zk+K1zw4r3Ar1rvduyXjBvgSyTvrVDdAR1NbE= +github.com/litmuschaos/litmus v0.0.0-20210625045545-48c079aa85a1 h1:yQwgVyBQPlQlNskpmggDxbyFYJXagElNaKIZBXNErw4= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lpabon/godbc v0.1.1/go.mod h1:Jo9QV0cf3U6jZABgiJ2skINAXb9j8m51r07g4KI92ZA= github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f/go.mod h1:JpH9J1c9oX6otFSgdUHwUBUizmKlrMjxWnIAjff4m04= diff --git a/litmus-portal/graphql-server/graph/generated/generated.go b/litmus-portal/graphql-server/graph/generated/generated.go index 04ca4469e..0dc845ee5 100644 --- a/litmus-portal/graphql-server/graph/generated/generated.go +++ b/litmus-portal/graphql-server/graph/generated/generated.go @@ -5268,13 +5268,13 @@ input Pagination { limit: Int! } -enum WorkflowRunSortingField { +enum WorkflowSortingField { Name Time } input WorkflowRunSortInput { - field: WorkflowRunSortingField! + field: WorkflowSortingField! descending: Boolean } @@ -5326,10 +5326,6 @@ input ListWorkflowsInput { filter: WorkflowFilterInput } -enum WorkflowSortingField { - Name -} - input WorkflowSortInput { field: WorkflowSortingField! descending: Boolean @@ -24913,7 +24909,7 @@ func (ec *executionContext) unmarshalInputWorkflowRunSortInput(ctx context.Conte switch k { case "field": var err error - it.Field, err = ec.unmarshalNWorkflowRunSortingField2githubᚗcomᚋlitmuschaosᚋlitmusᚋlitmusᚑportalᚋgraphqlᚑserverᚋgraphᚋmodelᚐWorkflowRunSortingField(ctx, v) + it.Field, err = ec.unmarshalNWorkflowSortingField2githubᚗcomᚋlitmuschaosᚋlitmusᚋlitmusᚑportalᚋgraphqlᚑserverᚋgraphᚋmodelᚐWorkflowSortingField(ctx, v) if err != nil { return it, err } @@ -30638,15 +30634,6 @@ func (ec *executionContext) unmarshalNWorkflowRunInput2githubᚗcomᚋlitmuschao return ec.unmarshalInputWorkflowRunInput(ctx, v) } -func (ec *executionContext) unmarshalNWorkflowRunSortingField2githubᚗcomᚋlitmuschaosᚋlitmusᚋlitmusᚑportalᚋgraphqlᚑserverᚋgraphᚋmodelᚐWorkflowRunSortingField(ctx context.Context, v interface{}) (model.WorkflowRunSortingField, error) { - var res model.WorkflowRunSortingField - return res, res.UnmarshalGQL(v) -} - -func (ec *executionContext) marshalNWorkflowRunSortingField2githubᚗcomᚋlitmuschaosᚋlitmusᚋlitmusᚑportalᚋgraphqlᚑserverᚋgraphᚋmodelᚐWorkflowRunSortingField(ctx context.Context, sel ast.SelectionSet, v model.WorkflowRunSortingField) graphql.Marshaler { - return v -} - func (ec *executionContext) unmarshalNWorkflowRunStatsRequest2githubᚗcomᚋlitmuschaosᚋlitmusᚋlitmusᚑportalᚋgraphqlᚑserverᚋgraphᚋmodelᚐWorkflowRunStatsRequest(ctx context.Context, v interface{}) (model.WorkflowRunStatsRequest, error) { return ec.unmarshalInputWorkflowRunStatsRequest(ctx, v) } diff --git a/litmus-portal/graphql-server/graph/model/models_gen.go b/litmus-portal/graphql-server/graph/model/models_gen.go index df3cec02a..153485796 100644 --- a/litmus-portal/graphql-server/graph/model/models_gen.go +++ b/litmus-portal/graphql-server/graph/model/models_gen.go @@ -628,8 +628,8 @@ type WorkflowRunInput struct { } type WorkflowRunSortInput struct { - Field WorkflowRunSortingField `json:"field"` - Descending *bool `json:"descending"` + Field WorkflowSortingField `json:"field"` + Descending *bool `json:"descending"` } type WorkflowRunStatsRequest struct { @@ -1114,47 +1114,6 @@ func (e UsageSort) MarshalGQL(w io.Writer) { fmt.Fprint(w, strconv.Quote(e.String())) } -type WorkflowRunSortingField string - -const ( - WorkflowRunSortingFieldName WorkflowRunSortingField = "Name" - WorkflowRunSortingFieldTime WorkflowRunSortingField = "Time" -) - -var AllWorkflowRunSortingField = []WorkflowRunSortingField{ - WorkflowRunSortingFieldName, - WorkflowRunSortingFieldTime, -} - -func (e WorkflowRunSortingField) IsValid() bool { - switch e { - case WorkflowRunSortingFieldName, WorkflowRunSortingFieldTime: - return true - } - return false -} - -func (e WorkflowRunSortingField) String() string { - return string(e) -} - -func (e *WorkflowRunSortingField) UnmarshalGQL(v interface{}) error { - str, ok := v.(string) - if !ok { - return fmt.Errorf("enums must be strings") - } - - *e = WorkflowRunSortingField(str) - if !e.IsValid() { - return fmt.Errorf("%s is not a valid WorkflowRunSortingField", str) - } - return nil -} - -func (e WorkflowRunSortingField) MarshalGQL(w io.Writer) { - fmt.Fprint(w, strconv.Quote(e.String())) -} - type WorkflowRunStatus string const ( @@ -1204,15 +1163,17 @@ type WorkflowSortingField string const ( WorkflowSortingFieldName WorkflowSortingField = "Name" + WorkflowSortingFieldTime WorkflowSortingField = "Time" ) var AllWorkflowSortingField = []WorkflowSortingField{ WorkflowSortingFieldName, + WorkflowSortingFieldTime, } func (e WorkflowSortingField) IsValid() bool { switch e { - case WorkflowSortingFieldName: + case WorkflowSortingFieldName, WorkflowSortingFieldTime: return true } return false diff --git a/litmus-portal/graphql-server/graph/workflow.graphqls b/litmus-portal/graphql-server/graph/workflow.graphqls index 8451f2ce6..41941f58a 100644 --- a/litmus-portal/graphql-server/graph/workflow.graphqls +++ b/litmus-portal/graphql-server/graph/workflow.graphqls @@ -22,13 +22,13 @@ input Pagination { limit: Int! } -enum WorkflowRunSortingField { +enum WorkflowSortingField { Name Time } input WorkflowRunSortInput { - field: WorkflowRunSortingField! + field: WorkflowSortingField! descending: Boolean } @@ -80,10 +80,6 @@ input ListWorkflowsInput { filter: WorkflowFilterInput } -enum WorkflowSortingField { - Name -} - input WorkflowSortInput { field: WorkflowSortingField! descending: Boolean diff --git a/litmus-portal/graphql-server/pkg/chaos-workflow/handler/handler.go b/litmus-portal/graphql-server/pkg/chaos-workflow/handler/handler.go index 7c6576ac1..674cfa8e6 100644 --- a/litmus-portal/graphql-server/pkg/chaos-workflow/handler/handler.go +++ b/litmus-portal/graphql-server/pkg/chaos-workflow/handler/handler.go @@ -306,7 +306,7 @@ func QueryWorkflowRuns(input model.GetWorkflowRunsInput) (*model.GetWorkflowsOut var sortStage bson.D switch { - case input.Sort != nil && input.Sort.Field == model.WorkflowRunSortingFieldTime: + case input.Sort != nil && input.Sort.Field == model.WorkflowSortingFieldTime: // Sorting based on LastUpdated time if input.Sort.Descending != nil && *input.Sort.Descending { sortStage = bson.D{ @@ -321,7 +321,7 @@ func QueryWorkflowRuns(input model.GetWorkflowRunsInput) (*model.GetWorkflowsOut }}, } } - case input.Sort != nil && input.Sort.Field == model.WorkflowRunSortingFieldName: + case input.Sort != nil && input.Sort.Field == model.WorkflowSortingFieldName: // Sorting based on WorkflowName time if input.Sort.Descending != nil && *input.Sort.Descending { sortStage = bson.D{ @@ -491,8 +491,25 @@ func QueryListWorkflow(workflowInput model.ListWorkflowsInput) (*model.ListWorkf var sortStage bson.D switch { + + case workflowInput.Sort != nil && workflowInput.Sort.Field == model.WorkflowSortingFieldTime: + // Sorting based on LastUpdated time + if workflowInput.Sort.Descending != nil && *workflowInput.Sort.Descending { + sortStage = bson.D{ + {"$sort", bson.D{ + {"updated_at", -1}, + }}, + } + } else { + sortStage = bson.D{ + {"$sort", bson.D{ + {"updated_at", 1}, + }}, + } + } + case workflowInput.Sort != nil && workflowInput.Sort.Field == model.WorkflowSortingFieldName: - // Sorting based on WorkflowName time + // Sorting based on WorkflowName if workflowInput.Sort.Descending != nil && *workflowInput.Sort.Descending { sortStage = bson.D{ {"$sort", bson.D{