neoscontentrepository/exporter/export.go
Frederik Löffert 21e9ffeee8 initial commit
2019-01-07 13:52:53 +01:00

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)
}