removed configs from all libs and will inject them within the services themselves
This commit is contained in:
parent
fd28162811
commit
6cc5b339bc
32 changed files with 366 additions and 349 deletions
|
|
@ -1,5 +1,4 @@
|
|||
import { Pool, QueryResultRow } from 'pg';
|
||||
import { postgresConfig } from '@stock-bot/config';
|
||||
import { getLogger } from '@stock-bot/logger';
|
||||
import { PostgreSQLHealthMonitor } from './health';
|
||||
import { PostgreSQLQueryBuilder } from './query-builder';
|
||||
|
|
@ -26,8 +25,8 @@ export class PostgreSQLClient {
|
|||
private readonly transactionManager: PostgreSQLTransactionManager;
|
||||
private isConnected = false;
|
||||
|
||||
constructor(config?: Partial<PostgreSQLClientConfig>, options?: PostgreSQLConnectionOptions) {
|
||||
this.config = this.buildConfig(config);
|
||||
constructor(config: PostgreSQLClientConfig, options?: PostgreSQLConnectionOptions) {
|
||||
this.config = config;
|
||||
this.options = {
|
||||
retryAttempts: 3,
|
||||
retryDelay: 1000,
|
||||
|
|
@ -367,34 +366,6 @@ export class PostgreSQLClient {
|
|||
return this.pool;
|
||||
}
|
||||
|
||||
private buildConfig(config?: Partial<PostgreSQLClientConfig>): PostgreSQLClientConfig {
|
||||
return {
|
||||
host: config?.host || postgresConfig.POSTGRES_HOST,
|
||||
port: config?.port || postgresConfig.POSTGRES_PORT,
|
||||
database: config?.database || postgresConfig.POSTGRES_DATABASE,
|
||||
username: config?.username || postgresConfig.POSTGRES_USERNAME,
|
||||
password: config?.password || postgresConfig.POSTGRES_PASSWORD,
|
||||
poolSettings: {
|
||||
min: postgresConfig.POSTGRES_POOL_MIN,
|
||||
max: postgresConfig.POSTGRES_POOL_MAX,
|
||||
idleTimeoutMillis: postgresConfig.POSTGRES_POOL_IDLE_TIMEOUT,
|
||||
...config?.poolSettings,
|
||||
},
|
||||
ssl: {
|
||||
enabled: postgresConfig.POSTGRES_SSL,
|
||||
rejectUnauthorized: postgresConfig.POSTGRES_SSL_REJECT_UNAUTHORIZED,
|
||||
...config?.ssl,
|
||||
},
|
||||
timeouts: {
|
||||
query: postgresConfig.POSTGRES_QUERY_TIMEOUT,
|
||||
connection: postgresConfig.POSTGRES_CONNECTION_TIMEOUT,
|
||||
statement: postgresConfig.POSTGRES_STATEMENT_TIMEOUT,
|
||||
lock: postgresConfig.POSTGRES_LOCK_TIMEOUT,
|
||||
idleInTransaction: postgresConfig.POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT,
|
||||
...config?.timeouts,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
private buildPoolConfig(): any {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { postgresConfig } from '@stock-bot/config';
|
||||
import { PostgreSQLClient } from './client';
|
||||
import type { PostgreSQLClientConfig, PostgreSQLConnectionOptions } from './types';
|
||||
|
||||
|
|
@ -6,59 +5,21 @@ import type { PostgreSQLClientConfig, PostgreSQLConnectionOptions } from './type
|
|||
* Factory function to create a PostgreSQL client instance
|
||||
*/
|
||||
export function createPostgreSQLClient(
|
||||
config?: Partial<PostgreSQLClientConfig>,
|
||||
config: PostgreSQLClientConfig,
|
||||
options?: PostgreSQLConnectionOptions
|
||||
): PostgreSQLClient {
|
||||
return new PostgreSQLClient(config, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a PostgreSQL client with default configuration
|
||||
* Create and connect a PostgreSQL client
|
||||
*/
|
||||
export function createDefaultPostgreSQLClient(): PostgreSQLClient {
|
||||
const config: Partial<PostgreSQLClientConfig> = {
|
||||
host: postgresConfig.POSTGRES_HOST,
|
||||
port: postgresConfig.POSTGRES_PORT,
|
||||
database: postgresConfig.POSTGRES_DATABASE,
|
||||
username: postgresConfig.POSTGRES_USERNAME,
|
||||
password: postgresConfig.POSTGRES_PASSWORD,
|
||||
};
|
||||
|
||||
return new PostgreSQLClient(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Singleton PostgreSQL client instance
|
||||
*/
|
||||
let defaultClient: PostgreSQLClient | null = null;
|
||||
|
||||
/**
|
||||
* Get or create the default PostgreSQL client instance
|
||||
*/
|
||||
export function getPostgreSQLClient(): PostgreSQLClient {
|
||||
if (!defaultClient) {
|
||||
defaultClient = createDefaultPostgreSQLClient();
|
||||
}
|
||||
return defaultClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to PostgreSQL using the default client
|
||||
*/
|
||||
export async function connectPostgreSQL(): Promise<PostgreSQLClient> {
|
||||
const client = getPostgreSQLClient();
|
||||
if (!client.connected) {
|
||||
await client.connect();
|
||||
}
|
||||
export async function createAndConnectPostgreSQLClient(
|
||||
config: PostgreSQLClientConfig,
|
||||
options?: PostgreSQLConnectionOptions
|
||||
): Promise<PostgreSQLClient> {
|
||||
const client = createPostgreSQLClient(config, options);
|
||||
await client.connect();
|
||||
return client;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disconnect from PostgreSQL
|
||||
*/
|
||||
export async function disconnectPostgreSQL(): Promise<void> {
|
||||
if (defaultClient) {
|
||||
await defaultClient.disconnect();
|
||||
defaultClient = null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,5 @@ export type {
|
|||
// Utils
|
||||
export {
|
||||
createPostgreSQLClient,
|
||||
getPostgreSQLClient,
|
||||
connectPostgreSQL,
|
||||
disconnectPostgreSQL,
|
||||
createAndConnectPostgreSQLClient,
|
||||
} from './factory';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue