3
0

Fix workflow filtering and response encodings

Fix backend and replaced []uint64 with []string for
filter.workflowID that corrupted the input value
for JavaScript (uint64 vs int64).

Also implements actual filtering by workflow on RDBMS
that was missing
This commit is contained in:
Denis Arh 2022-10-19 10:09:23 +02:00
parent 1fa5f39ab2
commit ca7d4b00c0
4 changed files with 14 additions and 4 deletions

View File

@ -12,7 +12,6 @@ import (
"github.com/cortezaproject/corteza-server/pkg/api"
"github.com/cortezaproject/corteza-server/pkg/expr"
"github.com/cortezaproject/corteza-server/pkg/filter"
"github.com/cortezaproject/corteza-server/pkg/payload"
)
type (
@ -83,7 +82,7 @@ func (ctrl Workflow) List(ctx context.Context, r *request.WorkflowList) (interfa
var (
err error
f = types.WorkflowFilter{
WorkflowID: payload.ParseUint64s(r.WorkflowID),
WorkflowID: r.WorkflowID,
Query: r.Query,
Labels: r.Labels,
Deleted: filter.State(r.Deleted),

View File

@ -46,7 +46,7 @@ type (
}
WorkflowFilter struct {
WorkflowID []uint64 `json:"workflowID"`
WorkflowID []string `json:"workflowID"`
Query string `json:"query"`

View File

@ -62,12 +62,15 @@ workflow: {
filter: {
struct: {
workflow_id: { goType: "[]string", ident: "workflowID", storeIdent: "id" }
sub_workflow: { goType: "filter.State", storeIdent: "deleted_at" }
deleted: { goType: "filter.State", storeIdent: "deleted_at" }
disabled: { goType: "filter.State", storeIdent: "enabled" }
}
query: ["handle"]
byNilState: ["deleted"]
byValue: ["workflow_id"]
byNilState: ["deleted", "sub_workflow"]
byFalseState: ["disabled"]
}

View File

@ -451,10 +451,18 @@ func AutomationWorkflowFilter(f automationType.WorkflowFilter) (ee []goqu.Expres
ee = append(ee, expr)
}
if expr := stateNilComparison("deleted_at", f.SubWorkflow); expr != nil {
ee = append(ee, expr)
}
if expr := stateFalseComparison("enabled", f.Disabled); expr != nil {
ee = append(ee, expr)
}
if ss := trimStringSlice(f.WorkflowID); len(ss) > 0 {
ee = append(ee, goqu.C("id").In(ss))
}
if len(f.LabeledIDs) > 0 {
ee = append(ee, goqu.I("id").In(f.LabeledIDs))
}