From 645ceacaa220982a968fa47ecf270305c94d77ce Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 12 Aug 2025 13:26:23 +0300 Subject: [PATCH 1/2] HCK-12315: add an ability to populate view by select statement --- reverse_engineering/commandsService.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/reverse_engineering/commandsService.js b/reverse_engineering/commandsService.js index b634751..0238d2b 100644 --- a/reverse_engineering/commandsService.js +++ b/reverse_engineering/commandsService.js @@ -69,7 +69,14 @@ const convertCommandsToReDocs = (commands, originalScript) => { const reData = convertCommandsToEntities(commands, originalScript); const result = reData.entities.map(entity => { - const relatedViews = reData.views.filter(view => view.collectionName === entity.collectionName); + const relatedViews = reData.views.reduce((result, view) => { + if (view.collectionName === entity.collectionName || result.find(v => view.collectionName === v.name)) { + return [...result, view]; + } + + return result; + }, []); + return { objectNames: { collectionName: entity.collectionName, @@ -224,6 +231,13 @@ const createView = (entitiesData, bucket, statementData, originalScript) => { ...statementData.data, selectStatement, }, + ddl: { + script: `CREATE VIEW ${statementData.name} ${statementData.columnNames ? `(${statementData.columnNames})` : ''} AS ${selectStatement};`.replace( + /`/g, + '"', + ), + type: 'postgres', + }, bucketName: statementData.bucketName || bucket, }, ], From 597a2eb4bdfd4e5f48b697a028a1de98c8c5dcba Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 12 Aug 2025 13:35:16 +0300 Subject: [PATCH 2/2] HCK-12315: fix sonar issue --- reverse_engineering/commandsService.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/reverse_engineering/commandsService.js b/reverse_engineering/commandsService.js index 0238d2b..855c9e4 100644 --- a/reverse_engineering/commandsService.js +++ b/reverse_engineering/commandsService.js @@ -220,6 +220,11 @@ const updateField = (entitiesData, bucket, statementData) => { const createView = (entitiesData, bucket, statementData, originalScript) => { const { views } = entitiesData; const selectStatement = `${originalScript.substring(statementData.select.start, statementData.select.stop)}`; + const getDdlScript = () => { + const columnNames = statementData.columnNames ? `(${statementData.columnNames})` : ''; + const script = `CREATE VIEW ${statementData.name} ${columnNames} AS ${selectStatement}`; + return script.replace(/`/g, '"'); + }; return { ...entitiesData, @@ -232,10 +237,7 @@ const createView = (entitiesData, bucket, statementData, originalScript) => { selectStatement, }, ddl: { - script: `CREATE VIEW ${statementData.name} ${statementData.columnNames ? `(${statementData.columnNames})` : ''} AS ${selectStatement};`.replace( - /`/g, - '"', - ), + script: getDdlScript(), type: 'postgres', }, bucketName: statementData.bucketName || bucket,