Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package service
|
|
|
|
import (
|
|
ct "github.com/cortezaproject/corteza/server/compose/types"
|
|
"github.com/cortezaproject/corteza/server/federation/types"
|
|
)
|
|
|
|
type (
|
|
Mapper struct{}
|
|
)
|
|
|
|
// Merge copies the values from originating structure
|
|
// do the destination
|
|
//
|
|
// mostly, there will be less mapped fields on the destination
|
|
// side, so start looping from here
|
|
func (m *Mapper) Merge(in *ct.RecordValueSet, out *ct.RecordValueSet, mappings *types.ModuleFieldMappingSet) {
|
|
var match *types.ModuleFieldMapping
|
|
|
|
for _, destVal := range *out {
|
|
// preset the value, since we're working with
|
|
// a pointer to an existing structure, could be some leftovers
|
|
destVal.Value = ""
|
|
|
|
// find origin field
|
|
if match, _ = mappings.FindByName(destVal.Name, types.ModuleFieldMappingSetFindTypeDestination); match == nil {
|
|
continue
|
|
}
|
|
|
|
// use the found origin, so the mapping is correct
|
|
for _, origVal := range *in {
|
|
if origVal.Name == match.Origin.Name {
|
|
destVal.Value = origVal.Value
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// Prepare creates a set of Records to be used later
|
|
// when the fields will be mapped via Merge()
|
|
func (m *Mapper) Prepare(mappings types.ModuleFieldMappingSet) (out ct.RecordValueSet) {
|
|
for _, mm := range mappings {
|
|
rv := &ct.RecordValue{
|
|
Name: mm.Destination.Name,
|
|
Value: "",
|
|
}
|
|
out = append(out, rv)
|
|
}
|
|
|
|
return
|
|
}
|