Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions reverse_engineering/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,21 @@ module.exports = {
() => {
logger.log('info', 'Successfully connected to the database instance', 'Connection');

neo4j.getRawDbVersion().then(dbVersion => {
logger.log('info', `Database version ${dbVersion}`);
});
neo4j
.getRawDbVersion()
.then(dbVersion => {
logger.log('info', `Database version ${dbVersion}`);
})
.catch(error => {
logger.log(
Comment thread
Vitalii4as marked this conversation as resolved.
'warn',
{
message: error.step || 'Could not retrieve Database version at connect phase',
error: prepareError(error),
},
'Connection',
);
});

cb();
},
Expand Down Expand Up @@ -143,7 +155,7 @@ module.exports = {
logger.log('info', '', 'Start Reverse Engineering Neo4j');

const isMultiDb = await neo4j.supportsMultiDb();
const dbVersion = await neo4j.getDbVersion();
const dbVersion = await neo4j.getDbVersion(logger);
logger.log('info', `Version: ${dbVersion}`, 'Database info');
const modelProps = {
dbVersion,
Expand Down
32 changes: 27 additions & 5 deletions reverse_engineering/neo4jHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -313,13 +313,26 @@ const getSSLConfig = info => {
};

const getRawDbVersion = async () => {
const versionResponse = await execute(
'call dbms.components() yield versions unwind versions as version return version',
);
return _.head(versionResponse)?.version;
try {
const versionResponse = await execute(
'call dbms.components() yield versions unwind versions as version return version',
);
const version = _.head(versionResponse)?.version;

if (!version || typeof version !== 'string') {
throw new Error(
`Expected Neo4j version to be a string, but got "${typeof version}" with value: ${JSON.stringify(version)}`,
);
}

return version;
} catch (error) {
error.step = 'Error in getRawDbVersion detecting Neo4j database version.';
throw error;
}
};

const getDbVersion = async () => {
const getDbVersion = async logger => {
try {
const version = await getRawDbVersion();
const [major, minor] = version.split('.');
Expand All @@ -337,6 +350,15 @@ const getDbVersion = async () => {
}
return '3.x';
} catch (err) {
const errorObj = err instanceof Error ? { message: err.message, stack: err.stack, step: err.step } : err;
logger?.log(
'warn',
{
message: 'Error in getDbVersion',
error: errorObj,
},
'Database info',
);
return '3.x';
}
};
Expand Down