@bazilio-san/af-stream
Version:
Data stream from database table
229 lines • 6.71 kB
TypeScript
/// <reference types="node" />
import EventEmitter from 'events';
import { CallbackOrPromise, PoolOptions } from 'tarn/dist/Pool';
export declare type TEventRecord = {
[fieldName: string | symbol]: any;
};
export declare type Nullable<T> = T | null;
/**
* Data from the database, along with related information, to be sent to WSO2 over TCP as JSON
*/
export interface IRecordsComposite {
sessionId: string;
streamId: string;
eventsPacket: TEventRecord[] | TEventRecord;
tcpHeaderLength?: number;
isSingleRecordAsObject?: boolean;
first?: TEventRecord;
last?: TEventRecord;
sendCount?: number;
sentBufferLength?: number;
}
/** Information for assembling TCP WSO2 messages */
export interface IEventComposite {
sessionId: string;
streamId: string;
json: string;
}
export interface IEcho extends Function {
echo: Function;
error: Function;
info: Function;
debug: Function;
silly: Function;
}
export interface ILoggerEx {
error: Function;
warn: Function;
info: Function;
debug: Function;
silly: Function;
isLevel: Function;
}
export interface TAccessPoint {
consulServiceName: string;
id: string;
title: string;
port: Nullable<number>;
host: Nullable<string>;
token: string;
socketRequestId: string;
waitForHostPortUpdated: (timeout: number) => Promise<boolean>;
}
export interface ISenderConfig {
type: 'console' | 'tcp' | 'ws' | 'callback' | 'emitter';
host?: string;
port?: number;
accessPoint?: TAccessPoint;
eventCallback?: Function;
emitSingleEvent?: boolean;
emitId?: string;
}
export interface ISender {
sendEvents: Function;
connect: Function;
eventCallback?: Function;
}
export declare type TDbRecord = {
[fieldName: string | symbol]: any;
};
export declare type TYMDms = string;
export declare type TFieldType = string;
export declare type TFieldsTypes = {
[fieldName: string]: TFieldType;
};
export declare type TFieldList = string[];
export declare type TFields = TFieldsTypes | TFieldList;
export interface IDbConfig {
dialect: 'mssql' | 'pg';
options?: any;
host?: string;
server?: string;
port: number;
database: string;
user: string;
password: string;
}
export interface IPoolOptions<T> extends Omit<PoolOptions<T>, 'create' | 'destroy'> {
create?: CallbackOrPromise<T>;
destroy?: (resource: T) => any;
}
export interface IMsSqlConfig {
driver?: string | undefined;
user?: string | undefined;
password?: string | undefined;
server: string;
port?: number | undefined;
domain?: string | undefined;
database?: string | undefined;
arrayRowMode?: boolean | undefined;
beforeConnect?: Function;
options?: {
beforeConnect?: void | undefined;
connectionString?: string | undefined;
enableArithAbort?: boolean | undefined;
instanceName?: string | undefined;
trustedConnection?: boolean | undefined;
useUTC?: boolean | undefined;
};
pool: IPoolOptions<any>;
trustServerCertificate?: boolean | undefined;
stream?: boolean | undefined;
parseJSON?: boolean | undefined;
requestTimeout?: number | undefined;
connectionTimeout?: number | undefined;
}
export interface IPostgresClientConfig {
user?: string | undefined;
database?: string | undefined;
password?: string | (() => string | Promise<string>) | undefined;
port?: number | undefined;
host?: string | undefined;
connectionString?: string | undefined;
keepAlive?: boolean | undefined;
statement_timeout?: false | number | undefined;
parseInputDatesAsUTC?: boolean | undefined;
ssl?: any;
keepAliveInitialDelayMillis?: number | undefined;
idle_in_transaction_session_timeout?: number | undefined;
application_name?: string | undefined;
connectionTimeoutMillis?: number | undefined;
options?: string | undefined;
}
export interface IPostgresConfig extends IPostgresClientConfig {
max?: number | undefined;
min?: number | undefined;
idleTimeoutMillis?: number | undefined;
log?: ((...messages: any[]) => void) | undefined;
allowExitOnIdle?: boolean | undefined;
maxUses?: number | undefined;
}
export interface IStreamConfig {
streamId: string;
fetchIntervalSec?: number;
bufferMultiplier?: number;
maxBufferSize?: number;
src: {
schema: string;
table: string;
idFields: string[];
timezoneOfTsField?: string;
tsField: string;
dbOptions: IMsSqlConfig | IPostgresConfig;
dbConfig: IDbConfig;
};
fields: TFields;
printInfoIntervalSec?: number;
}
export interface ISenderConstructorOptions {
streamConfig: IStreamConfig;
senderConfig: ISenderConfig;
serviceName: string;
logger: ILoggerEx;
echo: IEcho;
exitOnError: Function;
eventEmitter: EventEmitter;
}
export interface IDbConstructorOptions {
streamConfig: IStreamConfig;
logger: ILoggerEx;
eventEmitter: EventEmitter;
exitOnError: Function;
dbOptions: IMsSqlConfig | IPostgresConfig;
dbConfig: IDbConfig;
millis2dbFn: Function;
}
export declare type TSlot = [leftIndex: number | null, foundIndex: number | null, rightIndex: number | null];
export interface IEmPortionOfDataSql {
streamId: string;
sql: string;
startTs: number;
endTs: number;
limit: number;
dbInfo: string;
}
export interface IEmPortionOfDataCount {
streamId: string;
sql: string;
count: number;
}
export interface IEmVirtualHourChanged {
prevN: number;
currN: number;
prevHZ: number;
currHZ: number;
prevTs: number;
currTs: number;
}
export interface IEmVirtualDateChanged {
prevN: number;
currN: number;
prevTs: number;
currTs: number;
}
export interface IEmSubtractedLastTimeRecords {
streamId: string;
subtractedLastTimeRecords: TDbRecord[];
}
export interface IEmCurrentLastTimeRecords {
streamId: string;
currentLastTimeRecords: TDbRecord[];
}
export interface IEmBeforeLoadNextPortion {
streamId: string;
startTs: number;
endTs: number;
}
export interface IEmAfterLoadNextPortion {
streamId: string;
startTs: number;
endTs: number;
lastRecordTs: number;
last: TEventRecord | null;
vt: number;
}
export interface IEmSaveLastTs {
streamId: string;
lastTs: number;
}
//# sourceMappingURL=interfaces.d.ts.map