3
0

Fix reference field data types

From uint64 -> string.
This commit is contained in:
Tomaž Jerman 2020-11-28 14:07:19 +01:00
parent e3c6be868e
commit bcec07f8ff
6 changed files with 60 additions and 13 deletions

View File

@ -53,6 +53,17 @@ func NewComposePage(pg *types.Page, nsRef, modRef, parentRef string) *ComposePag
r.ChartRefs = append(r.ChartRefs, r.AddRef(COMPOSE_CHART_RESOURCE_TYPE, id))
}
case "Calendar":
ff, _ := b.Options["feeds"].([]interface{})
for _, f := range ff {
feed, _ := f.(map[string]interface{})
fOpts, _ := (feed["options"]).(map[string]interface{})
id, _ := fOpts["module"].(string)
if id != "" {
r.ModRefs = append(r.ModRefs, r.AddRef(COMPOSE_MODULE_RESOURCE_TYPE, id))
}
}
case "Metric":
mm, _ := b.Options["metrics"].([]interface{})
for _, m := range mm {

View File

@ -3,6 +3,7 @@ package store
import (
"context"
"fmt"
"strconv"
"time"
"github.com/cortezaproject/corteza-server/compose/types"
@ -154,7 +155,8 @@ func (n *composeModuleState) Encode(ctx context.Context, s store.Storer, state *
mID = mod.ID
}
f.Options["module"] = mID
f.Options["moduleID"] = strconv.FormatUint(mID, 10)
delete(f.Options, "module")
}
}

View File

@ -3,6 +3,7 @@ package store
import (
"context"
"fmt"
"strconv"
"time"
"github.com/cortezaproject/corteza-server/compose/types"
@ -185,7 +186,25 @@ func (n *composePageState) Encode(ctx context.Context, s store.Storer, state *en
if mID <= 0 {
return composeModuleErrUnresolved(resource.MakeIdentifiers(id))
}
b.Options["module"] = mID
b.Options["moduleID"] = strconv.FormatUint(mID, 10)
delete(b.Options, "module")
case "Calendar":
ff, _ := b.Options["feeds"].([]interface{})
for _, f := range ff {
feed, _ := f.(map[string]interface{})
fOpts, _ := (feed["options"]).(map[string]interface{})
id, _ := fOpts["module"].(string)
if id == "" {
continue
}
mID := getModID(id)
if mID <= 0 {
return composeModuleErrUnresolved(resource.MakeIdentifiers(id))
}
fOpts["moduleID"] = strconv.FormatUint(mID, 10)
delete(fOpts, "module")
}
case "Chart":
id, _ := b.Options["chart"].(string)
@ -200,7 +219,8 @@ func (n *composePageState) Encode(ctx context.Context, s store.Storer, state *en
return composeChartErrUnresolved(ii)
}
}
b.Options["chart"] = chr.ID
b.Options["chartID"] = strconv.FormatUint(chr.ID, 10)
delete(b.Options, "chart")
case "Metric":
mm, _ := b.Options["metrics"].([]interface{})
@ -214,7 +234,8 @@ func (n *composePageState) Encode(ctx context.Context, s store.Storer, state *en
if mID <= 0 {
return composeModuleErrUnresolved(resource.MakeIdentifiers(id))
}
mops["module"] = mID
mops["moduleID"] = strconv.FormatUint(mID, 10)
delete(mops, "module")
}
}

View File

