Skip to content

Async Configuration

Useful when your DB path or config comes from ConfigService or environment variables:

ts
import { ConfigModule, ConfigService } from '@nestjs/config';
import { DuckDbModule } from 'nestjs-duckdb';

@Module({
  imports: [
    DuckDbModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (config: ConfigService) => ({
        database: config.get('DUCKDB_PATH'),
      }),
    }),
  ],
})
export class AppModule {}

Using a class instead of a factory

If you prefer a dedicated options class, implement DuckDbOptionsFactory:

ts
import { Injectable } from '@nestjs/common';
import { DuckDbOptionsFactory, DuckDbModuleOptions } from 'nestjs-duckdb';

@Injectable()
export class DuckDbConfigService implements DuckDbOptionsFactory {
  createDuckDbOptions(): DuckDbModuleOptions {
    return { database: process.env.DUCKDB_PATH ?? ':memory:' };
  }
}
ts
DuckDbModule.forRootAsync({
  useClass: DuckDbConfigService,
});

Released under the MIT License.