sgnm-neo4j
Version:
neo4j module for nestJs
391 lines (390 loc) • 16.5 kB
JavaScript
;
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;