@znode/influx
Version:
Node.js Influx Client
73 lines (72 loc) • 2.08 kB
TypeScript
import doreamon from '@zodash/doreamon';
import { AxiosResponse } from 'axios';
import { IInfluxItem } from './item';
import { InfluxURIOptions } from './uri';
export interface IInfluxClient {
write(items: IInfluxItem | IInfluxItem[]): Promise<void>;
query<Item>(statement: string): Promise<Item[]>;
query<Item>(statement: string[]): Promise<Item[][]>;
}
export interface InfluxDBRawResultItem {
statement_id: number;
error?: string;
series: InfluxDBRawSerieItem[];
}
export interface InfluxDBRawSerieItem {
name: string;
columns: string[];
values: (string | number | boolean | null)[][];
}
export interface InfluxClientOptions extends InfluxURIOptions {
/**
* queue mode
* default: true
*/
queued?: boolean;
/**
* should .write to throw when error,
* default: false
*/
shouldThrowAtWrite?: boolean;
/**
* the interval it will flush in queue mode
* default: 5000 ms
*/
queuedFlushInterval?: number;
/**
* the max items it will flush (once) in queue mode
* default: 10000
*/
queuedFlushMaxItems?: number;
}
export interface IRequest {
server: string;
database: string;
data: string;
}
export interface IRequestError extends Error {
request: IRequest;
response?: AxiosResponse;
}
export interface InfluxDBEvent {
error(error: IRequestError): void;
}
export declare class InfluxClient extends doreamon.event.Event<InfluxDBEvent> implements IInfluxClient {
private readonly options;
private logger;
private queue;
private safeCheckFlushIt;
private isScheduling;
private uri;
constructor(options: InfluxClientOptions);
query<Item>(statement: string[]): Promise<Item[][]>;
query<Item>(statement: string): Promise<Item[]>;
write(items: IInfluxItem | IInfluxItem[]): Promise<void>;
private _write;
startSchedule(): void;
stopSchedule(): void;
private flush;
private get queuedFlushInterval();
private get queuedFlushMaxItemsOnce();
private scheduleFlush;
}