Skip to content

Commit 3b02f5d

Browse files
HCK-13303: script generation options - add browser endpoint (#223)
1 parent 4761ca0 commit 3b02f5d

File tree

10 files changed

+144
-86
lines changed

10 files changed

+144
-86
lines changed

api/fe.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const { generateScript } = require('../forward_engineering/api/generateScript');
2+
const { generateViewScript } = require('../forward_engineering/api/generateViewScript');
3+
const { generateContainerScript } = require('../forward_engineering/api/generateContainerScript');
4+
const { isDropInStatements } = require('../forward_engineering/api/isDropInStatements');
5+
6+
module.exports = {
7+
generateScript,
8+
generateViewScript,
9+
generateContainerScript,
10+
isDropInStatements,
11+
};

esbuild.package.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const RELEASE_FOLDER_PATH = path.join(DEFAULT_RELEASE_FOLDER_PATH, `${packageDat
1212
esbuild
1313
.build({
1414
entryPoints: [
15+
path.resolve(__dirname, 'api', 'fe.js'),
1516
path.resolve(__dirname, 'forward_engineering', 'api.js'),
1617
path.resolve(__dirname, 'forward_engineering', 'ddlProvider.js'),
1718
path.resolve(__dirname, 'forward_engineering', 'dbtProvider.js'),

forward_engineering/api.js

Lines changed: 14 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,17 @@
1-
const _ = require('lodash');
2-
const { commentDropStatements } = require('./helpers/commentHelpers/commentDropStatements.js');
3-
const { DROP_STATEMENTS } = require('./helpers/constants.js');
4-
const { getAlterScript } = require('./helpers/alterScriptFromDeltaHelper.js');
5-
const { applyToInstance } = require('./helpers/applyToInstanceHelper.js');
6-
const reApi = require('../reverse_engineering/api.js');
7-
const { handleError } = require('./helpers/handleError.js');
1+
const { generateScript } = require('./api/generateScript');
2+
const { generateViewScript } = require('./api/generateViewScript');
3+
const { generateContainerScript } = require('./api/generateContainerScript');
4+
const { isDropInStatements } = require('./api/isDropInStatements');
5+
const { applyToInstance } = require('./api/applyToInstance');
6+
const { getExternalBrowserUrl } = require('./api/getExternalBrowserUrl');
7+
const { testConnection } = require('./api/testConnection');
88

99
module.exports = {
10-
generateScript(data, logger, callback, app) {
11-
try {
12-
const ddlProvider = require('./ddlProvider')(_, data.options, app);
13-
14-
const collection = JSON.parse(data.jsonSchema);
15-
16-
if (!collection) {
17-
throw new Error(
18-
'"comparisonModelCollection" is not found. Alter script can be generated only from Delta model',
19-
);
20-
}
21-
22-
const scriptFormat = _.get(data, 'options.targetScriptOptions.keyword');
23-
const script = getAlterScript({ scriptFormat, collection, ddlProvider, app });
24-
25-
const applyDropStatements = data.options?.additionalOptions?.some(
26-
option => option.id === 'applyDropStatements' && option.value,
27-
);
28-
29-
callback(null, applyDropStatements ? script : commentDropStatements(script));
30-
} catch (error) {
31-
logger.log('error', { message: error.message, stack: error.stack }, 'Snowflake Forward-Engineering Error');
32-
33-
callback({ message: error.message, stack: error.stack });
34-
}
35-
},
36-
37-
generateContainerScript(data, logger, callback, app) {
38-
try {
39-
data.jsonSchema = data.collections[0];
40-
this.generateScript(data, logger, callback, app);
41-
} catch (error) {
42-
logger.log('error', { message: error.message, stack: error.stack }, 'Snowflake Forward-Engineering Error');
43-
44-
callback({ message: error.message, stack: error.stack });
45-
}
46-
},
47-
48-
applyToInstance(connectionInfo, logger, callback, app) {
49-
logger.clear();
50-
logger.log(
51-
'info',
52-
_.omit(connectionInfo, 'script', 'containerData'),
53-
'connectionInfo',
54-
connectionInfo.hiddenKeys,
55-
);
56-
57-
applyToInstance(connectionInfo, logger, app)
58-
.then(result => {
59-
callback(null, result);
60-
})
61-
.catch(error => handleError(logger, error, callback));
62-
},
63-
64-
async getExternalBrowserUrl(connectionInfo, logger, cb, app) {
65-
reApi.getExternalBrowserUrl(connectionInfo, logger, cb, app);
66-
},
67-
68-
testConnection(connectionInfo, logger, callback, app) {
69-
reApi.testConnection(connectionInfo, logger, callback, app);
70-
},
71-
72-
isDropInStatements(data, logger, callback, app) {
73-
try {
74-
const cb = (error, script = '') =>
75-
callback(
76-
error,
77-
DROP_STATEMENTS.some(statement => script.includes(statement)),
78-
);
79-
80-
if (data.level === 'container') {
81-
this.generateContainerScript(data, logger, cb, app);
82-
} else {
83-
this.generateScript(data, logger, cb, app);
84-
}
85-
} catch (e) {
86-
callback({ message: e.message, stack: e.stack });
87-
}
88-
},
10+
generateScript,
11+
generateViewScript,
12+
generateContainerScript,
13+
applyToInstance,
14+
getExternalBrowserUrl,
15+
testConnection,
16+
isDropInStatements,
8917
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const _ = require('lodash');
2+
const { applyToInstance: applyToInstanceHelper } = require('../helpers/applyToInstanceHelper.js');
3+
const { handleError } = require('../helpers/handleError.js');
4+
5+
function applyToInstance(connectionInfo, logger, callback, app) {
6+
logger.clear();
7+
logger.log('info', _.omit(connectionInfo, 'script', 'containerData'), 'connectionInfo', connectionInfo.hiddenKeys);
8+
9+
applyToInstanceHelper(connectionInfo, logger)
10+
.then(result => {
11+
callback(null, result);
12+
})
13+
.catch(error => handleError(logger, error, callback));
14+
}
15+
16+
module.exports = {
17+
applyToInstance,
18+
};
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const { generateScript } = require('./generateScript');
2+
3+
function generateContainerScript(data, logger, callback, app) {
4+
try {
5+
data.jsonSchema = data.collections[0];
6+
generateScript(data, logger, callback, app);
7+
} catch (error) {
8+
logger.log('error', { message: error.message, stack: error.stack }, 'Snowflake Forward-Engineering Error');
9+
10+
callback({ message: error.message, stack: error.stack });
11+
}
12+
}
13+
14+
module.exports = {
15+
generateContainerScript,
16+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
const _ = require('lodash');
2+
const { commentDropStatements } = require('../helpers/commentHelpers/commentDropStatements.js');
3+
const { getAlterScript } = require('../helpers/alterScriptFromDeltaHelper.js');
4+
5+
function generateScript(data, logger, callback, app) {
6+
try {
7+
const ddlProvider = require('../ddlProvider')(_, data.options, app);
8+
9+
const collection = JSON.parse(data.jsonSchema);
10+
11+
if (!collection) {
12+
throw new Error(
13+
'"comparisonModelCollection" is not found. Alter script can be generated only from Delta model',
14+
);
15+
}
16+
17+
const scriptFormat = _.get(data, 'options.targetScriptOptions.keyword');
18+
const script = getAlterScript({ scriptFormat, collection, ddlProvider, app });
19+
20+
const applyDropStatements = data.options?.additionalOptions?.some(
21+
option => option.id === 'applyDropStatements' && option.value,
22+
);
23+
24+
callback(null, applyDropStatements ? script : commentDropStatements(script));
25+
} catch (error) {
26+
logger.log('error', { message: error.message, stack: error.stack }, 'Snowflake Forward-Engineering Error');
27+
28+
callback({ message: error.message, stack: error.stack });
29+
}
30+
}
31+
32+
module.exports = {
33+
generateScript,
34+
};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
function generateViewScript(data, logger, callback, app) {
2+
callback(new Error('Forward-Engineering of delta model on view level is not supported'));
3+
}
4+
5+
module.exports = {
6+
generateViewScript,
7+
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const reApi = require('../../reverse_engineering/api.js');
2+
3+
async function getExternalBrowserUrl(connectionInfo, logger, cb, app) {
4+
reApi.getExternalBrowserUrl(connectionInfo, logger, cb, app);
5+
}
6+
7+
module.exports = {
8+
getExternalBrowserUrl,
9+
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const { DROP_STATEMENTS } = require('../helpers/constants.js');
2+
const { generateScript } = require('./generateScript');
3+
const { generateContainerScript } = require('./generateContainerScript');
4+
5+
function isDropInStatements(data, logger, callback, app) {
6+
try {
7+
const cb = (error, script = '') =>
8+
callback(
9+
error,
10+
DROP_STATEMENTS.some(statement => script.includes(statement)),
11+
);
12+
13+
if (data.level === 'container') {
14+
generateContainerScript(data, logger, cb, app);
15+
} else {
16+
generateScript(data, logger, cb, app);
17+
}
18+
} catch (e) {
19+
callback({ message: e.message, stack: e.stack });
20+
}
21+
}
22+
23+
module.exports = {
24+
isDropInStatements,
25+
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const reApi = require('../../reverse_engineering/api.js');
2+
3+
function testConnection(connectionInfo, logger, callback, app) {
4+
reApi.testConnection(connectionInfo, logger, callback, app);
5+
}
6+
7+
module.exports = {
8+
testConnection,
9+
};

0 commit comments

Comments
 (0)