UNPKG

sgnm-neo4j

Version:
391 lines (390 loc) 16.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dynamicFilterPropertiesAdderAndAddParameterKeyNew = exports.dynamicOrderByColumnAdder = exports.filterArrayForEmptyString = exports.dynamicFilterPropertiesAdderAndAddParameterKey = exports.dynamicUpdatePropertyAdderAndAddParameterKey = exports.changeObjectKeyName = exports.dynamicUpdatePropertyAdder = exports.dateFilterGenerator = exports.dynamicFilterPropertiesAdder = exports.dynamicOrLabelAdder = exports.dynamicNotLabelAdder = exports.dynamicLabelAdder = exports.updateNodeQuery = exports.createDynamicCyperObject = exports.createDynamicCypherCreateWithDatesQuery = exports.createDynamicCyperCreateQuery = exports.assignDtoPropToEntity = void 0; 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; } exports.assignDtoPropToEntity = assignDtoPropToEntity; 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; } exports.createDynamicCyperCreateQuery = createDynamicCyperCreateQuery; function createDynamicCypherCreateWithDatesQuery(entity, dateParamKeys = [], dateTimesParamKeys = [], 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} {`; const getVariableValue = (key) => { if (dateParamKeys.includes(key)) return `date($${key})`; if (dateTimesParamKeys.includes(key)) return `datetime($${key})`; return `$${key}`; }; 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]}` + `: ` + `${getVariableValue(element[0])}`; } else { dynamicQueryParameter += `,${element[0]}` + `: ` + `${getVariableValue(element[0])}`; } if (Object.keys(entity).length === index + 1) { dynamicQueryParameter += ` }) return node`; } }); return dynamicQueryParameter; } exports.createDynamicCypherCreateWithDatesQuery = createDynamicCypherCreateWithDatesQuery; 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; } exports.createDynamicCyperObject = createDynamicCyperObject; 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; } exports.updateNodeQuery = updateNodeQuery; 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; } exports.dynamicLabelAdder = dynamicLabelAdder; 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; } exports.dynamicNotLabelAdder = dynamicNotLabelAdder; 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; } exports.dynamicOrLabelAdder = dynamicOrLabelAdder; 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; } exports.dynamicFilterPropertiesAdder = dynamicFilterPropertiesAdder; function dateFilterGenerator(nodeVariable, filterProperties) { if (!filterProperties || Object.keys(filterProperties).length === 0) { 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 += ` WHERE datetime(${nodeVariable}.$${element[0]})` + element[1].comparisonOperator + `: datetime($` + `${element[1].value})`; } else { dynamicQueryParameter += `AND datetime(${nodeVariable}.$${element[0]})` + element[1].comparisonOperator + `: datetime($` + `${element[1].value})`; } }); return dynamicQueryParameter; } exports.dateFilterGenerator = dateFilterGenerator; 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; } exports.dynamicUpdatePropertyAdder = dynamicUpdatePropertyAdder; function changeObjectKeyName(obj1, addedToKeyString = "1") { const changedObject = Object.fromEntries(Object.entries(obj1).map(([key, value]) => [`${key}${addedToKeyString}`, value])); return changedObject; } exports.changeObjectKeyName = changeObjectKeyName; 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; } exports.dynamicUpdatePropertyAdderAndAddParameterKey = dynamicUpdatePropertyAdderAndAddParameterKey; 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; } exports.dynamicFilterPropertiesAdderAndAddParameterKey = dynamicFilterPropertiesAdderAndAddParameterKey; 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; } exports.filterArrayForEmptyString = filterArrayForEmptyString; 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 + ` toString(${queryNodeName}.${item}) `; } else { optionalLabels = optionalLabels + `, toString(${queryNodeName}.${item}) `; } }); } return optionalLabels; } exports.dynamicOrderByColumnAdder = dynamicOrderByColumnAdder; function dynamicFilterPropertiesAdderAndAddParameterKeyNew(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) { if (typeof element[1] != 'object') { dynamicQueryParameter += ` { ${element[0]}` + `: $` + `${element[0]}` + parameterKey; } else { Object.entries(element[1]).forEach((param, index) => { dynamicQueryParameter += ` { ${param[0]} :${param[1]}`; }); } } else { if (typeof element[1] != 'object') { dynamicQueryParameter += `,${element[0]}` + `: $` + `${element[0]}` + parameterKey; } else { Object.entries(element[1]).forEach((param, index) => { dynamicQueryParameter += ` ,${param[0]} :${param[1]}`; }); } } if (Object.keys(filterProperties).length === index + 1) { if (filterPropertiesType === filter_properties_type_enum_1.FilterPropertiesType.NODE) { dynamicQueryParameter += ` })`; } else { dynamicQueryParameter += ` }`; } } }); return dynamicQueryParameter; } exports.dynamicFilterPropertiesAdderAndAddParameterKeyNew = dynamicFilterPropertiesAdderAndAddParameterKeyNew;