Skip to content

Commit 22a3288

Browse files
authored
Add new browser support (#139)
1 parent 336fbc8 commit 22a3288

File tree

9 files changed

+148
-98
lines changed

9 files changed

+148
-98
lines changed

api/fe.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const { generateScript } = require('../forward_engineering/api/generateScript');
2+
const { generateContainerScript } = require('../forward_engineering/api/generateContainerScript');
3+
const { isDropInStatements } = require('../forward_engineering/api/isDropInStatements');
4+
5+
module.exports = {
6+
generateScript,
7+
generateViewScript(data, logger, callback, app) {
8+
callback(new Error('Forward-Engineering of delta model on view level is not supported'));
9+
},
10+
generateContainerScript,
11+
isDropInStatements,
12+
};

esbuild.package.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ esbuild
1313
.build({
1414
entryPoints: [
1515
path.resolve(__dirname, 'api', 're.js'),
16+
path.resolve(__dirname, 'api', 'fe.js'),
1617
path.resolve(__dirname, 'forward_engineering', 'api.js'),
1718
path.resolve(__dirname, 'forward_engineering', 'ddlProvider.js'),
1819
path.resolve(__dirname, 'forward_engineering', 'dbtProvider.js'),

forward_engineering/api.js

Lines changed: 12 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
const { DROP_STATEMENTS } = require('./helpers/constants');
2-
const logInfo = require('../reverse_engineering/helpers/logInfo');
3-
const { connect, getExternalBrowserUrl } = require('../reverse_engineering/api');
4-
const { logDatabaseVersion } = require('../reverse_engineering/reverseEngineeringService/reverseEngineeringService');
5-
const applyToInstanceHelper = require('./helpers/applyToInstanceHelper');
6-
const {
7-
buildEntityLevelAlterScript,
8-
parseDataForEntityLevelScript,
9-
} = require('./helpers/alterScriptHelpers/alterScriptBuilder');
1+
const { generateScript } = require('./api/generateScript');
2+
const { generateContainerScript } = require('./api/generateContainerScript');
3+
const { isDropInStatements } = require('./api/isDropInStatements');
4+
const { testConnection, getExternalBrowserUrl } = require('./api/testConnection');
5+
const { applyToInstance } = require('./api/applyToInstance');
106

117
/**
128
* @typedef {import('./helpers/alterScriptHelpers/types/AlterScriptDto').AlterScriptDto} AlterScriptDto
@@ -17,10 +13,7 @@ const {
1713
* @typedef {import('./types/coreApplicationDataTypes').ExternalDefinitions} ExternalDefinitions
1814
* @typedef {import('./types/coreApplicationDataTypes').InternalDefinitions} InternalDefinitions
1915
* @typedef {import('./types/coreApplicationDataTypes').ModelDefinitions} ModelDefinitions
20-
* @typedef {import('./types/coreApplicationTypes').App} App
21-
* @typedef {import('./types/coreApplicationTypes').Logger} Logger
22-
* @typedef {import('./types/coreApplicationTypes').CoreData} CoreData
23-
* @typedef {import('./types/coreApplicationTypes').PluginError} PluginError
16+
2417
*
2518
* @typedef {(error?: PluginError | null, result?: any | null) => void} PluginCallback
2619
* */
@@ -44,90 +37,13 @@ const {
4437
*/
4538

4639
module.exports = {
47-
/**
48-
* @param data {CoreData}
49-
* @param logger {Logger}
50-
* @param callback {PluginCallback}
51-
* @param app {App}
52-
* */
53-
generateScript(data, logger, callback, app) {
54-
try {
55-
const parsedData = parseDataForEntityLevelScript(data, app);
56-
const scripts = buildEntityLevelAlterScript(data, app)(parsedData);
57-
58-
callback(null, scripts);
59-
} catch (error) {
60-
logger.log(
61-
'error',
62-
{ message: error.message, stack: error.stack },
63-
'MS SQL Server Forward-Engineering Error',
64-
);
65-
66-
callback({ message: error.message, stack: error.stack });
67-
}
68-
},
40+
generateScript,
6941
generateViewScript(data, logger, callback, app) {
7042
callback(new Error('Forward-Engineering of delta model on view level is not supported'));
7143
},
72-
generateContainerScript(data, logger, callback, app) {
73-
try {
74-
data.jsonSchema = data.collections[0];
75-
this.generateScript(data, logger, callback, app);
76-
} catch (error) {
77-
logger.log(
78-
'error',
79-
{ message: error.message, stack: error.stack },
80-
'MS SQL Server Forward-Engineering Error',
81-
);
82-
83-
callback({ message: error.message, stack: error.stack });
84-
}
85-
},
86-
isDropInStatements(data, logger, callback, app) {
87-
try {
88-
const cb = (error, script = '') =>
89-
callback(
90-
error,
91-
DROP_STATEMENTS.some(statement => script.includes(statement)),
92-
);
93-
94-
if (data.level === 'container') {
95-
this.generateContainerScript(data, logger, cb, app);
96-
} else {
97-
this.generateScript(data, logger, cb, app);
98-
}
99-
} catch (e) {
100-
callback({ message: e.message, stack: e.stack });
101-
}
102-
},
103-
async testConnection(connectionInfo, logger, callback, app) {
104-
try {
105-
logInfo('Test connection', connectionInfo, logger);
106-
if (connectionInfo.authMethod === 'Azure Active Directory (MFA)') {
107-
await getExternalBrowserUrl(connectionInfo, logger, callback, app);
108-
} else {
109-
const client = await connect(connectionInfo, logger, () => {}, app);
110-
await logDatabaseVersion({ client, logger });
111-
}
112-
callback(null);
113-
} catch (error) {
114-
logger.log('error', { message: error.message, stack: error.stack, error }, 'Test connection');
115-
callback({ message: error.message, stack: error.stack });
116-
}
117-
},
118-
async applyToInstance(connectionInfo, logger, callback, app) {
119-
logger.clear();
120-
logInfo('Apply To Instance', connectionInfo, logger);
121-
122-
try {
123-
await applyToInstanceHelper.applyToInstance(connectionInfo, logger, app);
124-
callback(null);
125-
} catch (error) {
126-
callback(error);
127-
}
128-
},
129-
130-
async getExternalBrowserUrl(connectionInfo, logger, cb, app) {
131-
return getExternalBrowserUrl(connectionInfo, logger, cb, app);
132-
},
44+
generateContainerScript,
45+
isDropInStatements,
46+
testConnection,
47+
applyToInstance,
48+
getExternalBrowserUrl,
13349
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const applyToInstanceHelper = require('../helpers/applyToInstanceHelper');
2+
const logInfo = require('../../reverse_engineering/helpers/logInfo');
3+
4+
async function applyToInstance(connectionInfo, logger, callback, app) {
5+
logger.clear();
6+
logInfo('Apply To Instance', connectionInfo, logger);
7+
8+
try {
9+
await applyToInstanceHelper.applyToInstance(connectionInfo, logger, app);
10+
callback(null);
11+
} catch (error) {
12+
callback(error);
13+
}
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 }, 'MS SQL Server 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 {
2+
parseDataForEntityLevelScript,
3+
buildEntityLevelAlterScript,
4+
} = require('../helpers/alterScriptHelpers/alterScriptBuilder');
5+
6+
/**
7+
* @typedef {import('../types/coreApplicationTypes').App} App
8+
* @typedef {import('../types/coreApplicationTypes').Logger} Logger
9+
* @typedef {import('../types/coreApplicationTypes').CoreData} CoreData
10+
* @typedef {import('../types/coreApplicationTypes').PluginError} PluginError
11+
**/
12+
13+
/**
14+
* @param data {CoreData}
15+
* @param logger {Logger}
16+
* @param callback {PluginCallback}
17+
* @param app {App}
18+
* */
19+
function generateScript(data, logger, callback, app) {
20+
try {
21+
const parsedData = parseDataForEntityLevelScript(data, app);
22+
const scripts = buildEntityLevelAlterScript(data, app)(parsedData);
23+
24+
callback(null, scripts);
25+
} catch (error) {
26+
logger.log('error', { message: error.message, stack: error.stack }, 'MS SQL Server Forward-Engineering Error');
27+
28+
callback({ message: error.message, stack: error.stack });
29+
}
30+
}
31+
32+
module.exports = {
33+
generateScript,
34+
};
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');
2+
const { generateContainerScript } = require('./generateContainerScript');
3+
const { generateScript } = require('./generateScript');
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: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const { getExternalBrowserUrl, connect } = require('../../reverse_engineering/api');
2+
const logInfo = require('../../reverse_engineering/helpers/logInfo');
3+
const { logDatabaseVersion } = require('../../reverse_engineering/reverseEngineeringService/reverseEngineeringService');
4+
5+
async function getExternalBrowserUrlLocal(connectionInfo, logger, cb, app) {
6+
return getExternalBrowserUrl(connectionInfo, logger, cb, app);
7+
}
8+
9+
async function testConnection(connectionInfo, logger, callback, app) {
10+
try {
11+
logInfo('Test connection', connectionInfo, logger);
12+
if (connectionInfo.authMethod === 'Azure Active Directory (MFA)') {
13+
await getExternalBrowserUrlLocal(connectionInfo, logger, callback, app);
14+
} else {
15+
const client = await connect(connectionInfo, logger, () => {}, app);
16+
await logDatabaseVersion({ client, logger });
17+
}
18+
callback(null);
19+
} catch (error) {
20+
logger.log('error', { message: error.message, stack: error.stack, error }, 'Test connection');
21+
callback({ message: error.message, stack: error.stack });
22+
}
23+
}
24+
25+
module.exports = {
26+
testConnection,
27+
getExternalBrowserUrl: getExternalBrowserUrlLocal,
28+
};

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)