mirror of
https://github.com/foomo/neoscontentrepository.git
synced 2025-10-16 12:35:40 +00:00
31 lines
806 B
Go
31 lines
806 B
Go
package exporter
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/foomo/contentserver/content"
|
|
"github.com/foomo/neoscontentrepository/model"
|
|
)
|
|
|
|
type NodeType string
|
|
|
|
type NodeExporter interface {
|
|
GetRepoNode(node *model.NodeData) (repoNode *content.RepoNode, export bool, err error)
|
|
}
|
|
|
|
var nodeExporterMap = map[string]NodeExporter{}
|
|
var ErrorUnsupportedNodeType = errors.New("unsupported node type: no exporter registered for given node type")
|
|
|
|
func RegisterExporter(nodeType NodeType, exporter NodeExporter) {
|
|
nodeExporterMap[string(nodeType)] = exporter
|
|
}
|
|
|
|
func Export(node *model.NodeData) (repoNode *content.RepoNode, ok bool, err error) {
|
|
nodeExporter, nodeExporterOK := nodeExporterMap[node.NodeType]
|
|
if !nodeExporterOK {
|
|
err = ErrorUnsupportedNodeType
|
|
return
|
|
}
|
|
return nodeExporter.GetRepoNode(node)
|
|
}
|