UNPKG

@neo4j/cypher-builder

Version:

A programmatic API for building Cypher queries for Neo4j

75 lines (74 loc) 2.21 kB
"use strict"; /* * Copyright (c) "Neo4j" * Neo4j Sweden AB [http://neo4j.com] * * This file is part of Neo4j. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.DynamicLabel = exports.Label = void 0; const CypherASTNode_1 = require("../CypherASTNode"); const add_label_token_1 = require("../utils/add-label-token"); const escape_1 = require("../utils/escape"); /** Represents a label attached to a {@link NodeRef | Node} * @group Variables * @example * * ```js * movies.label("Movie") * ``` * * _Cypher:_ * ```cypher * this0:Movie * ``` */ class Label extends CypherASTNode_1.CypherASTNode { /** * @internal */ constructor(node, label) { super(); this.node = node; this.label = label; } /** @internal */ getCypher(env) { const nodeId = this.node.getCypher(env); const labelsStr = this.generateLabelExpressionStr(env); return `${nodeId}${labelsStr}`; } generateLabelExpressionStr(env) { return (0, add_label_token_1.addLabelToken)(env.config.labelOperator, (0, escape_1.escapeLabel)(this.label)); } } exports.Label = Label; class DynamicLabel extends Label { /** * @internal */ constructor(node, expr) { super(node, ""); this.expr = expr; } /** @internal */ getCypher(env) { const nodeId = this.node.getCypher(env); const exprStr = `$(${this.expr.getCypher(env)})`; const labelStr = (0, add_label_token_1.addLabelToken)(env.config.labelOperator, exprStr); return `${nodeId}${labelStr}`; } } exports.DynamicLabel = DynamicLabel;