@proddata/node-cratedb
Version:
Node.js client for CrateDB
111 lines (110 loc) • 2.85 kB
TypeScript
import type { RequestOptions } from 'http';
export interface CrateDBConfig {
user: string;
password: string;
jwt: string | null;
host: string;
port: number;
defaultSchema: string | null;
connectionString: string | null;
ssl: boolean;
keepAlive: boolean;
maxConnections: number;
deserialization: DeserializationConfig;
rowMode?: 'array' | 'object';
compression: CompressionOptions;
}
type CompressionOptions = {
request: 'gzip' | 'none';
response: 'gzip' | 'none';
};
export type DeserializationConfig = {
long: 'bigint' | 'number';
timestamp: 'date' | 'number';
date: 'date' | 'number';
};
export type QueryConfig = {
rowMode?: 'array' | 'object';
httpOptions?: RequestOptions;
};
export interface CrateDBBaseResponse {
rows?: unknown[];
cols?: string[];
col_types?: number[];
duration?: number;
rowcount?: number;
durations: {
cratedb?: number;
request: number;
encoding?: number;
preparation?: number;
deserialization?: number;
total?: number;
};
sizes: {
request: number;
response: number;
requestUncompressed?: number;
};
error?: {
code: number;
message: string;
};
results?: Array<CrateDBBulkRecord>;
}
export interface CrateDBResponse extends CrateDBBaseResponse {
cols: string[];
col_types: number[];
rows: unknown[][];
rowcount: number;
duration: number;
}
export interface CrateDBBulkResponse extends CrateDBBaseResponse {
results: Array<CrateDBBulkRecord>;
bulk_errors?: number[];
duration: number;
}
export interface CrateDBBulkRecord {
rowcount: number;
error?: {
code: number;
message: string;
};
}
export interface CrateDBErrorResponse {
error: {
message: string;
code: number;
};
error_trace?: string;
}
export type CrateDBRecord = Record<string, unknown>;
export type OptimizeOptions = {
max_num_segments?: number;
only_expunge_deletes?: boolean;
flush?: boolean;
};
export type ObjectMode = 'strict' | 'dynamic' | 'ignored';
export type ObjectColumnDefinition = {
type: 'object';
mode?: ObjectMode;
properties?: Record<string, ColumnDefinition | ObjectColumnDefinition>;
};
export type BaseColumnDefinition = {
type: string;
notNull?: boolean;
defaultValue?: string | number | boolean | undefined;
primaryKey?: boolean;
generatedAlways?: string;
};
export type ColumnDefinition = BaseColumnDefinition | ObjectColumnDefinition;
/**
* Defines additional table options such as clustering, partitioning, and replicas.
*/
export type TableOptions = {
clusteredBy?: string;
partitionedBy?: string[];
numberOfShards?: number;
numberOfReplicas?: string | number;
};
export {};