Skip to content

Commit e4a8ecf

Browse files
committed
some polishment
1 parent 0ec4ad1 commit e4a8ecf

File tree

3 files changed

+26
-25
lines changed

3 files changed

+26
-25
lines changed

packages/cubejs-backend-shared/src/env.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1803,11 +1803,30 @@ const variables: Record<string, (...args: any) => any> = {
18031803
dataSource
18041804
}: {
18051805
dataSource: string,
1806-
}) => (
1807-
process.env[
1806+
}) => {
1807+
const val = process.env[
18081808
keyByDataSource('CUBEJS_DB_DUCKDB_S3_USE_CREDENTIAL_CHAIN', dataSource)
1809-
]
1810-
),
1809+
];
1810+
1811+
if (val) {
1812+
if (val.toLocaleLowerCase() === 'true') {
1813+
return true;
1814+
} else if (val.toLowerCase() === 'false') {
1815+
return false;
1816+
} else {
1817+
throw new TypeError(
1818+
`The ${
1819+
keyByDataSource(
1820+
'CUBEJS_DB_DUCKDB_S3_USE_CREDENTIAL_CHAIN',
1821+
dataSource,
1822+
)
1823+
} must be either 'true' or 'false'.`
1824+
);
1825+
}
1826+
} else {
1827+
return false;
1828+
}
1829+
},
18111830

18121831
/** ***************************************************************
18131832
* Presto/Trino Driver *

packages/cubejs-duckdb-driver/src/DuckDBDriver.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,9 @@ export class DuckDBDriver extends BaseDriver implements DriverInterface {
164164
}
165165
}
166166
}
167-
const useCredentialChain = getEnv('duckdbS3UseCredentialChain', this.config);
168-
if (useCredentialChain === 'true' || useCredentialChain === true) {
167+
168+
const useCredentialChain = this.config.duckdbS3UseCredentialChain || getEnv('duckdbS3UseCredentialChain', this.config);
169+
if (useCredentialChain) {
169170
try {
170171
await execAsync('CREATE SECRET (TYPE S3, PROVIDER \'CREDENTIAL_CHAIN\')');
171172
} catch (e) {

packages/cubejs-duckdb-driver/test/DuckDBDriver.test.ts

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -73,23 +73,4 @@ describe('DuckDBDriver', () => {
7373
{ id: '3', created: '2020-03-03T03:03:03.333Z', created_date: '2020-03-03T00:00:00.000Z', price: '300' }
7474
]);
7575
});
76-
77-
test('should execute CREATE SECRET when duckdbS3UseCredentialChain is set', async () => {
78-
process.env.duckdbS3UseCredentialChain = 'true';
79-
80-
// Create a new driver instance to pick up the environment variable
81-
const driverWithCredentialChain = new DuckDBDriver({});
82-
83-
// Mock the execAsync method to spy on it
84-
const execAsyncSpy = jest.spyOn((driverWithCredentialChain as any), 'execAsync');
85-
86-
await driverWithCredentialChain.testConnection();
87-
88-
expect(execAsyncSpy).toHaveBeenCalledWith(`CREATE SECRET (TYPE S3, PROVIDER 'CREDENTIAL_CHAIN')`);
89-
90-
// Clean up
91-
delete process.env.duckdbS3UseCredentialChain;
92-
execAsyncSpy.mockRestore();
93-
await driverWithCredentialChain.release();
94-
});
9576
});

0 commit comments

Comments
 (0)