cube-js / cube-js/cube

Can driver_factory return Custom Driver instances and Driver Config Objects?

Open
#8,962 2 comments 0 reactions 1 assignee Claimed by @igorlukanin View on GitHub
question
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.