Allow store encoders to post-process after all resources of type are imported
This commit is contained in:
@@ -202,6 +202,10 @@ func (e StoreEncoder) encode{{.expIdent}}s(ctx context.Context, p envoyx.EncodeP
|
||||
}
|
||||
}
|
||||
|
||||
{{- if .envoy.store.postSetEncoder }}
|
||||
err = e.post{{.expIdent}}sEncode(ctx, p, s, tree, nn)
|
||||
{{end }}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -203,6 +203,11 @@ import (
|
||||
// enable or disable custom logic after the resource is imported
|
||||
extendedEncoder: bool | *false
|
||||
extendedSubResources: bool | *false
|
||||
// temporary until I figure something better.
|
||||
// the idea here is that after all of the modules (or resources x) are imported
|
||||
// only then we should do something over them (like import records).
|
||||
postSetEncoder: bool | *false
|
||||
|
||||
|
||||
// enable or disable additional custom processing for determining
|
||||
// resource references
|
||||
|
||||
Generated
+1
-6
@@ -421,6 +421,7 @@ func (e StoreEncoder) encodeModules(ctx context.Context, p envoyx.EncodeParams,
|
||||
return
|
||||
}
|
||||
}
|
||||
err = e.postModulesEncode(ctx, p, s, tree, nn)
|
||||
|
||||
return
|
||||
}
|
||||
@@ -499,12 +500,6 @@ func (e StoreEncoder) encodeModule(ctx context.Context, p envoyx.EncodeParams, s
|
||||
return
|
||||
}
|
||||
|
||||
err = e.encodeModuleExtendSubResources(ctx, p, s, n, tree)
|
||||
if err != nil {
|
||||
err = errors.Wrap(err, "failed to encode extended sub resources")
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -165,15 +165,21 @@ func (e StoreEncoder) encodeModuleExtend(ctx context.Context, p envoyx.EncodePar
|
||||
return dl.ReplaceModel(ctx, models[0])
|
||||
}
|
||||
|
||||
func (e StoreEncoder) encodeModuleExtendSubResources(ctx context.Context, p envoyx.EncodeParams, s store.Storer, n *envoyx.Node, tree envoyx.Traverser) (err error) {
|
||||
cc := tree.ChildrenForResourceType(n, ComposeRecordDatasourceAuxType)
|
||||
|
||||
func (e StoreEncoder) postModulesEncode(ctx context.Context, p envoyx.EncodeParams, s store.Storer, tree envoyx.Traverser, nn envoyx.NodeSet) (err error) {
|
||||
dl, err := e.grabDal(p)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return e.encodeRecordDatasources(ctx, p, s, dl, cc, tree)
|
||||
for _, n := range nn {
|
||||
cc := tree.ChildrenForResourceType(n, ComposeRecordDatasourceAuxType)
|
||||
err = e.encodeRecordDatasources(ctx, p, s, dl, cc, tree)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (e *StoreEncoder) grabDal(p envoyx.EncodeParams) (dl dal.FullService, err error) {
|
||||
|
||||
@@ -106,8 +106,8 @@ module: {
|
||||
}]
|
||||
}
|
||||
store: {
|
||||
postSetEncoder: true
|
||||
extendedEncoder: true
|
||||
extendedSubResources: true
|
||||
extendedFilterBuilder: true
|
||||
extendedDecoder: true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user