3
0

Fix label handling (broken after store refactor)

This commit is contained in:
Denis Arh
2022-07-03 13:20:00 +02:00
parent 188b7f3b44
commit 013053d8a8
4 changed files with 38 additions and 3 deletions

View File

@@ -74,6 +74,17 @@ resources: {
value: {}
}
filter: {
expIdent: "LabelFilter"
struct: {
kind: {}
rel_resource: { goType: "[]uint64", ident: "resourceID" }
limit: { goType: "uint" }
}
byValue: ["kind" , "rel_resource", ]
}
store: {
api: {
lookups: [

View File

@@ -158,9 +158,6 @@ func Create(ctx context.Context, s store.Labels, r LabeledResource) error {
// Update updates or creates all labels on labeled resource and removes all non explicitly defined
func Update(ctx context.Context, s store.Labels, r LabeledResource) error {
// @tmp
return nil
var (
err error
labels = r.GetLabels()

View File

@@ -11,6 +11,7 @@ import (
"github.com/cortezaproject/corteza-server/pkg/actionlog"
discoveryType "github.com/cortezaproject/corteza-server/pkg/discovery/types"
"github.com/cortezaproject/corteza-server/pkg/filter"
labelsType "github.com/cortezaproject/corteza-server/pkg/label/types"
systemType "github.com/cortezaproject/corteza-server/system/types"
"github.com/doug-martin/goqu/v9"
"github.com/doug-martin/goqu/v9/exp"
@@ -131,6 +132,24 @@ func DefaultFilters() (f *extendedFilters) {
return ee, f, nil
}
f.Label = func(store *Store, f labelsType.LabelFilter) (ee []goqu.Expression, _ labelsType.LabelFilter, err error) {
if ee, f, err = LabelFilter(f); err != nil {
return
}
if len(f.Filter) > 0 {
values := make([]goqu.Expression, 0, len(f.Filter))
for k, v := range f.Filter {
values = append(values, exp.Ex{"name": k, "value": v})
}
ee = append(ee, goqu.Or(values...))
}
return ee, f, nil
}
f.Reminder = func(s *Store, f systemType.ReminderFilter) (ee []goqu.Expression, _ systemType.ReminderFilter, err error) {
if ee, f, err = ReminderFilter(f); err != nil {
return

View File

@@ -931,6 +931,14 @@ func FlagFilter(f flagType.FlagFilter) (ee []goqu.Expression, _ flagType.FlagFil
// This function is auto-generated
func LabelFilter(f labelsType.LabelFilter) (ee []goqu.Expression, _ labelsType.LabelFilter, err error) {
if val := strings.TrimSpace(f.Kind); len(val) > 0 {
ee = append(ee, goqu.C("kind").Eq(f.Kind))
}
if len(f.ResourceID) > 0 {
ee = append(ee, goqu.C("rel_resource").In(f.ResourceID))
}
return ee, f, err
}