@dudousxd/nestjs-filter-clickhouse
Version:
ClickHouse adapter for @dudousxd/nestjs-filter: compiles structured filter input to parameterized ClickHouse SQL.
40 lines • 1.72 kB
TypeScript
import { type DynamicModule, type InjectionToken } from '@nestjs/common';
import type { ClickHouseClientLike } from './clickhouse-query.js';
import { ClickHouseAdapter, type ClickHouseAdapterOptions } from './clickhouse.adapter.js';
/**
* Where the adapter gets its ClickHouse client: the token of a provider holding it
* (`connection`), or the instance itself (`client`).
*/
export type ClickHouseFilterModuleOptions = ClickHouseAdapterOptions & ({
connection: InjectionToken;
client?: never;
} | {
client: ClickHouseClientLike;
connection?: never;
});
/**
* The adapter as a descriptor, for `FilterModule.forRoot({ adapter })`:
*
* ```ts
* FilterModule.forRoot({ adapter: clickHouseAdapter({ connection: CLICKHOUSE }) })
* ```
*
* Next to a database adapter, provide a `ClickHouseAdapter` under a token of its own instead and
* name it per filter: `@Filterable({ entity: events, adapter: CLICKHOUSE_FILTER_ADAPTER })`.
*/
export declare const clickHouseAdapter: (options: ClickHouseFilterModuleOptions) => {
readonly useFactory: () => ClickHouseAdapter;
readonly inject: readonly [];
} | {
readonly useFactory: (instance: ClickHouseClientLike) => ClickHouseAdapter;
readonly inject: readonly [InjectionToken];
};
/** A ready-made token for a {@link ClickHouseAdapter} that is NOT the application-wide adapter. */
export declare const CLICKHOUSE_FILTER_ADAPTER: unique symbol;
export declare class ClickHouseFilterModule {
/** Registers the ClickHouse adapter as the application-wide filter adapter. */
static forRoot(options: ClickHouseFilterModuleOptions & {
imports?: DynamicModule['imports'];
}): DynamicModule;
}
//# sourceMappingURL=module.d.ts.map