| 
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');  | 
8 | 8 | 
 
  | 
9 | 9 | 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,  | 
89 | 17 | };  | 
0 commit comments