diff --git a/pkg/envoy/resource/compose_record.go b/pkg/envoy/resource/compose_record.go new file mode 100644 index 000000000..6e6d89e87 --- /dev/null +++ b/pkg/envoy/resource/compose_record.go @@ -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 +} diff --git a/pkg/envoy/resource/compose_record_set.go b/pkg/envoy/resource/compose_record_set.go deleted file mode 100644 index 12534f911..000000000 --- a/pkg/envoy/resource/compose_record_set.go +++ /dev/null @@ -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 -} diff --git a/pkg/envoy/yaml/compose_record.go b/pkg/envoy/yaml/compose_record.go index 6ce0dc3b8..051770663 100644 --- a/pkg/envoy/yaml/compose_record.go +++ b/pkg/envoy/yaml/compose_record.go @@ -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"]) }