Rework compose record resource
* Decoder, resource, * when reading from yaml, we'll just read it all at once.
This commit is contained in:
parent
3c3ba8a9e4
commit
1007ee6176
46
pkg/envoy/resource/compose_record.go
Normal file
46
pkg/envoy/resource/compose_record.go
Normal file
@ -0,0 +1,46 @@
|
||||
package resource
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/cortezaproject/corteza-server/compose/types"
|
||||
)
|
||||
|
||||
const (
|
||||
COMPOSE_RECORD_RESOURCE_TYPE = "ComposeRecordSet"
|
||||
)
|
||||
|
||||
type (
|
||||
ComposeRecord struct {
|
||||
*base
|
||||
Res *types.Record
|
||||
nsRef string
|
||||
modRef string
|
||||
userRef map[string]string
|
||||
}
|
||||
)
|
||||
|
||||
func NewComposeRecord(res *types.Record, nsRef, modRef string, userRef map[string]string) *ComposeRecord {
|
||||
r := &ComposeRecord{base: &base{}}
|
||||
r.SetResourceType(COMPOSE_RECORD_RESOURCE_TYPE)
|
||||
r.Res = res
|
||||
r.nsRef = nsRef
|
||||
r.modRef = modRef
|
||||
|
||||
r.AddIdentifier(identifiers(res.ID)...)
|
||||
|
||||
r.AddRef(COMPOSE_NAMESPACE_RESOURCE_TYPE, nsRef)
|
||||
r.AddRef(COMPOSE_MODULE_RESOURCE_TYPE, modRef)
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
func (m *ComposeRecord) SearchQuery() types.RecordFilter {
|
||||
f := types.RecordFilter{}
|
||||
|
||||
if m.Res.ID > 0 {
|
||||
f.Query = fmt.Sprintf("recordID=%d", m.Res.ID)
|
||||
}
|
||||
|
||||
return f
|
||||
}
|
||||
@ -1,27 +0,0 @@
|
||||
package resource
|
||||
|
||||
import (
|
||||
"github.com/cortezaproject/corteza-server/compose/types"
|
||||
)
|
||||
|
||||
const (
|
||||
COMPOSE_RECORD_SET_RESOURCE_TYPE = "ComposeRecordSet"
|
||||
)
|
||||
|
||||
type (
|
||||
ComposeRecordSet struct {
|
||||
*base
|
||||
|
||||
Walk Walker
|
||||
}
|
||||
|
||||
Walker func(r *types.Record) error
|
||||
)
|
||||
|
||||
// @todo add record provider
|
||||
func NewComposeRecordSet() *ComposeRecordSet {
|
||||
r := &ComposeRecordSet{base: &base{}}
|
||||
r.SetResourceType(COMPOSE_RECORD_SET_RESOURCE_TYPE)
|
||||
|
||||
return r
|
||||
}
|
||||
@ -11,15 +11,12 @@ import (
|
||||
|
||||
type (
|
||||
composeRecord struct {
|
||||
res *types.Record `yaml:",inline"`
|
||||
res *types.Record `yaml:",inline"`
|
||||
|
||||
refModule string
|
||||
refNamespace string
|
||||
refCreatedBy string
|
||||
refUpdatedBy string
|
||||
refDeletedBy string
|
||||
refOwnedBy string
|
||||
|
||||
rbac rbacRuleSet
|
||||
// createdBy, updatedBy, deletedBy, ownedBy
|
||||
refUser map[string]string
|
||||
}
|
||||
composeRecordSet []*composeRecord
|
||||
|
||||
@ -104,22 +101,15 @@ func (wset composeRecordSet) setNamespaceRef(ref string) error {
|
||||
}
|
||||
|
||||
func (wrap composeRecord) MarshalEnvoy() ([]resource.Interface, error) {
|
||||
var refUsers = []string{}
|
||||
for _, u := range []string{wrap.refCreatedBy, wrap.refUpdatedBy, wrap.refDeletedBy, wrap.refOwnedBy} {
|
||||
if len(u) > 0 {
|
||||
// emails and handles
|
||||
refUsers = append(refUsers, u)
|
||||
}
|
||||
}
|
||||
|
||||
return envoy.CollectNodes(
|
||||
// @todo...
|
||||
resource.NewComposeRecordSet(),
|
||||
wrap.rbac,
|
||||
resource.NewComposeRecord(wrap.res, wrap.refNamespace, wrap.refModule, wrap.refUser),
|
||||
)
|
||||
}
|
||||
|
||||
func (wrap *composeRecord) UnmarshalYAML(n *yaml.Node) (err error) {
|
||||
if wrap.refUser == nil {
|
||||
wrap.refUser = make(map[string]string)
|
||||
}
|
||||
if wrap.res == nil {
|
||||
wrap.res = &types.Record{}
|
||||
}
|
||||
@ -151,13 +141,13 @@ func (wrap *composeRecord) UnmarshalYAML(n *yaml.Node) (err error) {
|
||||
case "deletedAt":
|
||||
return v.Decode(&wrap.res.DeletedAt)
|
||||
case "createdBy":
|
||||
return decodeRef(v, "createdBy user", &wrap.refCreatedBy)
|
||||
return v.Decode(wrap.refUser["createdBy"])
|
||||
case "updatedBy":
|
||||
return decodeRef(v, "updatedBy user", &wrap.refUpdatedBy)
|
||||
return v.Decode(wrap.refUser["updatedBy"])
|
||||
case "deletedBy":
|
||||
return decodeRef(v, "deletedBy user", &wrap.refDeletedBy)
|
||||
return v.Decode(wrap.refUser["deletedBy"])
|
||||
case "ownedBy":
|
||||
return decodeRef(v, "ownedBy user", &wrap.refOwnedBy)
|
||||
return v.Decode(wrap.refUser["ownedBy"])
|
||||
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user