Initial commit
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
// Get the source node from an analysis node
|
||||
function getSourceNode (nodeModel) {
|
||||
var source;
|
||||
if (nodeModel.get('type') === 'source') {
|
||||
source = nodeModel;
|
||||
} else {
|
||||
var primarySource = nodeModel.getPrimarySource && nodeModel.getPrimarySource();
|
||||
if (primarySource && primarySource.get('type') === 'source') {
|
||||
source = primarySource;
|
||||
} else {
|
||||
source = getSourceNode(primarySource);
|
||||
}
|
||||
}
|
||||
|
||||
return source;
|
||||
}
|
||||
|
||||
// Evaluates predicate for the analysis chain from nodeModel
|
||||
function someNode (nodeModel, predicate) {
|
||||
if (predicate(nodeModel)) {
|
||||
return nodeModel;
|
||||
}
|
||||
|
||||
if (nodeModel.get('type') !== 'source') {
|
||||
const source = nodeModel.getPrimarySource && nodeModel.getPrimarySource();
|
||||
|
||||
if (source) {
|
||||
return someNode(source, predicate);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasAnalysisType (type) {
|
||||
return function (node) {
|
||||
return node.get('type') === type;
|
||||
};
|
||||
}
|
||||
|
||||
const hasTradeArea = hasAnalysisType('trade-area');
|
||||
const hasSQLFunction = hasAnalysisType('deprecated-sql-function');
|
||||
|
||||
module.exports = {
|
||||
nodeHasTradeArea: node => someNode(node, hasTradeArea),
|
||||
nodeHasSQLFunction: node => someNode(node, hasSQLFunction),
|
||||
|
||||
// These are defined outside because they're recursive
|
||||
getSourceNode,
|
||||
someNode
|
||||
};
|
||||
Reference in New Issue
Block a user