Skip to content

Commit 9a0d9a8

Browse files
committed
fix(cli): allow other connectors to be used for repositories
1 parent 07f0d6c commit 9a0d9a8

File tree

6 files changed

+50
-12
lines changed

6 files changed

+50
-12
lines changed

packages/cli/generators/datasource/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ module.exports = class DataSourceGenerator extends ArtifactGenerator {
134134
const prompts = [
135135
{
136136
name: 'customConnector',
137-
message: "Enter the connector's module name",
137+
message: "Enter the connector's package name:",
138138
validate: utils.validate,
139139
},
140140
];
@@ -309,6 +309,10 @@ module.exports = class DataSourceGenerator extends ArtifactGenerator {
309309
}
310310

311311
debug(`npmModule - ${pkgs[0]}`);
312+
} else {
313+
const connectorName = this.artifactInfo.connector;
314+
// Other connectors
315+
if (!deps[connectorName]) pkgs.push(connectorName);
312316
}
313317

314318
if (!deps['@loopback/repository']) {

packages/cli/generators/repository/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ module.exports = class RepositoryGenerator extends ArtifactGenerator {
206206
this.artifactInfo.datasourcesDir,
207207
item,
208208
);
209-
return result;
209+
return result !== false;
210210
});
211211

212212
debug(`artifactInfo.dataSourceClass ${this.artifactInfo.dataSourceClass}`);

packages/cli/lib/utils.js

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ const path = require('path');
1111
const util = require('util');
1212
const stream = require('stream');
1313
const readline = require('readline');
14-
const chalk = require('chalk');
1514
var semver = require('semver');
1615
const regenerate = require('regenerate');
1716
const _ = require('lodash');
@@ -443,7 +442,6 @@ exports.isConnectorOfType = function(
443442
) {
444443
debug(`calling isConnectorType ${connectorType}`);
445444
let jsonFileContent = '';
446-
let result = false;
447445

448446
if (!dataSourceClass) {
449447
return false;
@@ -467,13 +465,11 @@ exports.isConnectorOfType = function(
467465
jsonFileContent.connector === connector.name ||
468466
jsonFileContent.connector === `loopback-connector-${connector.name}`;
469467

470-
if (matchedConnector && connectorType.includes(connector.baseModel)) {
471-
result = true;
472-
break;
473-
}
468+
if (matchedConnector) return connectorType.includes(connector.baseModel);
474469
}
475470

476-
return result;
471+
// Maybe for other connectors that are not in the supported list
472+
return null;
477473
};
478474

479475
/**

packages/cli/test/fixtures/repository/index.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,19 @@ exports.SANDBOX_FILES = [
5555
connector: 'rest',
5656
}),
5757
},
58+
{
59+
path: DATASOURCE_APP_PATH,
60+
file: 'sqlite-3.datasource.json',
61+
content: JSON.stringify({
62+
name: 'sqlite3',
63+
connector: 'loopback-connector-sqlite3',
64+
}),
65+
},
66+
{
67+
path: DATASOURCE_APP_PATH,
68+
file: 'sqlite-3.datasource.ts',
69+
content: DUMMY_CONTENT,
70+
},
5871
{
5972
path: DATASOURCE_APP_PATH,
6073
file: 'restdb.datasource.ts',

packages/cli/test/integration/generators/datasource.integration.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ const testlab = require('@loopback/testlab');
1313
const expect = testlab.expect;
1414
const TestSandbox = testlab.TestSandbox;
1515

16-
const debug = require('../../../lib/debug')('lb4:datasource:test');
17-
const DataSourceGenerator = require('../../../generators/datasource');
1816
const generator = path.join(__dirname, '../../../generators/datasource');
1917
const tests = require('../lib/artifact-generator')(generator);
2018
const baseTests = require('../lib/base-generator')(generator);

packages/cli/test/integration/generators/repository.integration.js

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe('lb4 repository', function() {
3131

3232
// special cases regardless of the repository type
3333
describe('generate repositories on special conditions', () => {
34-
it('generates multipe crud repositories', async () => {
34+
it('generates multiple crud repositories', async () => {
3535
const multiItemPrompt = {
3636
dataSourceClass: 'DbmemDatasource',
3737
modelNameList: ['MultiWord', 'Defaultmodel'],
@@ -289,6 +289,33 @@ describe('lb4 repository', function() {
289289
);
290290
});
291291

292+
it('allows other connectors', async () => {
293+
const files = SANDBOX_FILES.filter(
294+
e =>
295+
e.path !== 'src/datasources' ||
296+
e.file.includes('sqlite-3.datasource.'),
297+
);
298+
const basicPrompt = {
299+
dataSourceClass: 'Sqlite_3Datasource',
300+
};
301+
await testUtils
302+
.executeGenerator(generator)
303+
.inDir(SANDBOX_PATH, () =>
304+
testUtils.givenLBProject(SANDBOX_PATH, {
305+
// Only use the sqlite3 datasource
306+
additionalFiles: files,
307+
}),
308+
)
309+
.withPrompts(basicPrompt)
310+
.withArguments(' --model Defaultmodel');
311+
const expectedFile = path.join(
312+
SANDBOX_PATH,
313+
REPOSITORY_APP_PATH,
314+
'defaultmodel.repository.ts',
315+
);
316+
assert.file(expectedFile);
317+
});
318+
292319
it('generates a crud repository from hyphened model file name', async () => {
293320
const basicPrompt = {
294321
dataSourceClass: 'MyDsDatasource',

0 commit comments

Comments
 (0)