UNPKG

@dudousxd/nestjs-filter-clickhouse

Version:

ClickHouse adapter for @dudousxd/nestjs-filter: compiles structured filter input to parameterized ClickHouse SQL.

40 lines • 1.72 kB
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