mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-07 07:55:13 +02:00
Merge pull request #49 from Kaelio/hide-primary-source-counts
feat(cli): improve database setup UX
This commit is contained in:
commit
aacddb6720
2 changed files with 43 additions and 7 deletions
|
|
@ -142,8 +142,8 @@ describe('setup databases step', () => {
|
|||
expect(prompts.select).toHaveBeenCalledWith({
|
||||
message: 'How do you want to connect to PostgreSQL?',
|
||||
options: [
|
||||
{ value: 'fields', label: 'Enter connection details (host, port, database, user)' },
|
||||
{ value: 'url', label: 'Paste a connection URL' },
|
||||
{ value: 'fields', label: 'Enter connection details (host, port, database, user)' },
|
||||
{ value: 'back', label: 'Back' },
|
||||
],
|
||||
});
|
||||
|
|
@ -154,6 +154,43 @@ describe('setup databases step', () => {
|
|||
);
|
||||
});
|
||||
|
||||
it('offers connection URL paste first for URL-capable primary sources', async () => {
|
||||
const cases: Array<{ driver: KtxSetupDatabaseDriver; label: string }> = [
|
||||
{ driver: 'postgres', label: 'PostgreSQL' },
|
||||
{ driver: 'mysql', label: 'MySQL' },
|
||||
{ driver: 'clickhouse', label: 'ClickHouse' },
|
||||
{ driver: 'sqlserver', label: 'SQL Server' },
|
||||
];
|
||||
|
||||
for (const testCase of cases) {
|
||||
const prompts = makePromptAdapter({
|
||||
selectValues: ['back'],
|
||||
});
|
||||
|
||||
const result = await runKtxSetupDatabasesStep(
|
||||
{
|
||||
projectDir: tempDir,
|
||||
inputMode: 'auto',
|
||||
databaseDrivers: [testCase.driver],
|
||||
skipDatabases: false,
|
||||
databaseSchemas: [],
|
||||
},
|
||||
makeIo().io,
|
||||
{ prompts },
|
||||
);
|
||||
|
||||
expect(result.status).toBe('back');
|
||||
expect(prompts.select).toHaveBeenCalledWith({
|
||||
message: `How do you want to connect to ${testCase.label}?`,
|
||||
options: [
|
||||
{ value: 'url', label: 'Paste a connection URL' },
|
||||
{ value: 'fields', label: 'Enter connection details (host, port, database, user)' },
|
||||
{ value: 'back', label: 'Back' },
|
||||
],
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
it('lets Back leave database setup when the driver came from flags', async () => {
|
||||
const prompts = makePromptAdapter({ selectValues: ['back'] });
|
||||
|
||||
|
|
@ -488,8 +525,8 @@ describe('setup databases step', () => {
|
|||
expect(prompts.select).toHaveBeenNthCalledWith(1, {
|
||||
message: 'How do you want to connect to PostgreSQL?',
|
||||
options: [
|
||||
{ value: 'fields', label: 'Enter connection details (host, port, database, user)' },
|
||||
{ value: 'url', label: 'Paste a connection URL' },
|
||||
{ value: 'fields', label: 'Enter connection details (host, port, database, user)' },
|
||||
{ value: 'back', label: 'Back' },
|
||||
],
|
||||
});
|
||||
|
|
@ -918,10 +955,11 @@ describe('setup databases step', () => {
|
|||
[
|
||||
'◇ Testing postgres-warehouse',
|
||||
'│ ✓ Connection test passed',
|
||||
'│ Driver: PostgreSQL · Tables: 2',
|
||||
'│ Driver: PostgreSQL',
|
||||
'│',
|
||||
].join('\n'),
|
||||
);
|
||||
expect(io.stdout()).not.toContain('Tables: 2');
|
||||
expect(io.stdout()).toContain(
|
||||
[
|
||||
'◇ Scanning postgres-warehouse',
|
||||
|
|
|
|||
|
|
@ -615,8 +615,8 @@ async function buildUrlConnectionConfig(input: {
|
|||
const choice = await input.prompts.select({
|
||||
message: `How do you want to connect to ${label}?`,
|
||||
options: [
|
||||
{ value: 'fields', label: 'Enter connection details (host, port, database, user)' },
|
||||
{ value: 'url', label: 'Paste a connection URL' },
|
||||
{ value: 'fields', label: 'Enter connection details (host, port, database, user)' },
|
||||
{ value: 'back', label: 'Back' },
|
||||
],
|
||||
});
|
||||
|
|
@ -1184,9 +1184,7 @@ async function validateAndScanConnection(input: {
|
|||
const testOutput = testIo.stdoutText();
|
||||
const outputDriver = normalizeDriver(readOutputValue(testOutput, 'Driver'));
|
||||
const driverDisplay = outputDriver ? driverLabel(outputDriver) : (configuredDriverLabel ?? 'Unknown driver');
|
||||
const tableCount = Number(readOutputValue(testOutput, 'Tables') ?? NaN);
|
||||
const testLines = ['✓ Connection test passed'];
|
||||
testLines.push(`Driver: ${driverDisplay}${Number.isFinite(tableCount) ? ` · Tables: ${tableCount}` : ''}`);
|
||||
const testLines = ['✓ Connection test passed', `Driver: ${driverDisplay}`];
|
||||
writeSetupSection(input.io, `Testing ${input.connectionId}`, testLines);
|
||||
|
||||
if (!(await maybeConfigureSchemaScope(input))) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue