Can driver_factory return Custom Driver instances and Driver Config Objects?
- Dominant language
- Rust
- Stars
- 20.8k
- Forks
- 2.1k
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 181
Description
**Problem**
From the [`driver_factory`](https://github.com/cube-js/cube/blob/master/docs/pages/reference/configuration/config.mdx#driver_factory) documentation, when using JavaScript, there are examples for returning a driver config object (`{ type: "duckdb" }`) and an instance of a Custom Driver (class that extends `BaseDriver`).
However, I'm getting an error with the option configured to return both formats:
```
driverFactory: ({ dataSource }) => {
if (dataSource === "mySource") {
return new MyCustomDriver();
} else {
return { type: "duckdb" };
}
}
```
From the [TypeScript definition](https://github.com/cube-js/cube/blob/eca7e4daa47056f137a3bc0e5735214dba8c8869/packages/cubejs-server-core/src/core/types.ts#L144) this should be OK, but this is the error that happens during schema compilation:
```
Compiling schema error: e25ceb53-6fa6-4128-bdc9-a0cc1d92728c-span-1 (289ms)
{
"version": "default_schema_version_69b10a3ae4ba76ea6144b864e4d001d1"
}
Error: CreateOptions.driverFactory function must return either BaseDriver or DriverConfig.
at OptsHandler.assertDriverFactoryResult (/cube/node_modules/@cubejs-backend/server-core/src/core/OptsHandler.ts:146:15)
at /cube/node_modules/@cubejs-backend/server-core/src/core/OptsHandler.ts:225:21
at CubejsServerCore.contextToDbType (/cube/node_modules/@cubejs-backend/server-core/src/core/OptsHandler.ts:246:17)
at CompilerApi.dbType (/cube/node_modules/@cubejs-backend/server-core/src/core/server.ts:499:28)
```
If instead I return a driver instance, no error is shown:
```
// const CubejsServerCore = require('@cubejs-backend/server-core');
driverFactory: ({ dataSource }) => {
if (dataSource === "mySource") {
return new MyCustomDriver();
} else {
return CubejsServerCore.createDriver("duckdb");
}
}
```
Contributor guide
Assessment
This issue has not been assessed yet.