UNPKG

sgnm-neo4j-excel

Version:
285 lines (284 loc) 11.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.assignDtoPropToEntity = assignDtoPropToEntity; exports.createDynamicCyperCreateQuery = createDynamicCyperCreateQuery; exports.createDynamicCyperObject = createDynamicCyperObject; exports.updateNodeQuery = updateNodeQuery; exports.dynamicLabelAdder = dynamicLabelAdder; exports.dynamicNotLabelAdder = dynamicNotLabelAdder; exports.dynamicOrLabelAdder = dynamicOrLabelAdder; exports.dynamicFilterPropertiesAdder = dynamicFilterPropertiesAdder; exports.dynamicUpdatePropertyAdder = dynamicUpdatePropertyAdder; exports.changeObjectKeyName = changeObjectKeyName; exports.dynamicUpdatePropertyAdderAndAddParameterKey = dynamicUpdatePropertyAdderAndAddParameterKey; exports.dynamicFilterPropertiesAdderAndAddParameterKey = dynamicFilterPropertiesAdderAndAddParameterKey; exports.filterArrayForEmptyString = filterArrayForEmptyString; exports.dynamicOrderByColumnAdder = dynamicOrderByColumnAdder; const common_1 = require("@nestjs/common"); const neo4j_driver_1 = require("neo4j-driver"); const custom_error_object_1 = require("../constant/custom.error.object"); const filter_properties_type_enum_1 = require("../constant/filter.properties.type.enum"); function assignDtoPropToEntity(entity, dto) { Object.entries(dto).forEach((element) => { if (element[1] === null || element[1] === undefined) { throw new common_1.HttpException(custom_error_object_1.undefined_value_recieved, 400); } if (element[0] != "parentId" && element[0] != "labels" && element[0] != "parentKey") { entity[element[0]] = dto[element[0]]; } }); return entity; } function createDynamicCyperCreateQuery(entity, labels) { let uniqueLabels = [...new Set(labels)]; let optionalLabels = ""; if (uniqueLabels && uniqueLabels.length > 0) { uniqueLabels.map((item) => { if (item.trim() === "") { optionalLabels = optionalLabels; } else { optionalLabels = optionalLabels + ":" + item; } }); } let dynamicQueryParameter = `CREATE (node${optionalLabels} {`; Object.entries(entity).forEach((element, index) => { if (element[1] === null || element[1] === undefined) { throw new common_1.HttpException(custom_error_object_1.undefined_value_recieved, 400); } if (index === 0) { dynamicQueryParameter += ` ${element[0]}` + `: $` + `${element[0]}`; } else { dynamicQueryParameter += `,${element[0]}` + `: $` + `${element[0]}`; } if (Object.keys(entity).length === index + 1) { dynamicQueryParameter += ` }) return node`; } }); return dynamicQueryParameter; } function createDynamicCyperObject(entity) { const dynamicObject = {}; Object.entries(entity).forEach((element) => { if (element[1] === null || element[1] === undefined) { throw new common_1.HttpException(custom_error_object_1.undefined_value_recieved, 400); } dynamicObject[element[0]] = entity[element[0]]; }); return dynamicObject; } function updateNodeQuery(id, dto) { id = (0, neo4j_driver_1.int)(id); let dynamicQueryParameter = ` match (node {isDeleted: false}) where id(node) = ${id} set `; Object.keys(dto).forEach((element, index) => { if (Object.keys(dto).length === index + 1) { dynamicQueryParameter += `node.${element}` + `= $` + `${element}`; } else { dynamicQueryParameter += `node.${element}` + `= $` + `${element} ,`; } }); dynamicQueryParameter += ` return node`; return dynamicQueryParameter; } function dynamicLabelAdder(labels) { let uniqueLabels = [...new Set(labels)]; let optionalLabels = ""; if (uniqueLabels && uniqueLabels.length > 0) { uniqueLabels.map((item) => { if (item.trim() === "") { optionalLabels = optionalLabels; } else { optionalLabels = optionalLabels + ":" + item; } }); } return optionalLabels; } function dynamicNotLabelAdder(queryNodeName, notLabels) { let uniqueOrLabels = [...new Set(notLabels)]; let optionalLabels = ""; const notLabelsWithoutEmptyString = uniqueOrLabels.filter((item) => { if (item.trim() !== "") { return item; } }); if (notLabelsWithoutEmptyString && notLabelsWithoutEmptyString.length > 0) { notLabelsWithoutEmptyString.map((item, index) => { if (index === 0) { optionalLabels = optionalLabels + `not ${queryNodeName}:${item} `; } else { optionalLabels = optionalLabels + `and not ${queryNodeName}:${item} `; } }); } return optionalLabels; } function dynamicOrLabelAdder(queryNodeName, notLabels) { let uniqueNotLabels = [...new Set(notLabels)]; let optionalLabels = ""; const notLabelsWithoutEmptyString = uniqueNotLabels.filter((item) => { if (item.trim() !== "") { return item; } }); if (notLabelsWithoutEmptyString && notLabelsWithoutEmptyString.length > 0) { notLabelsWithoutEmptyString.map((item, index) => { if (index === 0) { optionalLabels = optionalLabels + ` ${queryNodeName}:${item} `; } else { optionalLabels = optionalLabels + `or ${queryNodeName}:${item} `; } }); } return optionalLabels; } function dynamicFilterPropertiesAdder(filterProperties, filterPropertiesType = filter_properties_type_enum_1.FilterPropertiesType.NODE) { if ((!filterProperties || Object.keys(filterProperties).length === 0) && filterPropertiesType === filter_properties_type_enum_1.FilterPropertiesType.NODE) { return ")"; } let dynamicQueryParameter = ""; Object.entries(filterProperties).forEach((element, index) => { if (element[1] === null || element[1] === undefined) { throw new common_1.HttpException("undefined_value_recieved", 400); } if (index === 0) { dynamicQueryParameter += ` { ${element[0]}` + `: $` + `${element[0]}`; } else { dynamicQueryParameter += `,${element[0]}` + `: $` + `${element[0]}`; } if (Object.keys(filterProperties).length === index + 1) { if (filterPropertiesType === filter_properties_type_enum_1.FilterPropertiesType.NODE) { dynamicQueryParameter += ` })`; } else { dynamicQueryParameter += ` }`; } } }); return dynamicQueryParameter; } function dynamicUpdatePropertyAdder(queryNodeName, updateProperties) { let dynamicQueryParameter = ""; Object.entries(updateProperties).forEach((element, index) => { if (element[1] === null || element[1] === undefined) { throw new common_1.HttpException(custom_error_object_1.undefined_value_recieved, 400); } if (Object.keys(updateProperties).length === index + 1) { dynamicQueryParameter += `${queryNodeName}.${element[0]}` + `= $` + `${element[0]}`; } else { dynamicQueryParameter += `${queryNodeName}.${element[0]}` + `= $` + `${element[0]} ,`; } }); return dynamicQueryParameter; } function changeObjectKeyName(obj1, addedToKeyString = "1") { const changedObject = Object.fromEntries(Object.entries(obj1).map(([key, value]) => [`${key}${addedToKeyString}`, value])); return changedObject; } function dynamicUpdatePropertyAdderAndAddParameterKey(queryNodeName, updateProperties, parameterKey = "1") { let dynamicQueryParameter = ""; Object.entries(updateProperties).forEach((element, index) => { if (element[1] === null || element[1] === undefined) { throw new common_1.HttpException(custom_error_object_1.undefined_value_recieved, 400); } if (Object.keys(updateProperties).length === index + 1) { dynamicQueryParameter += `${queryNodeName}.${element[0]}` + `= $` + `${element[0]}` + parameterKey; } else { dynamicQueryParameter += `${queryNodeName}.${element[0]}` + `= $` + `${element[0]}` + parameterKey + `,`; } }); return dynamicQueryParameter; } function dynamicFilterPropertiesAdderAndAddParameterKey(filterProperties, filterPropertiesType = filter_properties_type_enum_1.FilterPropertiesType.NODE, parameterKey = "1") { if ((!filterProperties || Object.keys(filterProperties).length === 0) && filterPropertiesType === filter_properties_type_enum_1.FilterPropertiesType.NODE) { return ")"; } let dynamicQueryParameter = ""; Object.entries(filterProperties).forEach((element, index) => { if (element[1] === null || element[1] === undefined) { throw new common_1.HttpException("undefined_value_recieved", 400); } if (index === 0) { dynamicQueryParameter += ` { ${element[0]}` + `: $` + `${element[0]}` + parameterKey; } else { dynamicQueryParameter += `,${element[0]}` + `: $` + `${element[0]}` + parameterKey; } if (Object.keys(filterProperties).length === index + 1) { if (filterPropertiesType === filter_properties_type_enum_1.FilterPropertiesType.NODE) { dynamicQueryParameter += ` })`; } else { dynamicQueryParameter += ` }`; } } }); return dynamicQueryParameter; } function filterArrayForEmptyString(array) { let arrayWithoutEmptyString; if (array.length > 0) { arrayWithoutEmptyString = array.filter((item) => { if (item.trim() !== "" || item !== undefined || item !== null) { return item; } }); } else { arrayWithoutEmptyString = []; } return arrayWithoutEmptyString; } function dynamicOrderByColumnAdder(queryNodeName, orderByColumnArray) { let orderByArray = []; if (typeof orderByColumnArray === 'string') { orderByArray.push(orderByColumnArray); } else { orderByArray = orderByColumnArray; } let optionalLabels = "ORDER BY"; let uniqueorderByColumnArray = [...new Set(orderByArray)]; const uniqueorderByColumnArrayWithoutEmptyString = uniqueorderByColumnArray.filter((item) => { if (item.trim() !== "") { return item; } }); if (uniqueorderByColumnArrayWithoutEmptyString && uniqueorderByColumnArrayWithoutEmptyString.length > 0) { uniqueorderByColumnArrayWithoutEmptyString.map((item, index) => { if (index === 0) { optionalLabels = optionalLabels + ` toLower(${queryNodeName}.${item}) `; } else { optionalLabels = optionalLabels + `, toLower(${queryNodeName}.${item}) `; } }); } return optionalLabels; }