63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import { questdbConfig } from '@stock-bot/config';
|
|
import { QuestDBClient } from './client';
|
|
import type { QuestDBClientConfig, QuestDBConnectionOptions } from './types';
|
|
|
|
/**
|
|
* Factory function to create a QuestDB client instance
|
|
*/
|
|
export function createQuestDBClient(
|
|
config?: Partial<QuestDBClientConfig>,
|
|
options?: QuestDBConnectionOptions
|
|
): QuestDBClient {
|
|
return new QuestDBClient(config, options);
|
|
}
|
|
|
|
/**
|
|
* Create a QuestDB client with default configuration
|
|
*/
|
|
export function createDefaultQuestDBClient(): QuestDBClient {
|
|
const config: Partial<QuestDBClientConfig> = {
|
|
host: questdbConfig.QUESTDB_HOST,
|
|
httpPort: questdbConfig.QUESTDB_HTTP_PORT,
|
|
pgPort: questdbConfig.QUESTDB_PG_PORT,
|
|
influxPort: questdbConfig.QUESTDB_INFLUX_PORT,
|
|
user: questdbConfig.QUESTDB_USER,
|
|
password: questdbConfig.QUESTDB_PASSWORD,
|
|
};
|
|
|
|
return new QuestDBClient(config);
|
|
}
|
|
|
|
/**
|
|
* Singleton QuestDB client instance
|
|
*/
|
|
let defaultClient: QuestDBClient | null = null;
|
|
|
|
/**
|
|
* Get or create the default QuestDB client instance
|
|
*/
|
|
export function getQuestDBClient(): QuestDBClient {
|
|
if (!defaultClient) {
|
|
defaultClient = createDefaultQuestDBClient();
|
|
}
|
|
return defaultClient;
|
|
}
|
|
|
|
/**
|
|
* Connect to QuestDB using the default client
|
|
*/
|
|
export async function connectQuestDB(): Promise<QuestDBClient> {
|
|
const client = getQuestDBClient();
|
|
await client.connect();
|
|
return client;
|
|
}
|
|
|
|
/**
|
|
* Disconnect from QuestDB
|
|
*/
|
|
export async function disconnectQuestDB(): Promise<void> {
|
|
if (defaultClient) {
|
|
await defaultClient.disconnect();
|
|
defaultClient = null;
|
|
}
|
|
}
|