@ -27,9 +27,15 @@ type (
)
func (wset *composePageSet) UnmarshalYAML(n *yaml.Node) error {
wx := make(map[uint64]int)
return each(n, func(k, v *yaml.Node) (err error) {
var (
wrap = &composePage{}
wrap = &composePage{
// Set this to something negative so we have an easier time determining
// if we should fix the pages weight
res: &types.Page{Weight: -1},
}
)
if v == nil {
@ -49,6 +55,11 @@ func (wset *composePageSet) UnmarshalYAML(n *yaml.Node) error {
wrap.res.Title = wrap.res.Handle
}
if wrap.res.Weight < 0 {
wrap.res.Weight = wx[wrap.res.SelfID]
}
wx[wrap.res.SelfID]++
*wset = append(*wset, wrap)
return
})

View File

@ -3,6 +3,7 @@ package envoy
import (
"context"
"fmt"
"strconv"
"testing"
"github.com/cortezaproject/corteza-server/compose/types"
@ -62,7 +63,7 @@ func TestModuleRels(t *testing.T) {
ff := mod.Fields
req.Len(ff, 1)
req.Equal("Record", ff[0].Kind)
req.Equal(mod.ID, uint64(ff[0].Options.Int64("module")))
req.Equal(strconv.FormatUint(mod.ID, 10), ff[0].Options.String("moduleID"))
},
},
@ -97,7 +98,7 @@ func TestModuleRels(t *testing.T) {
ff := mod.Fields
req.Len(ff, 1)
req.Equal("Record", ff[0].Kind)
req.Equal(pmod.ID, uint64(ff[0].Options.Int64("module")))
req.Equal(strconv.FormatUint(pmod.ID, 10), ff[0].Options.String("moduleID"))
},
},
@ -133,7 +134,7 @@ func TestModuleRels(t *testing.T) {
ff := mod.Fields
req.Len(ff, 1)
req.Equal("Record", ff[0].Kind)
req.Equal(smod.ID, uint64(ff[0].Options.Int64("module")))
req.Equal(strconv.FormatUint(smod.ID, 10), ff[0].Options.String("moduleID"))
},
},
}

View File

@ -2,6 +2,7 @@ package envoy
import (
"context"
"strconv"
"testing"
"github.com/cortezaproject/corteza-server/compose/types"
@ -117,7 +118,7 @@ func TestProvision(t *testing.T) {
req.Equal([]interface{}{"☆☆☆☆☆", "★☆☆☆☆"}, opt)
req.Equal("Record", m1.Fields[3].Kind)
req.Equal(m2.ID, uint64(m1.Fields[3].Options.Int64("module")))
req.Equal(strconv.FormatUint(m2.ID, 10), m1.Fields[3].Options.String("moduleID"))
opt = getOptSlice(req, "queryFields", m1.Fields[3])
req.Equal([]interface{}{"f1"}, opt)
@ -125,12 +126,12 @@ func TestProvision(t *testing.T) {
req.Len(m1.Fields, 4)
req.Equal("Record", m2.Fields[1].Kind)
req.Equal(m2.ID, uint64(m2.Fields[1].Options.Int64("module")))
req.Equal(strconv.FormatUint(m2.ID, 10), m2.Fields[1].Options.String("moduleID"))
opt = getOptSlice(req, "queryFields", m2.Fields[1])
req.Equal([]interface{}{"f1"}, opt)
req.Equal("Record", m2.Fields[3].Kind)
req.Equal(m3.ID, uint64(m2.Fields[3].Options.Int64("module")))
req.Equal(strconv.FormatUint(m3.ID, 10), m2.Fields[3].Options.String("moduleID"))
opt = getOptSlice(req, "queryFields", m2.Fields[3])
req.Equal([]interface{}{"f1"}, opt)
})
@ -162,10 +163,10 @@ func TestProvision(t *testing.T) {
req.Equal("pg1 b1 content body", pg1.Blocks[0].Options["body"])
req.Equal("RecordList", pg1.Blocks[1].Kind)
req.Equal(m1.ID, uint64((pg1.Blocks[1].Options["module"]).(float64)))
req.Equal(strconv.FormatUint(m1.ID, 10), (pg1.Blocks[1].Options["moduleID"].(string)))
req.Equal("Chart", pg1.Blocks[2].Kind)
req.Equal(ch1.ID, uint64((pg1.Blocks[2].Options["chart"]).(float64)))
req.Equal(strconv.FormatUint(ch1.ID, 10), (pg1.Blocks[2].Options["chartID"].(string)))
// pg2
req.Equal(m1.ID, pg2.ModuleID)