stepzen 0.45.0-beta.2 → 0.45.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -46
- package/bin/dev.js +33 -2
- package/bin/run.js +34 -2
- package/lib/commands/import/db2.d.ts +3 -43
- package/lib/commands/import/db2.d.ts.map +1 -1
- package/lib/commands/import/db2.js +18 -131
- package/lib/commands/import/db2.js.map +1 -1
- package/lib/commands/import/index.d.ts.map +1 -1
- package/lib/commands/import/index.js +2 -1
- package/lib/commands/import/index.js.map +1 -1
- package/lib/commands/import/oracle.d.ts +3 -39
- package/lib/commands/import/oracle.d.ts.map +1 -1
- package/lib/commands/import/oracle.js +16 -120
- package/lib/commands/import/oracle.js.map +1 -1
- package/lib/generate/flags.d.ts +1 -0
- package/lib/generate/flags.d.ts.map +1 -1
- package/lib/generate/flags.js +3 -0
- package/lib/generate/flags.js.map +1 -1
- package/lib/generate/questions.d.ts +4 -0
- package/lib/generate/questions.d.ts.map +1 -1
- package/lib/generate/questions.js +24 -5
- package/lib/generate/questions.js.map +1 -1
- package/lib/generate/sql2sdl.d.ts +9 -3
- package/lib/generate/sql2sdl.d.ts.map +1 -1
- package/lib/generate/sql2sdl.js +56 -41
- package/lib/generate/sql2sdl.js.map +1 -1
- package/lib/shared/segment.d.ts +7 -0
- package/lib/shared/segment.d.ts.map +1 -1
- package/lib/shared/segment.js +54 -243
- package/lib/shared/segment.js.map +1 -1
- package/lib/shared/url-helpers.d.ts +4 -0
- package/lib/shared/url-helpers.d.ts.map +1 -1
- package/lib/shared/url-helpers.js +9 -0
- package/lib/shared/url-helpers.js.map +1 -1
- package/oclif.manifest.json +7 -69
- package/package.json +6 -6
|
@@ -2,65 +2,29 @@ import type { CommonImportOptions } from '../../generate/import-command.js';
|
|
|
2
2
|
import type { DBIntrospectionOptions, OraclesqlImportOptions } from '../../generate/sql2sdl.js';
|
|
3
3
|
import type { FlagsT } from '../../shared/types.js';
|
|
4
4
|
import { ImportCommandBase } from '../../generate/import-command.js';
|
|
5
|
-
type
|
|
6
|
-
driver: string;
|
|
7
|
-
host: string;
|
|
8
|
-
user?: string;
|
|
9
|
-
password?: string;
|
|
10
|
-
port?: number;
|
|
11
|
-
db?: string;
|
|
12
|
-
schema?: string;
|
|
13
|
-
};
|
|
14
|
-
type ParserSuccessResult = {
|
|
15
|
-
success: true;
|
|
16
|
-
value: ParsedDsn;
|
|
17
|
-
};
|
|
18
|
-
type ParserErrorResult = {
|
|
19
|
-
success: false;
|
|
20
|
-
message: string;
|
|
21
|
-
};
|
|
22
|
-
export type ParserResult = ParserSuccessResult | ParserErrorResult;
|
|
23
|
-
export type OracleSQLAnswers = Pick<OraclesqlImportOptions, 'host' | 'user' | 'password' | 'database' | 'schema' | 'linkTypes'>;
|
|
5
|
+
export type OracleSQLAnswers = Pick<OraclesqlImportOptions, 'jdbcUrl' | 'schema' | 'linkTypes'>;
|
|
24
6
|
export default class ImportOracle extends ImportCommandBase {
|
|
25
7
|
get source(): "oracle";
|
|
26
8
|
static description: string;
|
|
27
9
|
static flags: {
|
|
28
|
-
'db-host': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
|
-
'db-user': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
|
-
'db-password': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
31
|
-
'db-database': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
32
10
|
'db-schema': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
33
11
|
'db-link-types': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
34
12
|
'db-include': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
35
13
|
'db-use-deprecated-2022-naming': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
36
14
|
};
|
|
37
15
|
static args: {
|
|
38
|
-
|
|
16
|
+
jdbcUrl: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
39
17
|
};
|
|
40
18
|
protected import(commonOptions: CommonImportOptions): Promise<import("../../shared/types.js").ErrorOr<import("../../generate/helpers.js").IntrospectionServiceResponse>>;
|
|
41
19
|
getImportOptionsFromFlags(flags: FlagsT<typeof ImportOracle>): {
|
|
42
|
-
host: string | undefined;
|
|
43
|
-
user: string | undefined;
|
|
44
|
-
password: string | undefined;
|
|
45
|
-
database: string | undefined;
|
|
46
20
|
schema: string | undefined;
|
|
47
21
|
linkTypes: boolean;
|
|
48
22
|
include: "tables-only" | "views-only" | "tables-and-views" | undefined;
|
|
49
23
|
introspectionOptions: DBIntrospectionOptions;
|
|
50
24
|
};
|
|
51
25
|
getImportOptionsFromDsn(possibleDsn: string): {
|
|
52
|
-
|
|
53
|
-
user: string | undefined;
|
|
54
|
-
password: string | undefined;
|
|
55
|
-
database: string | undefined;
|
|
56
|
-
schema: string | undefined;
|
|
26
|
+
jdbcUrl: string;
|
|
57
27
|
};
|
|
58
28
|
getImportOptionsInteractively(defaults?: Partial<OracleSQLAnswers>): Promise<OracleSQLAnswers>;
|
|
59
|
-
parseDsn(dsn: string): ParserResult;
|
|
60
|
-
isValidJdbcOracleUrl(dsnString: string): {
|
|
61
|
-
status: boolean;
|
|
62
|
-
message?: string;
|
|
63
|
-
};
|
|
64
29
|
}
|
|
65
|
-
export {};
|
|
66
30
|
//# sourceMappingURL=oracle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../../src/commands/import/oracle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAA;AACzE,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAU,MAAM,EAAC,MAAM,uBAAuB,CAAA;AAQ1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../../src/commands/import/oracle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAA;AACzE,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAU,MAAM,EAAC,MAAM,uBAAuB,CAAA;AAQ1D,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAA;AAQlE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,sBAAsB,EACtB,SAAS,GAAG,QAAQ,GAAG,WAAW,CACnC,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,iBAAiB;IACzD,IAAI,MAAM,aAET;IAED,MAAM,CAAC,WAAW,SAMkC;IAEpD,MAAM,CAAC,KAAK;;;;;MAMX;IAED,MAAM,CAAC,IAAI;;MAQV;cAEe,MAAM,CAAC,aAAa,EAAE,mBAAmB;IA0EzD,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC;;;;;;IAe5D,uBAAuB,CAAC,WAAW,EAAE,MAAM;;;IAerC,6BAA6B,CACjC,QAAQ,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACvC,OAAO,CAAC,gBAAgB,CAAC;CAY7B"}
|
|
@@ -9,6 +9,7 @@ import { ImportQuestions } from '../../generate/questions.js';
|
|
|
9
9
|
import { sql2sdl } from '../../generate/sql2sdl.js';
|
|
10
10
|
import { readConfiguration } from '../../shared/configuration.js';
|
|
11
11
|
import * as inquirer from '../../shared/inquirer.js';
|
|
12
|
+
import { isValidJdbcUrl } from '../../shared/url-helpers.js';
|
|
12
13
|
import { rewriteLocalhostToHostGateway } from '../../shared/utils.js';
|
|
13
14
|
export default class ImportOracle extends ImportCommandBase {
|
|
14
15
|
get source() {
|
|
@@ -22,35 +23,27 @@ export default class ImportOracle extends ImportCommandBase {
|
|
|
22
23
|
` queries and mutations into your GraphQL schema.`;
|
|
23
24
|
static flags = {
|
|
24
25
|
...ImportCommandBase.flags,
|
|
25
|
-
'db-host': ImportFlags.dbHost(),
|
|
26
|
-
'db-user': ImportFlags.dbUser(),
|
|
27
|
-
'db-password': ImportFlags.dbPassword(),
|
|
28
|
-
'db-database': ImportFlags.dbDatabase(),
|
|
29
26
|
'db-schema': ImportFlags.dbSchema(),
|
|
30
27
|
'db-link-types': ImportFlags.dbLinkTypes(),
|
|
31
28
|
'db-include': ImportFlags.dbInclude(),
|
|
32
29
|
'db-use-deprecated-2022-naming': ImportFlags.dbUseDeprecatedNaming(),
|
|
33
30
|
};
|
|
34
31
|
static args = {
|
|
35
|
-
|
|
36
|
-
description: chalk `{italic (optional)}
|
|
32
|
+
jdbcUrl: Args.string({
|
|
33
|
+
description: chalk `{italic (optional)} JDBC URL of an Oracle database.` +
|
|
37
34
|
chalk `\nExample: {bold 'jdbc:oracle:thin:user/password@//host:port/db?currentschema=schema'}` +
|
|
38
35
|
chalk `\n` +
|
|
39
|
-
chalk `\
|
|
40
|
-
chalk ` parts of the DSN (if both are provided).`,
|
|
36
|
+
chalk `\nThe {bold --db-schema} flag overrides the schema part of the JDBC URL (if both are provided).`,
|
|
41
37
|
}),
|
|
42
38
|
};
|
|
43
39
|
async import(commonOptions) {
|
|
44
40
|
const { args, flags } = await this.parse(ImportOracle);
|
|
45
41
|
const nonInteractiveOptions = {
|
|
46
|
-
...(args.
|
|
42
|
+
...(args.jdbcUrl ? this.getImportOptionsFromDsn(args.jdbcUrl) : {}),
|
|
47
43
|
...this.getImportOptionsFromFlags(flags),
|
|
48
44
|
};
|
|
49
45
|
const requiredOptions = [
|
|
50
|
-
'
|
|
51
|
-
'user',
|
|
52
|
-
'password',
|
|
53
|
-
'database',
|
|
46
|
+
'jdbcUrl',
|
|
54
47
|
'schema',
|
|
55
48
|
];
|
|
56
49
|
const hasRequiredOptions = requiredOptions.every(option => nonInteractiveOptions[option] !== undefined);
|
|
@@ -67,7 +60,7 @@ export default class ImportOracle extends ImportCommandBase {
|
|
|
67
60
|
}
|
|
68
61
|
else {
|
|
69
62
|
if (flags['non-interactive']) {
|
|
70
|
-
throw new CLIError('Please provide a
|
|
63
|
+
throw new CLIError('Please provide a JDBC URL for a Db2 database.' +
|
|
71
64
|
chalk `\nSee more help with {bold stepzen import oracle --help}`);
|
|
72
65
|
}
|
|
73
66
|
// no parameters given: start an interactive prompt
|
|
@@ -92,15 +85,11 @@ export default class ImportOracle extends ImportCommandBase {
|
|
|
92
85
|
};
|
|
93
86
|
}
|
|
94
87
|
const configuration = await readConfiguration();
|
|
95
|
-
sql2sdlOptions.
|
|
88
|
+
sql2sdlOptions.jdbcUrl = rewriteLocalhostToHostGateway(configuration, sql2sdlOptions.jdbcUrl);
|
|
96
89
|
return this.wrapInProgressAndTimeout(sql2sdl(sql2sdlOptions, configuration));
|
|
97
90
|
}
|
|
98
91
|
getImportOptionsFromFlags(flags) {
|
|
99
92
|
const options = {
|
|
100
|
-
host: flags['db-host'],
|
|
101
|
-
user: flags['db-user'],
|
|
102
|
-
password: flags['db-password'],
|
|
103
|
-
database: flags['db-database'],
|
|
104
93
|
schema: flags['db-schema'],
|
|
105
94
|
linkTypes: flags['db-link-types'],
|
|
106
95
|
include: flags['db-include'],
|
|
@@ -114,116 +103,23 @@ export default class ImportOracle extends ImportCommandBase {
|
|
|
114
103
|
return pickBy(options, value => value !== undefined);
|
|
115
104
|
}
|
|
116
105
|
getImportOptionsFromDsn(possibleDsn) {
|
|
117
|
-
|
|
118
|
-
const parsed =
|
|
119
|
-
if (parsed.
|
|
120
|
-
const value = parsed.value;
|
|
106
|
+
// check the jdbc prefix
|
|
107
|
+
const parsed = isValidJdbcUrl(possibleDsn);
|
|
108
|
+
if (parsed.status) {
|
|
121
109
|
const options = {
|
|
122
|
-
|
|
123
|
-
user: value.user,
|
|
124
|
-
password: value.password,
|
|
125
|
-
database: value.db,
|
|
126
|
-
schema: value.schema,
|
|
110
|
+
jdbcUrl: possibleDsn,
|
|
127
111
|
};
|
|
128
|
-
|
|
129
|
-
return pickBy(options, value => value !== undefined);
|
|
112
|
+
return options;
|
|
130
113
|
}
|
|
131
|
-
throw new CLIError(parsed.message);
|
|
114
|
+
throw new CLIError(parsed && parsed.message ? parsed.message : `Cannot parse DSN`);
|
|
132
115
|
}
|
|
133
116
|
async getImportOptionsInteractively(defaults = {}) {
|
|
134
117
|
const questions = inquirer.overrideDefaults([
|
|
135
|
-
ImportQuestions.
|
|
136
|
-
ImportQuestions.
|
|
137
|
-
ImportQuestions.dbPassword(),
|
|
138
|
-
ImportQuestions.dbDatabase(),
|
|
139
|
-
ImportQuestions.dbSchema({ required: true }),
|
|
118
|
+
ImportQuestions.jdbcUrl(),
|
|
119
|
+
ImportQuestions.dbSchema({ dbDriver: 'oracle', required: false }),
|
|
140
120
|
ImportQuestions.dbLinkTypes(),
|
|
141
121
|
], defaults);
|
|
142
122
|
return inquirer.prompt(`import-${this.source}`, questions);
|
|
143
123
|
}
|
|
144
|
-
parseDsn(dsn) {
|
|
145
|
-
const isValidDsn = this.isValidJdbcOracleUrl(dsn);
|
|
146
|
-
// No jdbc: prefix in the input
|
|
147
|
-
if (isValidDsn.status) {
|
|
148
|
-
const parsedDsn = { driver: 'jdbc:oracle:thin' };
|
|
149
|
-
const [mainDsn, queryParams] = dsn.split('?');
|
|
150
|
-
// Remove the 'oracle:thin:' prefix since the input doesn't have jdbc: at the front
|
|
151
|
-
const urlWithoutPrefix = mainDsn.replace(/^oracle:thin:/i, '');
|
|
152
|
-
if (urlWithoutPrefix.includes('@')) {
|
|
153
|
-
const [userInfo, hostInfo] = urlWithoutPrefix.split('@//');
|
|
154
|
-
// Extract user and password from userInfo, handling optional quotes around the password
|
|
155
|
-
const userPasswordRegex = /([^/]+)\/("?[^"]+"?)/;
|
|
156
|
-
const matches = userInfo.match(userPasswordRegex);
|
|
157
|
-
if (matches) {
|
|
158
|
-
parsedDsn.user = matches[1]; // Extracted user
|
|
159
|
-
parsedDsn.password = matches[2].replaceAll('"', ''); // Extracted password, removing quotes if present
|
|
160
|
-
}
|
|
161
|
-
// Extract host, port, and database from hostInfo
|
|
162
|
-
const separateHost = hostInfo.split('/');
|
|
163
|
-
const hostPort = separateHost[0].split(':');
|
|
164
|
-
parsedDsn.host = hostPort[0]; // Hostname
|
|
165
|
-
parsedDsn.port = Number.parseInt(hostPort[1], 10); // Port number
|
|
166
|
-
parsedDsn.db = separateHost[1]; // Database name
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
// Handle URL format with parameters
|
|
170
|
-
const [hostInfo, dbInfo] = urlWithoutPrefix.split('/');
|
|
171
|
-
const [host, port] = hostInfo.split(':');
|
|
172
|
-
parsedDsn.host = host; // Hostname
|
|
173
|
-
parsedDsn.port = Number.parseInt(port, 10); // Port number
|
|
174
|
-
parsedDsn.db = dbInfo; // Database name
|
|
175
|
-
}
|
|
176
|
-
// Parse query params (if any)
|
|
177
|
-
if (queryParams) {
|
|
178
|
-
const params = new URLSearchParams(queryParams);
|
|
179
|
-
parsedDsn.user = params.get('user') || parsedDsn.user;
|
|
180
|
-
parsedDsn.password = params.get('password') || parsedDsn.password;
|
|
181
|
-
parsedDsn.schema = params.get('currentschema') || parsedDsn.schema;
|
|
182
|
-
}
|
|
183
|
-
return { success: true, value: parsedDsn };
|
|
184
|
-
}
|
|
185
|
-
return {
|
|
186
|
-
success: false,
|
|
187
|
-
message: isValidDsn.message || 'Cannot parse DSN',
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
isValidJdbcOracleUrl(dsnString) {
|
|
191
|
-
const patterns = [
|
|
192
|
-
/^oracle:thin:(\w+\/)?[^\s@]+@\/\/[\w.-]+:\d+\/[\w-]+(\?currentschema=[\w-]+)?$/, // With user/password in the path
|
|
193
|
-
/^oracle:thin:@[\w.-]+:\d+\/\w+(\?user=\w+&password=[^&]+(¤tschema=\w+)?)?$/, // With user/password as query parameters
|
|
194
|
-
];
|
|
195
|
-
// Check if the DSN string matches any of the patterns
|
|
196
|
-
const isValid = patterns.some(pattern => pattern.test(dsnString));
|
|
197
|
-
if (!isValid) {
|
|
198
|
-
let message;
|
|
199
|
-
if (dsnString.startsWith('oracle:thin:') === false) {
|
|
200
|
-
message = `Missing 'oracle:thin:' prefix`;
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
const urlWithoutPrefix = dsnString.replace(/^oracle:thin:/i, '');
|
|
204
|
-
if (urlWithoutPrefix.includes('@')) {
|
|
205
|
-
const [userInfo, hostInfo] = urlWithoutPrefix.split('@//');
|
|
206
|
-
if (!userInfo.includes('/')) {
|
|
207
|
-
message = `User or password missing or improperly formatted in the provided URL`;
|
|
208
|
-
}
|
|
209
|
-
else if (!hostInfo.startsWith('//')) {
|
|
210
|
-
message = `Host section must start with '//' after '@'`;
|
|
211
|
-
}
|
|
212
|
-
else if (!hostInfo.includes(':')) {
|
|
213
|
-
message = `Host or port missing in the provided URL`;
|
|
214
|
-
}
|
|
215
|
-
else if (!hostInfo.includes('/')) {
|
|
216
|
-
message = `Database name missing in the provided URL`;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
// Handle the format without user/password before @
|
|
221
|
-
message = `Host section must start with '@' or '@//'`;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
return { status: false, message };
|
|
225
|
-
}
|
|
226
|
-
return { status: true };
|
|
227
|
-
}
|
|
228
124
|
}
|
|
229
125
|
//# sourceMappingURL=oracle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../../src/commands/import/oracle.ts"],"names":[],"mappings":"AAAA,iCAAiC;AASjC,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAChC,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAA;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAC,6BAA6B,EAAC,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../../src/commands/import/oracle.ts"],"names":[],"mappings":"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"}
|
package/lib/generate/flags.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare const ImportFlags: {
|
|
|
6
6
|
header: () => import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
7
|
headerParam: () => import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
dbHost: () => import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
jdbcUrl: () => import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
10
|
dbUser: () => import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
11
|
dbPassword: () => import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
12
|
dbDatabase: () => import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/generate/flags.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/generate/flags.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;sBAwDL;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC;;;;CAoCpC,CAAA"}
|
package/lib/generate/flags.js
CHANGED
|
@@ -33,6 +33,9 @@ export const ImportFlags = {
|
|
|
33
33
|
dbHost: () => Flags.string({
|
|
34
34
|
description: 'Database host and optional port (as HOST[:PORT])',
|
|
35
35
|
}),
|
|
36
|
+
jdbcUrl: () => Flags.string({
|
|
37
|
+
description: 'Full JDBC URL',
|
|
38
|
+
}),
|
|
36
39
|
dbUser: () => Flags.string({
|
|
37
40
|
description: 'Database user name',
|
|
38
41
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/generate/flags.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,GAAG,EAAE,CACX,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,qDAAqD;KACnE,CAAC;IACJ,MAAM,EAAE,GAAG,EAAE,CACX,KAAK,CAAC,MAAM,CAAC;QACX,IAAI,EAAE,GAAG;QACT,WAAW,EACT,oCAAoC;YACpC,IAAI;YACJ,YAAY;YACZ,4DAA4D;YAC5D,UAAU,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,EAAE;QACrE,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,IAAI;KACxB,CAAC;IACJ,WAAW,EAAE,GAAG,EAAE,CAChB,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EACT,0CAA0C;YAC1C,8BAA8B,KAAK,CAAC,IAAI,CACtC,cAAc,CACf,yBAAyB;YAC1B,6CAA6C,KAAK,CAAC,IAAI,CACrD,YAAY,CACb,uEAAuE;YACxE,IAAI;YACJ,YAAY;YACZ,4DAA4D;YAC5D,qDAAqD;YACrD,6CAA6C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;QACvE,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,IAAI;KACxB,CAAC;IAEJ,MAAM,EAAE,GAAG,EAAE,CACX,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,kDAAkD;KAChE,CAAC;IACJ,MAAM,EAAE,GAAG,EAAE,CACX,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,oBAAoB;KAClC,CAAC;IACJ,UAAU,EAAE,GAAG,EAAE,CACf,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,mBAAmB;KACjC,CAAC;IACJ,UAAU,EAAE,GAAG,EAAE,CACf,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,4BAA4B;KAC1C,CAAC;IACJ,QAAQ,EAAE,CAAC,OAA2B,EAAE,EAAE,EAAE,CAC1C,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,mDACX,IAAI,CAAC,OAAO,IAAI,QAClB,GAAG;KACJ,CAAC;IACJ,WAAW,EAAE,GAAG,EAAE,CAChB,KAAK,CAAC,OAAO,CAAC;QACZ,WAAW,EACT,mCAAmC;YACnC,gDAAgD;YAChD,IAAI,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,EAAE;KACvE,CAAC;IACJ,SAAS,EAAE,GAAG,EAAE,CACd,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EACT,qCAAqC;YACrC,6DAA6D;QAC/D,OAAO,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,kBAAkB,CAAC;KAC3D,CAAC;IACJ,qBAAqB,EAAE,GAAG,EAAE,CAC1B,KAAK,CAAC,OAAO,CAAC;QACZ,WAAW,EACT,KAAK,CAAA,+DAA+D;YACpE,KAAK,CAAA,4BAA4B;YACjC,KAAK,CAAA,kEAAkE;YACvE,KAAK,CAAA,kBAAkB;YACvB,KAAK,CAAA,kEAAkE;YACvE,KAAK,CAAA,kCAAkC;YACvC,KAAK,CAAA,IAAI;YACT,KAAK,CAAA,gEAAgE;YACrE,KAAK,CAAA,+DAA+D;YACpE,KAAK,CAAA,4BAA4B;YACjC,KAAK,CAAA,+DAA+D;YACpE,KAAK,CAAA,+BAA+B;KACvC,CAAC;CACL,CAAA"}
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/generate/flags.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,GAAG,EAAE,CACX,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,qDAAqD;KACnE,CAAC;IACJ,MAAM,EAAE,GAAG,EAAE,CACX,KAAK,CAAC,MAAM,CAAC;QACX,IAAI,EAAE,GAAG;QACT,WAAW,EACT,oCAAoC;YACpC,IAAI;YACJ,YAAY;YACZ,4DAA4D;YAC5D,UAAU,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,EAAE;QACrE,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,IAAI;KACxB,CAAC;IACJ,WAAW,EAAE,GAAG,EAAE,CAChB,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EACT,0CAA0C;YAC1C,8BAA8B,KAAK,CAAC,IAAI,CACtC,cAAc,CACf,yBAAyB;YAC1B,6CAA6C,KAAK,CAAC,IAAI,CACrD,YAAY,CACb,uEAAuE;YACxE,IAAI;YACJ,YAAY;YACZ,4DAA4D;YAC5D,qDAAqD;YACrD,6CAA6C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;QACvE,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,IAAI;KACxB,CAAC;IAEJ,MAAM,EAAE,GAAG,EAAE,CACX,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,kDAAkD;KAChE,CAAC;IACJ,OAAO,EAAE,GAAG,EAAE,CACZ,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,eAAe;KAC7B,CAAC;IACJ,MAAM,EAAE,GAAG,EAAE,CACX,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,oBAAoB;KAClC,CAAC;IACJ,UAAU,EAAE,GAAG,EAAE,CACf,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,mBAAmB;KACjC,CAAC;IACJ,UAAU,EAAE,GAAG,EAAE,CACf,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,4BAA4B;KAC1C,CAAC;IACJ,QAAQ,EAAE,CAAC,OAA2B,EAAE,EAAE,EAAE,CAC1C,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,mDACX,IAAI,CAAC,OAAO,IAAI,QAClB,GAAG;KACJ,CAAC;IACJ,WAAW,EAAE,GAAG,EAAE,CAChB,KAAK,CAAC,OAAO,CAAC;QACZ,WAAW,EACT,mCAAmC;YACnC,gDAAgD;YAChD,IAAI,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,EAAE;KACvE,CAAC;IACJ,SAAS,EAAE,GAAG,EAAE,CACd,KAAK,CAAC,MAAM,CAAC;QACX,WAAW,EACT,qCAAqC;YACrC,6DAA6D;QAC/D,OAAO,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,kBAAkB,CAAC;KAC3D,CAAC;IACJ,qBAAqB,EAAE,GAAG,EAAE,CAC1B,KAAK,CAAC,OAAO,CAAC;QACZ,WAAW,EACT,KAAK,CAAA,+DAA+D;YACpE,KAAK,CAAA,4BAA4B;YACjC,KAAK,CAAA,kEAAkE;YACvE,KAAK,CAAA,kBAAkB;YACvB,KAAK,CAAA,kEAAkE;YACvE,KAAK,CAAA,kCAAkC;YACvC,KAAK,CAAA,IAAI;YACT,KAAK,CAAA,gEAAgE;YACrE,KAAK,CAAA,+DAA+D;YACpE,KAAK,CAAA,4BAA4B;YACjC,KAAK,CAAA,+DAA+D;YACpE,KAAK,CAAA,+BAA+B;KACvC,CAAC;CACL,CAAA"}
|
|
@@ -6,6 +6,9 @@ export declare const ImportQuestions: {
|
|
|
6
6
|
prefix: () => DistinctQuestion<{
|
|
7
7
|
typePrefix?: string | undefined;
|
|
8
8
|
}>;
|
|
9
|
+
jdbcUrl: () => DistinctQuestion<{
|
|
10
|
+
jdbcUrl?: string | undefined;
|
|
11
|
+
}>;
|
|
9
12
|
dbHost: () => DistinctQuestion<{
|
|
10
13
|
host: string;
|
|
11
14
|
}>;
|
|
@@ -20,6 +23,7 @@ export declare const ImportQuestions: {
|
|
|
20
23
|
}>;
|
|
21
24
|
dbSchema: (opts?: {
|
|
22
25
|
required?: boolean;
|
|
26
|
+
dbDriver?: string;
|
|
23
27
|
}) => DistinctQuestion<{
|
|
24
28
|
schema?: string | undefined;
|
|
25
29
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/generate/questions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAA;AAM9C;;GAEG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/generate/questions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAA;AAM9C;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;cAqBK,MAAM;;;cAMN,MAAM;;;kBAMF,MAAM;;;kBAON,MAAM;;sBACxB;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAC;;;;mBA6BpB,OAAO;;;uBAOH,OAAO;;CAChD,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright IBM Corp. 2020, 2024
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
-
import { parseHost } from '../shared/url-helpers.js';
|
|
3
|
+
import { isValidJdbcUrl, parseHost } from '../shared/url-helpers.js';
|
|
4
4
|
/**
|
|
5
5
|
* A helper to share interactive questions between several import commands.
|
|
6
6
|
*/
|
|
@@ -9,6 +9,12 @@ export const ImportQuestions = {
|
|
|
9
9
|
name: 'typePrefix',
|
|
10
10
|
message: 'Prefix to add to all generated type names (leave blank for none)',
|
|
11
11
|
}),
|
|
12
|
+
jdbcUrl: () => ({
|
|
13
|
+
name: 'jdbcUrl',
|
|
14
|
+
message: 'What is your JDBC Url?',
|
|
15
|
+
validate: input => isValidJdbcUrl(input).status ||
|
|
16
|
+
`Could not parse "${input}" as a JDBC Url.`,
|
|
17
|
+
}),
|
|
12
18
|
dbHost: () => ({
|
|
13
19
|
name: 'host',
|
|
14
20
|
message: 'What is your host? (and optional port as host:port)',
|
|
@@ -31,10 +37,23 @@ export const ImportQuestions = {
|
|
|
31
37
|
}),
|
|
32
38
|
dbSchema: (opts = {}) => ({
|
|
33
39
|
name: 'schema',
|
|
34
|
-
message
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
message() {
|
|
41
|
+
const { dbDriver, required } = opts;
|
|
42
|
+
const isDb2OrOracle = dbDriver === 'db2' || dbDriver === 'oracle';
|
|
43
|
+
let message;
|
|
44
|
+
message = isDb2OrOracle
|
|
45
|
+
? `What is your schema (Optional)`
|
|
46
|
+
: `What is your database schema`;
|
|
47
|
+
// Additional info for DB2 or Oracle
|
|
48
|
+
if (isDb2OrOracle && !required) {
|
|
49
|
+
message +=
|
|
50
|
+
' If schema is not provided, it will take the default schema from JDBC URL connection.';
|
|
51
|
+
}
|
|
52
|
+
else if (!isDb2OrOracle && !required) {
|
|
53
|
+
message += ' (leave blank to use defaults)';
|
|
54
|
+
}
|
|
55
|
+
return message;
|
|
56
|
+
},
|
|
38
57
|
}),
|
|
39
58
|
dbLinkTypes: () => ({
|
|
40
59
|
name: 'linkTypes',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/generate/questions.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAIjC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/generate/questions.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAIjC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,GAAG,EAAE,CACX,CAAC;QACC,IAAI,EAAE,YAAY;QAClB,OAAO,EACL,kEAAkE;KACzB,CAAA;IAC/C,OAAO,EAAE,GAAG,EAAE,CACZ,CAAC;QACC,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,wBAAwB;QACjC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAChB,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM;YAC5B,oBAAoB,KAAK,kBAAkB;KACL,CAAA;IAC5C,MAAM,EAAE,GAAG,EAAE,CACX,CAAC;QACC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,qDAAqD;QAC9D,QAAQ,EAAE,KAAK,CAAC,EAAE,CAChB,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,oBAAoB,KAAK,kBAAkB;KACrC,CAAA;IACxC,MAAM,EAAE,GAAG,EAAE,CACX,CAAC;QACC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,4BAA4B;KAClC,CAAA;IACxC,UAAU,EAAE,GAAG,EAAE,CACf,CAAC;QACC,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,uBAAuB;QAChC,IAAI,EAAE,UAAU;KACwB,CAAA;IAC5C,UAAU,EAAE,GAAG,EAAE,CACf,CAAC;QACC,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAChB,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,iCAAiC;KAClB,CAAA;IAC5C,QAAQ,EAAE,CAAC,OAAgD,EAAE,EAAE,EAAE,CAC/D,CAAC;QACC,IAAI,EAAE,QAAQ;QACd,OAAO;YACL,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAA;YACjC,MAAM,aAAa,GAAG,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,QAAQ,CAAA;YACjE,IAAI,OAAe,CAAA;YACnB,OAAO,GAAG,aAAa;gBACrB,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,8BAA8B,CAAA;YAClC,oCAAoC;YACpC,IAAI,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,OAAO;oBACL,uFAAuF,CAAA;YAC3F,CAAC;iBAAM,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACvC,OAAO,IAAI,gCAAgC,CAAA;YAC7C,CAAC;YAED,OAAO,OAAO,CAAA;QAChB,CAAC;KACsC,CAAA;IAC3C,WAAW,EAAE,GAAG,EAAE,CAChB,CAAC;QACC,IAAI,EAAE,WAAW;QACjB,OAAO,EACL,iFAAiF;YACjF,MAAM,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,EAAE;QACxE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;KAC4B,CAAA;IAC9C,aAAa,EAAE,GAAG,EAAE,CAClB,CAAC;QACC,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;KACgC,CAAA;CACnD,CAAA"}
|
|
@@ -22,10 +22,10 @@ export type PostgresqlImportOptions = CommonSqlImportOptions & {
|
|
|
22
22
|
dbType: 'postgresql';
|
|
23
23
|
schema?: string;
|
|
24
24
|
};
|
|
25
|
-
export type Db2sqlImportOptions = CommonSqlImportOptions & {
|
|
25
|
+
export type Db2sqlImportOptions = Omit<CommonSqlImportOptions, 'host' | 'database' | 'user' | 'password'> & {
|
|
26
26
|
dbType: 'db2';
|
|
27
27
|
schema?: string;
|
|
28
|
-
|
|
28
|
+
jdbcUrl: string;
|
|
29
29
|
};
|
|
30
30
|
export type SnowflakeImportOptions = Omit<CommonSqlImportOptions, 'host'> & {
|
|
31
31
|
dbType: 'snowflake';
|
|
@@ -38,8 +38,14 @@ export type PrestoImportOptions = Omit<CommonSqlImportOptions, 'database'> & {
|
|
|
38
38
|
catalog: string;
|
|
39
39
|
schema: string;
|
|
40
40
|
};
|
|
41
|
-
export type OraclesqlImportOptions = CommonSqlImportOptions & {
|
|
41
|
+
export type OraclesqlImportOptions = Omit<CommonSqlImportOptions, 'host' | 'database' | 'user' | 'password'> & {
|
|
42
42
|
dbType: 'oracle';
|
|
43
|
+
jdbcUrl: string;
|
|
44
|
+
schema?: string;
|
|
45
|
+
};
|
|
46
|
+
export type JdbcParsedDsn = {
|
|
47
|
+
driver: string;
|
|
48
|
+
jdbcUrl: string;
|
|
43
49
|
schema?: string;
|
|
44
50
|
};
|
|
45
51
|
export type SqlImportOptions = MysqlImportOptions | PostgresqlImportOptions | SnowflakeImportOptions | PrestoImportOptions | Db2sqlImportOptions | OraclesqlImportOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql2sdl.d.ts","sourceRoot":"","sources":["../../src/generate/sql2sdl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,OAAO,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAA;AAc5D,MAAM,MAAM,MAAM,GACd,OAAO,GACP,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,KAAK,GACL,QAAQ,CAAA;AACZ,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG;IACzD,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,kBAAkB,CAAA;IAC3D,oBAAoB,CAAC,EAAE,sBAAsB,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG;IACxD,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG;IAC7D,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,GAAG;
|
|
1
|
+
{"version":3,"file":"sql2sdl.d.ts","sourceRoot":"","sources":["../../src/generate/sql2sdl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,OAAO,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAA;AAc5D,MAAM,MAAM,MAAM,GACd,OAAO,GACP,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,KAAK,GACL,QAAQ,CAAA;AACZ,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG;IACzD,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,kBAAkB,CAAA;IAC3D,oBAAoB,CAAC,EAAE,sBAAsB,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG;IACxD,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG;IAC7D,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,sBAAsB,EACtB,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAC1C,GAAG;IACF,MAAM,EAAE,KAAK,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,GAAG;IAC1E,MAAM,EAAE,WAAW,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,GAAG;IAC3E,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,sBAAsB,EACtB,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAC1C,GAAG;IACF,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,uBAAuB,GACvB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,sBAAsB,CAAA;AAE1B,eAAO,MAAM,OAAO,YACT,gBAAgB,iBACV,oBAAoB,KAClC,QAAQ,QAAQ,4BAA4B,CAAC,CA6L/C,CAAA"}
|
package/lib/generate/sql2sdl.js
CHANGED
|
@@ -55,60 +55,73 @@ export const sql2sdl = async (options, configuration) => {
|
|
|
55
55
|
{ property: 'WAREHOUSE', value: options.warehouse },
|
|
56
56
|
];
|
|
57
57
|
}
|
|
58
|
-
if (options.dbType === 'db2') {
|
|
59
|
-
driverProperties = [{ property: 'SSL', value: `${options.sslConnection}` }];
|
|
60
|
-
}
|
|
61
58
|
// To prevent issues with configuration names in config.yaml and SDL,
|
|
62
59
|
// consider the following: if you import two PostgreSQL databases under a single StepZen API,
|
|
63
60
|
// each database will require a different configuration name in the config.yaml file.
|
|
64
61
|
// This configuration name will be used in index.graphql, based on the folder name.
|
|
65
62
|
const effectiveName = findNextAvailableSubfolder(options.source, options.name || options.dbType);
|
|
66
|
-
const hostDetails = options.dbType === 'snowflake'
|
|
63
|
+
const hostDetails = options.dbType === 'snowflake' ||
|
|
64
|
+
options.dbType === 'db2' ||
|
|
65
|
+
options.dbType === 'oracle'
|
|
67
66
|
? { host: '', port: undefined }
|
|
68
67
|
: parseHost(options.host);
|
|
69
68
|
return queryIntrospectionService(getDBIntrospectionUrl(configuration), {
|
|
70
|
-
operation: '
|
|
69
|
+
operation: options.dbType === 'db2' || options.dbType === 'oracle'
|
|
70
|
+
? 'getSDLFromDBJdbcUrl'
|
|
71
|
+
: 'generateSDL',
|
|
71
72
|
variables: {
|
|
72
73
|
driver: {
|
|
73
74
|
type: 'DBDriver!',
|
|
74
75
|
value: driver,
|
|
75
76
|
},
|
|
76
|
-
|
|
77
|
-
type: 'String!',
|
|
78
|
-
value: hostDetails.host,
|
|
79
|
-
},
|
|
80
|
-
port: {
|
|
81
|
-
type: 'Int',
|
|
82
|
-
value: hostDetails.port === undefined
|
|
83
|
-
? null
|
|
84
|
-
: Number.parseInt(hostDetails.port, 10),
|
|
85
|
-
},
|
|
86
|
-
...(getFeatureFlag(ENABLE_PRESTO_IMPORT)
|
|
77
|
+
...(options.dbType === 'db2' || options.dbType === 'oracle'
|
|
87
78
|
? {
|
|
88
|
-
|
|
89
|
-
type: 'String',
|
|
90
|
-
value: options.
|
|
91
|
-
},
|
|
92
|
-
catalog: {
|
|
93
|
-
type: 'String',
|
|
94
|
-
value: options.dbType === 'presto' ? options.catalog : null,
|
|
79
|
+
jdbcURL: {
|
|
80
|
+
type: 'String!',
|
|
81
|
+
value: options.jdbcUrl,
|
|
95
82
|
},
|
|
96
83
|
}
|
|
97
84
|
: {
|
|
98
|
-
|
|
85
|
+
host: {
|
|
86
|
+
type: 'String!',
|
|
87
|
+
value: hostDetails.host,
|
|
88
|
+
},
|
|
89
|
+
port: {
|
|
90
|
+
type: 'Int',
|
|
91
|
+
value: hostDetails.port === undefined
|
|
92
|
+
? null
|
|
93
|
+
: Number.parseInt(hostDetails.port, 10),
|
|
94
|
+
},
|
|
95
|
+
...(getFeatureFlag(ENABLE_PRESTO_IMPORT)
|
|
96
|
+
? {
|
|
97
|
+
database: {
|
|
98
|
+
type: 'String',
|
|
99
|
+
value: options.dbType === 'presto' ? null : options.database,
|
|
100
|
+
},
|
|
101
|
+
catalog: {
|
|
102
|
+
type: 'String',
|
|
103
|
+
value: options.dbType === 'presto' ? options.catalog : null,
|
|
104
|
+
},
|
|
105
|
+
}
|
|
106
|
+
: {
|
|
107
|
+
database: {
|
|
108
|
+
type: 'String!',
|
|
109
|
+
value: options.database,
|
|
110
|
+
},
|
|
111
|
+
}),
|
|
112
|
+
user: {
|
|
99
113
|
type: 'String!',
|
|
100
|
-
value: options
|
|
101
|
-
|
|
114
|
+
value: options.user,
|
|
115
|
+
},
|
|
116
|
+
password: {
|
|
117
|
+
type: 'String!',
|
|
118
|
+
value: options.password,
|
|
119
|
+
},
|
|
120
|
+
driverProperties: {
|
|
121
|
+
type: '[DriverPropertyInput!]',
|
|
122
|
+
value: driverProperties,
|
|
102
123
|
},
|
|
103
124
|
}),
|
|
104
|
-
user: {
|
|
105
|
-
type: 'String!',
|
|
106
|
-
value: options.user,
|
|
107
|
-
},
|
|
108
|
-
password: {
|
|
109
|
-
type: 'String!',
|
|
110
|
-
value: options.password,
|
|
111
|
-
},
|
|
112
125
|
onlyTypes: {
|
|
113
126
|
type: 'Boolean',
|
|
114
127
|
value: !options.linkTypes,
|
|
@@ -123,10 +136,6 @@ export const sql2sdl = async (options, configuration) => {
|
|
|
123
136
|
naming,
|
|
124
137
|
},
|
|
125
138
|
},
|
|
126
|
-
driverProperties: {
|
|
127
|
-
type: '[DriverPropertyInput!]',
|
|
128
|
-
value: driverProperties,
|
|
129
|
-
},
|
|
130
139
|
schema: {
|
|
131
140
|
type: 'String',
|
|
132
141
|
// The introspection service treats the schema value '' (empty string)
|
|
@@ -134,9 +143,15 @@ export const sql2sdl = async (options, configuration) => {
|
|
|
134
143
|
// the default, it needs to get a `null` schema value.
|
|
135
144
|
// However, when the user skips over the "schema" interactive question
|
|
136
145
|
// (by pressing <Enter>) the value of schema would be ''.
|
|
137
|
-
value:
|
|
138
|
-
|
|
139
|
-
|
|
146
|
+
value: (() => {
|
|
147
|
+
if (options.dbType === 'mysql' || options.schema === '') {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
if (options.dbType === 'oracle' || options.dbType === 'db2') {
|
|
151
|
+
return options.schema === undefined ? '' : options.schema;
|
|
152
|
+
}
|
|
153
|
+
return options.schema;
|
|
154
|
+
})(),
|
|
140
155
|
},
|
|
141
156
|
configName: {
|
|
142
157
|
type: 'String!',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql2sdl.js","sourceRoot":"","sources":["../../src/generate/sql2sdl.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAMjC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAClD,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,GACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAC,yBAAyB,EAAC,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"sql2sdl.js","sourceRoot":"","sources":["../../src/generate/sql2sdl.ts"],"names":[],"mappings":"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"}
|